public void ReturnsRoutesAndLogsWithArgumentAndBasepathInAttribute() { var type = typeof(TypeWithBasePath); var logger = new InMemoryLogger(); var basepath = "/override"; var scanner = new RouteScanner { Logger = logger }; logger.Logs.ShouldBeEmpty(); var routes = scanner.ScanType(type, basepath); routes.ShouldNotBeNull(); routes.Count.ShouldBe(1); var route = routes[0]; route.HttpMethod.ShouldBe(HttpMethod.GET); route.PathInfo.ShouldBe($"{basepath}/with/stuff"); logger.Logs.Count.ShouldBe(2); logger.Logs[0].Message.ShouldBe($"Generating routes from type {type.Name}"); logger.Logs[1].Message.ShouldBe($"Generated route {route.HttpMethod} {route.PathInfo} > {route.Name}"); }
public void ReturnsEmptyAndDoesNotLogNonClassType() { var logger = new InMemoryLogger(); var scanner = new RouteScanner { Logger = logger }; logger.Logs.ShouldBeEmpty(); var routes = scanner.ScanType(typeof(IScannable)); routes.ShouldNotBeNull(); routes.ShouldBeEmpty(); logger.Logs.ShouldBeEmpty(); }
public void ReturnsRoutesAndLogsWithoutAttribute() { var type = typeof(MethodsToScan); var logger = new InMemoryLogger(); var scanner = new RouteScanner { Logger = logger }; logger.Logs.ShouldBeEmpty(); var routes = scanner.ScanType(type); routes.ShouldNotBeNull(); routes.Count.ShouldBe(3); var route0 = routes[0]; route0.HttpMethod.ShouldBe(HttpMethod.GET); route0.PathInfo.ShouldBe("/stuff"); var route1 = routes[1]; route1.HttpMethod.ShouldBe(HttpMethod.DELETE); route1.PathInfo.ShouldBe("/more/stuff"); var route2 = routes[2]; route2.HttpMethod.ShouldBe(HttpMethod.POST); route2.PathInfo.ShouldBe("/stuff/[id]"); logger.Logs.Count.ShouldBe(4); logger.Logs[0].Message.ShouldBe($"Generating routes from type {type.Name}"); logger.Logs[1].Message.ShouldBe($"Generated route {route0.HttpMethod} {route0.PathInfo} > {route0.Name}"); logger.Logs[2].Message.ShouldBe($"Generated route {route1.HttpMethod} {route1.PathInfo} > {route1.Name}"); logger.Logs[3].Message.ShouldBe($"Generated route {route2.HttpMethod} {route2.PathInfo} > {route2.Name}"); }