package bvira.web; import bvira.framework.Command; import bvira.framework.Presenter; import bvira.framework.RequestContext; import bvira.framework.RequestUri; import bvira.framework.ResponseContext; import bvira.util.NotFoundException; import org.junit.Test; import static org.junit.Assert.assertSame; public class WebRouteMapUnitTests { class APresenter implements Presenter { public void present(RequestContext requestContext, ResponseContext responseContext) { } } class ACommand implements Command { public void execute(RequestContext requestContext, ResponseContext responseContext) { } } @Test public void testCanCreateRouteMap() { new WebRouteMap(); } @Test public void testCanRegisterRoute() { WebRouteMap map = new WebRouteMap(); map.registerPresenter(new WebRoute("/"), null); } @Test public void testRouteMapMatchesSuppliedRoute() { WebRouteMap map = new WebRouteMap(); map.registerPresenter(new WebRoute("/"), APresenter.class); RequestUri requestUri = new RequestUri("/", ""); assertSame(APresenter.class, map.findPresenter(requestUri)); } @Test public void routeMapHandlesCommandAndPresenterMatchingSameRoute() { WebRouteMap map = new WebRouteMap(); map.registerRoute(new WebRoute("route"), APresenter.class, ACommand.class); assertSame(ACommand.class, map.findCommand(new RequestUri("route", ""))); assertSame(APresenter.class, map.findPresenter(new RequestUri("route", ""))); } @Test public void routeMapHandlesCommandMatching() { WebRouteMap map = new WebRouteMap(); class ACommand implements Command { public void execute(RequestContext requestContext, ResponseContext responseContext) { } } map.registerRoute(new WebRoute("route"), ACommand.class); assertSame(ACommand.class, map.findCommand(new RequestUri("route", ""))); } @Test(expected= NotFoundException.class) public void routeMapThrowsExceptionIfNoRouteFound() { WebRouteMap map = new WebRouteMap(); map.findPresenter(new RequestUri("route", "")); } }