public async Task With_overrides_partial_constructor_types_for_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var person1 = new Person { FirstName = "John", LastName = "Adams" }; var country1 = new Country { CountryName = "Britian" }; var evaluator = new FeatureEvaluator(resolver, new List <ISharedFeatureData>() { person1, country1 }); var feature = new TestFeatureWithData(evaluator); var person2 = new Person { FirstName = "John Quincy", LastName = "Adams" }; var country2 = new Country { CountryName = "USA" }; await feature.IsOnAsync(person2, country2); await resolver.Received().IsOnAsync(Arg.Any <string>(), Arg.Is <IDictionary <string, object> >(d => d.Count == 3 && d.ContainsKey("FirstName") && d.ContainsKey("LastName") && d.ContainsKey("CountryName") && d["FirstName"].ToString() == "John Quincy" && d["LastName"].ToString() == "Adams" && d["CountryName"].ToString() == "USA" )); }
public async Task MatchesAsyncT_sends_defaultValue_to_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver); var givenDefaultValue = true; await evaluator.MatchesAsync("ignored", Presidents.GeorgeWashington, defaultValue : givenDefaultValue); await resolver.Received().MatchesAsync( Arg.Any <string>(), Arg.Any <IDictionary <string, object> >(), Arg.Any <string>(), Arg.Any <StringComparison>(), Arg.Is(givenDefaultValue)); givenDefaultValue = false; await evaluator.MatchesAsync("ignored", Presidents.JohnAdams, defaultValue : givenDefaultValue); await resolver.Received().MatchesAsync( Arg.Any <string>(), Arg.Any <IDictionary <string, object> >(), Arg.Any <string>(), Arg.Any <StringComparison>(), Arg.Is(givenDefaultValue)); }
public async Task With_adds_multiple_types_for_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver); var feature = new TestFeatureWithData(evaluator); var person = new Person { FirstName = "George", LastName = "Washington" }; var country = new Country { CountryName = "USA" }; await feature.IsOnAsync(person, country); await resolver.Received().IsOnAsync(Arg.Any <string>(), Arg.Is <IDictionary <string, object> >(d => d.Count == 3 && d.ContainsKey("FirstName") && d.ContainsKey("LastName") && d.ContainsKey("CountryName") && d["FirstName"].ToString() == "George" && d["LastName"].ToString() == "Washington" && d["CountryName"].ToString() == "USA" )); }
public async Task WithT_overrides_constructor_data_for_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var person1 = new Person { FirstName = "George", LastName = "Washington" }; var evaluator = new FeatureEvaluator(resolver, new List <ISharedFeatureData>() { person1 }); var feature = new TestFeatureWithData(evaluator); var person2 = new Person { FirstName = "John", LastName = "Adams" }; await feature.IsOnAsync(person2); await resolver.Received().IsOnAsync(Arg.Any <string>(), Arg.Is <IDictionary <string, object> >(d => d.Count == 2 && d.ContainsKey("FirstName") && d.ContainsKey("LastName") && d["FirstName"].ToString() == "John" && d["LastName"].ToString() == "Adams" )); }
public async Task Constructor_adds_multiple_types_and_later_types_override_earlier_types_for_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var person1 = new Person { FirstName = "George", LastName = "Washington" }; var person2 = new Person { FirstName = "John", LastName = "Adams" }; var country = new Country { CountryName = "USA" }; var evaluator = new FeatureEvaluator(resolver, new List <ISharedFeatureData>() { person1, country, person2 }); var feature = new TestFeatureWithData(evaluator); await feature.IsOnAsync(); await resolver.Received().IsOnAsync(Arg.Any <string>(), Arg.Is <IDictionary <string, object> >(d => d.Count == 3 && d.ContainsKey("FirstName") && d.ContainsKey("LastName") && d.ContainsKey("CountryName") && d["FirstName"].ToString() == "John" && d["LastName"].ToString() == "Adams" && d["CountryName"].ToString() == "USA" )); }
public async Task MatchesAsyncT_sends_value_to_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver); var givenValue = Presidents.ThomasJefferson; await evaluator.MatchesAsync("ignored", givenValue); await resolver.Received().MatchesAsync(Arg.Any <string>(), Arg.Any <IDictionary <string, object> >(), "ThomasJefferson"); }
public async Task MatchesAsyncT_sends_name_to_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver); var givenName = "Feature Name"; await evaluator.MatchesAsync(givenName, Presidents.GeorgeWashington); await resolver.Received().MatchesAsync(givenName, Arg.Any <IDictionary <string, object> >(), Arg.Any <string>()); }
public async Task IsOnAsync_sends_name_to_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver); var givenName = "Feature Name"; await evaluator.IsOnAsync(givenName); await resolver.Received().IsOnAsync(givenName, Arg.Any <IDictionary <string, object> >()); }
public async Task IsOnAsyncAsync_sends_false_defaultValue_to_resolver_by_default() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver); await evaluator.IsOnAsync("ignored"); await resolver.Received().IsOnAsync( Arg.Any <string>(), Arg.Any <IDictionary <string, object> >(), Arg.Is(false)); }
public async Task MatchesAsyncT_sends_Ordinal_comparison_to_resolver_by_default() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver); await evaluator.MatchesAsync("ignored", Presidents.GeorgeWashington); await resolver.Received().MatchesAsync( Arg.Any <string>(), Arg.Any <IDictionary <string, object> >(), Arg.Any <string>(), Arg.Is <StringComparison>(c => c == StringComparison.Ordinal)); }
public async Task MatchesAsyncT_sends_false_defaultValue_to_resolver_by_default() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver); await evaluator.MatchesAsync("ignored", Presidents.ThomasJefferson); await resolver.Received().MatchesAsync( Arg.Any <string>(), Arg.Any <IDictionary <string, object> >(), Arg.Any <string>(), Arg.Any <StringComparison>(), Arg.Is(false)); }
public async Task MatchesAsyncT_sends_comparison_to_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver); var givenComparison = StringComparison.CurrentCultureIgnoreCase; await evaluator.MatchesAsync("ignored", Presidents.JohnAdams, givenComparison); await resolver.Received().MatchesAsync( Arg.Any <string>(), Arg.Any <IDictionary <string, object> >(), Arg.Any <string>(), Arg.Is <StringComparison>(c => c == givenComparison)); }
public async Task MatchesAsyncT_returns_result_of_resolver_MatchesAsync() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver); resolver.MatchesAsync(Arg.Any <string>(), Arg.Any <IDictionary <string, object> >(), Arg.Any <string>()).Returns(false); var result = await evaluator.MatchesAsync("ignored", Presidents.GeorgeWashington); result.Should().BeFalse(); resolver.MatchesAsync(Arg.Any <string>(), Arg.Any <IDictionary <string, object> >(), Arg.Any <string>()).Returns(true); result = await evaluator.MatchesAsync("ignored", Presidents.JohnAdams); result.Should().BeTrue(); }
public async Task IsOnAsync_returns_result_of_resolver_IsOnAsync() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver); resolver.IsOnAsync(Arg.Any <string>(), Arg.Any <IDictionary <string, object> >()).Returns(false); var result = await evaluator.IsOnAsync("ignored"); result.Should().BeFalse(); resolver.IsOnAsync(Arg.Any <string>(), Arg.Any <IDictionary <string, object> >()).Returns(true); result = await evaluator.IsOnAsync("ignored"); result.Should().BeTrue(); }
public async Task MatchesAsyncT_sends_data_to_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var evaluator = new FeatureEvaluator(resolver, new List <ISharedFeatureData> { new Country { CountryName = "USA" } }); await evaluator.MatchesAsync("ignored", Presidents.JohnAdams); await resolver.Received().MatchesAsync(Arg.Any <string>(), Arg.Is <IDictionary <string, object> >(d => d.Count == 1 && d.ContainsKey("CountryName") && d["CountryName"].ToString() == "USA" ), Arg.Any <string>()); }
public async Task FeatureEvaluator_with_MachineNameFeatureData_sends_MachineName_to_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var featureData = new MachineNameFeatureData(); var evaluator = new FeatureEvaluator(resolver, new List <ISharedFeatureData>() { new MachineNameFeatureData() }); var feature = new TestMachineNameFeatureData(evaluator); await feature.IsOnAsync(); await resolver.Received().IsOnAsync(Arg.Any <string>(), Arg.Is <IDictionary <string, object> >(d => d.ContainsKey("MachineName") && d["MachineName"].ToString() == Environment.MachineName )); }
public async Task FeatureEvaluator_with_AssemblyVersionFeatureData_sends_MachineName_to_resolver() { var resolver = Substitute.For <IFeatureResolver>(); var featureData = new MachineNameFeatureData(); var evaluator = new FeatureEvaluator(resolver, new List <ISharedFeatureData>() { new AssemblyVersionFeatureData() }); var feature = new TestAssemblyVersionFeatureData(evaluator); var expectedValue = Assembly.GetEntryAssembly().GetName().Version.ToString(); await feature.IsOnAsync(); await resolver.Received().IsOnAsync(Arg.Any <string>(), Arg.Is <IDictionary <string, object> >(d => d.ContainsKey("AssemblyVersion") && d["AssemblyVersion"].ToString() == expectedValue )); }