11package fi .helsinki .cs .tmc .cli ;
22
33import static org .junit .Assert .assertTrue ;
4+ import static org .mockito .Matchers .any ;
5+ import static org .mockito .Matchers .anyString ;
6+ import static org .mockito .Mockito .doReturn ;
7+ import static org .mockito .Mockito .mock ;
8+ import static org .mockito .Mockito .spy ;
9+ import static org .mockito .Mockito .times ;
10+ import static org .mockito .Mockito .verify ;
11+ import static org .mockito .Mockito .when ;
12+ import static org .powermock .api .mockito .PowerMockito .mockStatic ;
13+ import static org .powermock .api .mockito .PowerMockito .verifyStatic ;
414
15+ import fi .helsinki .cs .tmc .cli .io .Io ;
516import fi .helsinki .cs .tmc .cli .io .TestIo ;
17+ import fi .helsinki .cs .tmc .cli .updater .TmcCliUpdater ;
618
719import org .junit .Before ;
820import org .junit .Test ;
21+ import org .junit .runner .RunWith ;
22+ import org .powermock .core .classloader .annotations .PrepareForTest ;
23+ import org .powermock .modules .junit4 .PowerMockRunner ;
924
25+ import java .util .HashMap ;
26+
27+ @ RunWith (PowerMockRunner .class )
28+ @ PrepareForTest (TmcCliUpdater .class )
1029public class ApplicationTest {
1130
1231 private Application app ;
@@ -16,33 +35,71 @@ public class ApplicationTest {
1635 public void setUp () {
1736 io = new TestIo ();
1837 app = new Application (new CliContext (io ));
38+ mockStatic (TmcCliUpdater .class );
1939 }
2040
2141 @ Test
2242 public void versionWorksWithRightParameter () {
23- String [] args = {"-v" };
43+ String [] args = {"-v" , "foo" };
2444 app .run (args );
2545 assertTrue (io .out ().contains ("TMC-CLI version" ));
46+ io .assertNotContains ("Command foo doesn't exist." );
2647 }
2748
2849 @ Test
2950 public void failWhenInvalidOption () {
3051 String [] args = {"-a34t3" };
3152 app .run (args );
32- assertTrue ( io .out (). contains ( "Unrecognized option" ) );
53+ io .assertContains ( "Unrecognized option" );
3354 }
3455
3556 @ Test
3657 public void helpWorksWithRightParameter () {
3758 String [] args = {"-h" };
3859 app .run (args );
39- assertTrue (io .out ().contains ("Usage: tmc" ));
60+ io .assertContains ("Usage: tmc" );
61+ }
62+
63+ @ Test
64+ public void helpOfHelpCommandIsNotGiven () {
65+ String [] args = {"-h" , "help" };
66+ app .run (args );
67+ io .assertContains ("help" );
68+ io .assertNotContains ("Usage: tmc help" );
4069 }
4170
4271 @ Test
4372 public void runCommandWorksWithWrongParameter () {
4473 String [] args = {"foo" };
4574 app .run (args );
46- assertTrue (io .out ().contains ("Command foo doesn't exist" ));
75+ io .assertContains ("Command foo doesn't exist" );
76+ }
77+
78+ @ Test
79+ public void runAutoUpdate () {
80+ String [] args = {"help" };
81+ TmcCliUpdater mockUpdater = mock (TmcCliUpdater .class );
82+ when (TmcCliUpdater .createUpdater (any (Io .class ), anyString (), any (Boolean .class )))
83+ .thenReturn (mockUpdater );
84+ when (mockUpdater .run ()).thenReturn (true );
85+
86+ CliContext ctx = spy (new CliContext (null ));
87+ when (ctx .getProperties ()).thenReturn (new HashMap <String , String >());
88+
89+ app = new Application (ctx );
90+ app .run (args );
91+
92+ verifyStatic (times (1 ));
93+ TmcCliUpdater .createUpdater (any (Io .class ), anyString (), any (Boolean .class ));
94+ }
95+
96+ @ Test
97+ public void runWithForceUpdate () {
98+ String [] args = {"--force-update" , "foo" };
99+ app = spy (app );
100+ doReturn (true ).when (app ).runAutoUpdate ();
101+ app .run (args );
102+ io .assertNotContains ("Command foo doesn't exist." );
103+ verify (app , times (1 )).runAutoUpdate ();
47104 }
48105}
0 commit comments