@@ -18,47 +18,75 @@ import L10nServiceProvider from '@scope/l10n-service-provider'
1818const PROCESS_CWD_TARGET_PATH = path . resolve ( __dirname )
1919
2020let orgCwd // for process.cwd mock
21+ let orgExit // for process.exit mock
2122let spyLog
2223let spyError
2324beforeEach ( ( ) => {
2425 spyLog = jest . spyOn ( global . console , 'log' )
2526 spyError = jest . spyOn ( global . console , 'error' )
2627 orgCwd = process . cwd
2728 process . cwd = jest . fn ( ( ) => PROCESS_CWD_TARGET_PATH ) // mock: process.cwd
29+ process . exit = jest . fn ( ( code => { return 'exit!' as never } ) ) // mock: process.exit
2830} )
2931
3032afterEach ( ( ) => {
3133 spyError . mockRestore ( )
3234 spyLog . mockRestore ( )
3335 jest . clearAllMocks ( )
36+ process . exit = orgExit
3437 process . cwd = orgCwd
3538} )
3639
3740// -----------
3841// test cases
3942
4043test ( 'require options' , async ( ) => {
44+ // run
45+ const status = await import ( '../../src/commands/status' )
46+ const cmd = yargs . command ( status )
47+ await new Promise ( ( resolve , reject ) => {
48+ cmd . parse ( `status` , ( err , argv , output ) => {
49+ err ? reject ( err ) : resolve ( output )
50+ } )
51+ } )
52+
53+ // verify
54+ expect ( spyError ) . toBeCalled ( )
55+ expect ( process . exit ) . toHaveBeenCalledWith ( 1 )
56+ } )
57+
58+ test ( 'getTranslationStatus: done' , async ( ) => {
59+ // setup mocking ...
60+ const mockStatusValue = [ {
61+ locale : 'en' ,
62+ percentage : 100
63+ } , {
64+ locale : 'ja' ,
65+ percentage : 100
66+ } ]
67+ mockStatus . mockImplementation ( ( { locales } ) => Promise . resolve ( mockStatusValue ) )
68+
69+ // run
4170 const status = await import ( '../../src/commands/status' )
4271 const cmd = yargs . command ( status )
43- try {
44- await new Promise ( ( resolve , reject ) => {
45- cmd . parse ( `status` , ( err , argv , output ) => {
46- err ? reject ( err ) : resolve ( output )
47- } )
72+ await new Promise ( ( resolve , reject ) => {
73+ cmd . parse ( `status --provider=@scope/l10n-service-provider` , ( err , argv , output ) => {
74+ err ? reject ( err ) : resolve ( output )
4875 } )
49- } catch ( e ) {
50- expect ( e ) . toMatchObject ( { name : 'YError' } )
51- }
76+ } )
77+
78+ // verify
79+ expect ( process . exit ) . not . toBeCalled ( )
5280} )
5381
54- test ( 'getTranslationStatus: success ' , async ( ) => {
55- // setup mocks
82+ test ( 'getTranslationStatus: wip ' , async ( ) => {
83+ // setup mocking ...
5684 const mockStatusValue = [ {
5785 locale : 'en' ,
58- percentage : 24.2
86+ percentage : 72.4
5987 } , {
6088 locale : 'ja' ,
61- percentage : 100.0
89+ percentage : 100
6290 } ]
6391 mockStatus . mockImplementation ( ( { locales } ) => Promise . resolve ( mockStatusValue ) )
6492
@@ -70,4 +98,8 @@ test('getTranslationStatus: success', async () => {
7098 err ? reject ( err ) : resolve ( output )
7199 } )
72100 } )
101+
102+ // verify
103+ // NOTE: cannot detect process.exit calling ...
104+ // expect(process.exit).toHaveBeenCalledWith(1)
73105} )
0 commit comments