diff --git a/src/main/java/com/amihaiemil/charles/github/Confused.java b/src/main/java/com/amihaiemil/charles/github/Confused.java index 2bfbf5a..e95e9f8 100644 --- a/src/main/java/com/amihaiemil/charles/github/Confused.java +++ b/src/main/java/com/amihaiemil/charles/github/Confused.java @@ -56,7 +56,7 @@ public Steps handle(Command com) throws IOException { com.authorLogin() ) ), new Step.FinalStep() - ), com, this.logsLoc//TODO #246:30min LogsLocation should be passed down as method param of Knowledge.handle() + ), com, this.logsLoc ); } diff --git a/src/test/java/com/amihaiemil/charles/github/ConfusedTestCase.java b/src/test/java/com/amihaiemil/charles/github/ConfusedTestCase.java new file mode 100644 index 0000000..14ff301 --- /dev/null +++ b/src/test/java/com/amihaiemil/charles/github/ConfusedTestCase.java @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2016-2017, Mihai Emil Andronache + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * 1)Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2)Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3)Neither the name of charles-rest nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +package com.amihaiemil.charles.github; + +import org.hamcrest.MatcherAssert; +import org.hamcrest.Matchers; +import org.junit.Test; +import org.mockito.Mockito; + +/** + * Unit tests for {@link Confused} + * @author Mihai Andronache (amihaiemil@gmail.com) + * @version $Id$ + * @since 1.0.2 + */ +public class ConfusedTestCase { + + /** + * Confused can handle an 'unknown' command. + * @throws Exception If something goes wrong. + */ + @Test + public void handlesUnknownCommand() throws Exception { + final Command com = Mockito.mock(Command.class); + Mockito.when(com.type()).thenReturn("unknown"); + Mockito.when(com.authorLogin()).thenReturn("amihaiemil"); + Mockito.when(com.language()).thenReturn(new English()); + + final Knowledge confused = new Confused(Mockito.mock(LogsLocation.class)); + + Steps steps = confused.handle(com); + MatcherAssert.assertThat(steps, Matchers.notNullValue()); + MatcherAssert.assertThat( + steps instanceof StepsTree, Matchers.is(true) + ); + + } +} diff --git a/src/test/java/com/amihaiemil/charles/github/DeleteIndexKnTestCase.java b/src/test/java/com/amihaiemil/charles/github/DeleteIndexKnTestCase.java new file mode 100644 index 0000000..b25d5a4 --- /dev/null +++ b/src/test/java/com/amihaiemil/charles/github/DeleteIndexKnTestCase.java @@ -0,0 +1,100 @@ +/** + * Copyright (c) 2016-2017, Mihai Emil Andronache + * All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * 1)Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2)Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3)Neither the name of charles-rest nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +package com.amihaiemil.charles.github; + +import java.io.IOException; +import org.hamcrest.MatcherAssert; +import org.hamcrest.Matchers; +import org.junit.Test; +import org.mockito.Mockito; + +/** + * Unit tests for {@link DeleteIndexKn} + * @author Mihai Andronache (amihaiemil@gmail.com) + * @version $Id$ + * @since 1.0.2 + */ +public final class DeleteIndexKnTestCase { + + /** + * DeleteIndexKn can handle an 'deleteindex' command. + * @throws Exception If something goes wrong. + */ + @Test + public void handlesDeleteIndexCommand() throws Exception { + final Command com = Mockito.mock(Command.class); + Mockito.when(com.type()).thenReturn("deleteindex"); + Mockito.when(com.authorLogin()).thenReturn("amihaiemil"); + Mockito.when(com.language()).thenReturn(new English()); + final CachedRepo repo = Mockito.mock(CachedRepo.class); + Mockito.when(repo.name()).thenReturn("testRepo"); + Mockito.when(com.repo()).thenReturn(repo); + + final LogsLocation logs = Mockito.mock(LogsLocation.class); + Mockito.when(logs.address()).thenReturn("/path/to/logs"); + + final Knowledge deleteindex = new DeleteIndexKn( + logs, + new Knowledge() { + @Override + public Steps handle(final Command com) throws IOException { + throw new IllegalStateException( + "'deleteindex' command was misunderstood!" + ); + } + } + ); + + Steps steps = deleteindex.handle(com); + MatcherAssert.assertThat(steps, Matchers.notNullValue()); + MatcherAssert.assertThat(steps instanceof StepsTree, Matchers.is(true)); + } + + /** + * DeleteIndexKn can handle a command which is not 'deleteindex'. + * @throws Exception If something goes wrong. + */ + @Test + public void handlesNotDeleteIndexCommand() throws Exception { + final Command com = Mockito.mock(Command.class); + Mockito.when(com.type()).thenReturn("indexsite"); + + final Knowledge deleteindex = new DeleteIndexKn( + Mockito.mock(LogsLocation.class), + new Knowledge() { + @Override + public Steps handle(final Command com) throws IOException { + MatcherAssert.assertThat( + com.type(), + Matchers.equalTo("indexsite") + ); + return null; + } + } + ); + deleteindex.handle(com); + } +} diff --git a/src/test/java/com/amihaiemil/charles/github/IndexSiteKnTestCase.java b/src/test/java/com/amihaiemil/charles/github/IndexSiteKnTestCase.java index 8f17eab..358bd86 100644 --- a/src/test/java/com/amihaiemil/charles/github/IndexSiteKnTestCase.java +++ b/src/test/java/com/amihaiemil/charles/github/IndexSiteKnTestCase.java @@ -68,6 +68,7 @@ public Steps handle(final Command com) throws IOException { Steps steps = indexsite.handle(com); MatcherAssert.assertThat(steps, Matchers.notNullValue()); + MatcherAssert.assertThat(steps instanceof StepsTree, Matchers.is(true)); } /**