package com.github.dreamhead.moco.bootstrap; import com.github.dreamhead.moco.bootstrap.arg.StartArgs; import com.github.dreamhead.moco.bootstrap.parser.HttpArgsParser; import com.github.dreamhead.moco.bootstrap.parser.SocketArgsParser; import com.github.dreamhead.moco.bootstrap.parser.StartArgsParser; import com.google.common.base.Optional; import org.junit.Before; import org.junit.Test; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; public class StartArgsTest { private StartArgsParser startArgsParser; @Before public void setUp() throws Exception { startArgsParser = new HttpArgsParser(); } @Test public void should_parse_start_arguments() { StartArgs args = startArgsParser.parse(new String[]{"start", "-p", "12306", "-c", "foo.json"}); assertThat(args.getPort().get(), is(12306)); assertThat(args.getConfigurationFile().get(), is("foo.json")); } @Test public void should_parse_settings() { StartArgs args = startArgsParser.parse(new String[]{"start", "-p", "12306", "-g", "settings.json"}); assertThat(args.getSettings().get(), is("settings.json")); } @Test public void should_parse_environment() { StartArgs args = startArgsParser.parse(new String[]{"start", "-p", "12306", "-g", "setting.json", "-e", "foo"}); assertThat(args.getEnv().get(), is("foo")); } @Test(expected = ParseArgException.class) public void should_set_at_least_config_or_settings() { startArgsParser.parse(new String[]{"start", "-p", "12306"}); } @Test(expected = ParseArgException.class) public void should_not_set_config_and_settings() { startArgsParser.parse(new String[]{"start", "-p", "12306", "-c", "foo.json", "-g", "settings.json"}); } @Test(expected = ParseArgException.class) public void should_not_set_environment_without_global_settings() { startArgsParser.parse(new String[]{"start", "-p", "12306", "-e", "foo"}); } @Test(expected = ParseArgException.class) public void should_not_set_environment_with_config() { startArgsParser.parse(new String[]{"start", "-p", "12306", "-c", "foo.json", "-e", "foo"}); } @Test public void should_parse_without_port() { StartArgs args = startArgsParser.parse(new String[]{"start", "-c", "foo.json"}); assertThat(args.getPort(), is(Optional.<Integer>absent())); assertThat(args.getConfigurationFile().get(), is("foo.json")); } @Test public void should_parse_socket() { StartArgs args = new SocketArgsParser().parse(new String[]{"start", "-c", "foo.json"}); assertThat(args.isSocket(), is(true)); } }