public void ReflectNouns_HappyPath(Dictionary <string, Noun> expectedResponse, Assembly inputAssembly) { var routeAttributeReflector = new RouteAttributeReflector(SerilogFixture.UsefullLogger <RouteAttributeReflector>()); var sut = new RouteMetadataBuilder(SerilogFixture.UsefullLogger <RouteMetadataBuilder>(), routeAttributeReflector); var actualResponse = sut.GetMetadata(inputAssembly); actualResponse.Keys.Should().Contain(expectedResponse.Keys); foreach (var expectedKvp in expectedResponse) { var actualNoun = actualResponse[expectedKvp.Key]; actualNoun.Verbs.Should().NotBeNull(); actualNoun.Verbs.Keys.Should().Contain(expectedKvp.Value.Verbs.Keys); foreach (var expectedVerbKvp in expectedKvp.Value.Verbs) { var actualVerb = actualNoun.Verbs[expectedVerbKvp.Key]; actualVerb.Options.Should().NotBeNull(); actualVerb.Options.Keys.Should().Contain(expectedVerbKvp.Value.Options.Keys); foreach (var expectedOptionKvp in expectedVerbKvp.Value.Options) { var actualOption = actualVerb.Options[expectedOptionKvp.Key]; expectedOptionKvp.Value.Should().BeEquivalentTo(actualOption, options => options.Excluding(option => option.PropertyInfo)); } } } }
private static Dictionary <string, Noun> LoadRoutingMetadata() { var inputAssembly = typeof(BaseRequest).Assembly; var routeAttributeReflector = new RouteAttributeReflector(SerilogFixture.UsefullLogger <RouteAttributeReflector>()); var sut = new RouteMetadataBuilder(SerilogFixture.UsefullLogger <RouteMetadataBuilder>(), routeAttributeReflector); var actualResponse = sut.GetMetadata(inputAssembly); return(actualResponse); }