예제 #1
0
        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"
                                                                                                           ));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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"
                                                                                                           ));
        }
예제 #4
0
        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"
                                                                                                           ));
        }
예제 #5
0
        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"
                                                                                                           ));
        }
예제 #6
0
        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");
        }
예제 #7
0
        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>());
        }
예제 #8
0
        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> >());
        }
예제 #9
0
        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));
        }
예제 #10
0
        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));
        }
예제 #11
0
        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));
        }
예제 #12
0
        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));
        }
예제 #13
0
        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();
        }
예제 #14
0
        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();
        }
예제 #15
0
        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>());
        }
예제 #16
0
        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
                                                                                                           ));
        }
예제 #17
0
        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
                                                                                                           ));
        }