Ejemplo n.º 1
0
        public void GenerateReturnsRandomEmailAddressUsingFirstNameLastNameAndDomainOfContext()
        {
            var parts = new EmailParts
            {
                FirstName = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture),
                LastName  = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture),
                Domain    = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture)
            };
            var buildChain      = new BuildHistory();
            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            buildChain.Push(parts);

            var sut = new Wrapper();

            var actual = (string)sut.RunGenerate(typeof(string), "email", executeStrategy);

            var firstName = EmailValueGenerator.SpecialCharacters.Replace(parts.FirstName, string.Empty);
            var lastName  = EmailValueGenerator.SpecialCharacters.Replace(parts.LastName, string.Empty);

            var expected = (firstName + "." + lastName + "@" + parts.Domain).ToLowerInvariant();

            actual.Should().Be(expected);
        }
Ejemplo n.º 2
0
        public void GenerateReturnsRandomPostCodeMatchingCaseInsensitiveCountry()
        {
            var address = new Address
            {
                Country = "AUSTRALIA"
            };
            var buildChain      = new BuildHistory();
            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            buildChain.Push(address);

            var sut = new Wrapper();

            var actual = sut.RunGenerate(typeof(string), "City", executeStrategy) as string;

            actual.Should().NotBeNullOrWhiteSpace();

            var valueToMatch = address.Country.ToUpperInvariant();

            var possibleMatches = TestData.Locations.Where(x => x.Country.ToUpperInvariant() == valueToMatch);

            possibleMatches.Select(x => x.PostCode).Should().Contain(actual);
        }
Ejemplo n.º 3
0
        public void LastReturnsLastValueAfterPoppingPreviousValues(int itemsToRemove)
        {
            var items = new List <object>();

            var sut = new BuildHistory();

            for (var index = 0; index < 5; index++)
            {
                var item = Model.Create <Person>() !;

                items.Add(item);

                sut.Push(item);
            }

            sut.Last.Should().BeSameAs(items.Last());

            for (var index = 0; index <= itemsToRemove; index++)
            {
                sut.Last.Should().BeSameAs(items[4 - index]);

                sut.Pop();

                sut.Last.Should().BeSameAs(items[3 - index]);
            }
        }
        public void CanAssignAgeFromDob(int daysOld, int expectedYears)
        {
            var dob = DateTime.Now.AddDays(-daysOld);

            var model = new AgeFromDob
            {
                DateOfBirth = dob
            };

            var executeStrategy = Substitute.For <IExecuteStrategy>();

            var buildChain = new BuildHistory();

            buildChain.Push(model);

            executeStrategy.BuildChain.Returns(buildChain);

            var sut = new Wrapper {
                MinAge = 15, MaxAge = 30
            };

            var actual = (int)sut.RunGenerate(typeof(int), "age", executeStrategy) !;

            actual.Should().Be(expectedYears);
        }
Ejemplo n.º 5
0
        public void IsMatchReturnsWhetherScenarioSupported(
            Type type,
            string referenceName,
            Type contextType,
            bool expected)
        {
            var buildChain = new BuildHistory();

            if (contextType != null !)
            {
                object context;

                if (contextType == typeof(string))
                {
                    context = Guid.NewGuid().ToString();
                }
                else
                {
                    context = Activator.CreateInstance(contextType) !;
                }

                buildChain.Push(context);
            }

            var sut = new Wrapper <string>(NameExpression.FirstName);

            var actual = sut.RunIsMatch(type, referenceName, buildChain);

            actual.Should().Be(expected);
        }
        public void GenerateReturnsRandomValueWhenDobInFuture()
        {
            var dob = DateTime.Now.AddDays(1);

            var model = new AgeFromDob
            {
                DateOfBirth = dob
            };

            var executeStrategy = Substitute.For <IExecuteStrategy>();

            var buildChain = new BuildHistory();

            buildChain.Push(model);

            executeStrategy.BuildChain.Returns(buildChain);

            var sut = new Wrapper {
                MinAge = 15, MaxAge = 30
            };

            var actual = (int)sut.RunGenerate(typeof(int), "age", executeStrategy) !;

            actual.Should().BeGreaterOrEqualTo(15);
            actual.Should().BeLessOrEqualTo(30);
        }
Ejemplo n.º 7
0
        public void GenerateReturnsRandomPostCode()
        {
            var address         = new Address();
            var buildChain      = new BuildHistory();
            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            buildChain.Push(address);

            var sut = new Wrapper();

            var first = (string)sut.RunGenerate(typeof(string), "City", executeStrategy);

            var second = first;

            for (var index = 0; index < 1000; index++)
            {
                second = (string)sut.RunGenerate(typeof(string), "City", executeStrategy);

                if (string.Equals(first, second, StringComparison.OrdinalIgnoreCase) == false)
                {
                    break;
                }
            }

            first.Should().NotBe(second);
        }
Ejemplo n.º 8
0
        public void BuildForTypeReturnsNullWhenNoMatchingTypeFound()
        {
            var buildChain = new BuildHistory();
            var type       = typeof(string);

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(DateTimeOffset.UtcNow);

            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            var sut = new CircularReferenceBuildAction();

            var actual = sut.Build(executeStrategy, type);

            actual.Should().BeNull();
        }
Ejemplo n.º 9
0
        public void BuildForPropertyReturnsNullWhenNoMatchingTypeFound()
        {
            var buildChain   = new BuildHistory();
            var propertyInfo = typeof(Person).GetProperty(nameof(Person.FirstName)) !;

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(DateTimeOffset.UtcNow);

            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            var sut = new CircularReferenceBuildAction();

            var actual = sut.Build(executeStrategy, propertyInfo);

            actual.Should().BeNull();
        }
Ejemplo n.º 10
0
        public void LastReturnsSingleValueInHistory()
        {
            var sut = new BuildHistory();

            var item = Model.Create <Person>() !;

            sut.Push(item);

            sut.Last.Should().BeSameAs(item);
        }
Ejemplo n.º 11
0
        public void BuildForParameterReturnsNullWhenNoMatchingTypeFound()
        {
            var buildChain    = new BuildHistory();
            var parameterInfo = typeof(Person).GetConstructors()
                                .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First();

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(DateTimeOffset.UtcNow);

            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            var sut = new CircularReferenceBuildAction();

            var actual = sut.Build(executeStrategy, parameterInfo);

            actual.Should().BeNull();
        }
Ejemplo n.º 12
0
        public void GetBuildCapabilityForTypeReturnsCapabilityWhenBuildChainContainsMatchingType()
        {
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var type = typeof(string);

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(Guid.NewGuid().ToString());
            buildChain.Push(DateTimeOffset.UtcNow);

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, type);

            actual.Should().NotBeNull();
            actual !.SupportsCreate.Should().BeTrue();
            actual.SupportsPopulate.Should().BeFalse();
            actual.AutoPopulate.Should().BeFalse();
            actual.ImplementedByType.Should().BeAssignableTo <IBuildCapability>();
        }
Ejemplo n.º 13
0
        public void GetBuildCapabilityReturnsCapabilityWithoutPopulateSupport()
        {
            var value = new Person();
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var type = typeof(string);

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(Guid.NewGuid().ToString());
            buildChain.Push(DateTimeOffset.UtcNow);

            var executeStrategy = Substitute.For <IExecuteStrategy>();

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, type) !;

            Action action = () => actual.Populate(executeStrategy, value);

            action.Should().Throw <NotSupportedException>();
        }
Ejemplo n.º 14
0
        public void GetBuildCapabilityForParameterReturnsCapabilityWhenBuildChainContainsMatchingType()
        {
            var parameterInfo = typeof(Person).GetConstructors()
                                .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First();
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();

            buildChain.Push(Guid.NewGuid());
            buildChain.Push(Guid.NewGuid().ToString());
            buildChain.Push(DateTimeOffset.UtcNow);

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, parameterInfo) !;

            actual.Should().NotBeNull();
            actual.SupportsCreate.Should().BeTrue();
            actual.SupportsPopulate.Should().BeFalse();
            actual.AutoPopulate.Should().BeFalse();
            actual.ImplementedByType.Should().BeAssignableTo <IBuildCapability>();
        }
Ejemplo n.º 15
0
        public void CountReturnsNumberOfItemsInHistory(int itemCount)
        {
            var sut = new BuildHistory();

            for (var index = 0; index < itemCount; index++)
            {
                var item = Model.Create <Person>() !;

                sut.Push(item);
            }

            sut.Count.Should().Be(itemCount);
        }
Ejemplo n.º 16
0
        public void IsMatchReturnsWhetherTypeAndNameAreSupportedTest(Type type, string referenceName, bool expected)
        {
            var address    = new Address();
            var buildChain = new BuildHistory();

            buildChain.Push(address);

            var sut = new Wrapper();

            var actual = sut.RunIsMatch(type, referenceName, buildChain);

            actual.Should().Be(expected);
        }
Ejemplo n.º 17
0
        public void GetCapabilityReturnsNullWhenNoCapabilityStoredForType()
        {
            var type  = typeof(Address);
            var value = new Person();

            var sut = new BuildHistory();

            sut.Push(value);

            var actual = sut.GetCapability(type);

            actual.Should().BeNull();
        }
Ejemplo n.º 18
0
        public void GetBuildCapabilityForPropertyReturnsNullWhenBuildChainDoesNotContainMatchingType()
        {
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var propertyInfo       = typeof(Person).GetProperty(nameof(Person.FirstName)) !;

            buildChain.Push(Guid.NewGuid());

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, propertyInfo);

            actual.Should().BeNull();
        }
Ejemplo n.º 19
0
        public void GetBuildCapabilityForTypeReturnsNullWhenBuildChainDoesNotContainMatchingType()
        {
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var type = typeof(string);

            buildChain.Push(Guid.NewGuid());

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, type);

            actual.Should().BeNull();
        }
Ejemplo n.º 20
0
        public void LastReturnsNullAfterLastItemRemoved()
        {
            var sut = new BuildHistory();

            var item = Model.Create <Person>() !;

            sut.Push(item);

            sut.Last.Should().BeSameAs(item);

            sut.Pop();

            sut.Last.Should().BeNull();
        }
Ejemplo n.º 21
0
        public void IsMatchThrowsExceptionWithNullType()
        {
            var context    = new SlimModel();
            var buildChain = new BuildHistory();

            buildChain.Push(context);

            var sut = new Wrapper <string>(NameExpression.FirstName, typeof(string));

#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
            Action action = () => sut.RunIsMatch(null !, "FirstName", buildChain);
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.

            action.Should().Throw <ArgumentNullException>();
        }
Ejemplo n.º 22
0
        public void GetBuildCapabilityForParameterReturnsNullWhenBuildChainDoesNotContainMatchingType()
        {
            var buildConfiguration = new BuildConfiguration();
            var buildChain         = new BuildHistory();
            var parameterInfo      = typeof(Person).GetConstructors()
                                     .First(x => x.GetParameters().FirstOrDefault()?.Name == "firstName").GetParameters().First();

            buildChain.Push(Guid.NewGuid());

            var sut = new CircularReferenceBuildAction();

            var actual = sut.GetBuildCapability(buildConfiguration, buildChain, parameterInfo);

            actual.Should().BeNull();
        }
Ejemplo n.º 23
0
        public void GenerateReturnsValueWhenContextLacksNameAndGenderProperties()
        {
            var model           = new SlimModel();
            var buildChain      = new BuildHistory();
            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            buildChain.Push(model);

            var sut = new Wrapper();

            var actual = (string)sut.RunGenerate(typeof(string), "email", executeStrategy);

            actual.Should().NotBeNullOrWhiteSpace();
        }
Ejemplo n.º 24
0
        public void GetCapabilityReturnsStoredCapability()
        {
            var type  = typeof(Address);
            var value = new Person();

            var capability = Substitute.For <IBuildCapability>();

            var sut = new BuildHistory();

            sut.Push(value);
            sut.AddCapability(type, capability);

            var actual = sut.GetCapability(type);

            actual.Should().Be(capability);
        }
Ejemplo n.º 25
0
        public void IsMatchReturnsTrueForMatchingExpandObject()
        {
            dynamic context    = new ExpandoObject();
            var     buildChain = new BuildHistory();

            context.FirstName = Guid.NewGuid().ToString();
            context.LastName  = string.Empty;

            buildChain.Push(context);

            var sut = new Wrapper <string>(NameExpression.FirstName, typeof(string));

            var actual = sut.RunIsMatch(typeof(string), "FirstName", buildChain);

            actual.Should().BeTrue();
        }
        public void GenerateReturnsValuesForSeveralNameFormatsTest(Type type, string referenceName)
        {
            var address         = new Address();
            var buildChain      = new BuildHistory();
            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            buildChain.Push(address);

            var sut = new Wrapper();

            var actual = (string)sut.RunGenerate(type, referenceName, executeStrategy);

            actual.Should().NotBeNullOrEmpty();
        }
Ejemplo n.º 27
0
        public void GeneratorReturnsName()
        {
            var person          = new PersonWithoutGender();
            var buildChain      = new BuildHistory();
            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            buildChain.Push(person);

            var sut = new Wrapper();

            var actual = (string)sut.RunGenerate(typeof(string), "LastName", executeStrategy);

            TestData.LastNames.Any(x => x == actual).Should().BeTrue();
        }
Ejemplo n.º 28
0
        public void GenerateReturnsStringValue()
        {
            var address         = new Address();
            var buildChain      = new BuildHistory();
            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            buildChain.Push(address);

            var sut = new Wrapper();

            var actual = sut.RunGenerate(typeof(string), "City", executeStrategy);

            actual.Should().BeOfType <string>();
            actual.As <string>().Should().NotBeNullOrWhiteSpace();
        }
Ejemplo n.º 29
0
        public void GenerateReturnsDomainFromDerivedClass()
        {
            var property        = typeof(Person).GetProperty(nameof(Person.PersonalEmail)) !;
            var person          = new Person();
            var buildChain      = new BuildHistory();
            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            buildChain.Push(person);

            var sut = new MailinatorEmailValueGenerator();

            var actual = (string)sut.Generate(executeStrategy, property) !;

            actual.Should().EndWith("mailinator.com");
        }
Ejemplo n.º 30
0
        public void GenerateReturnsDomainFromTestData()
        {
            var person          = new Person();
            var buildChain      = new BuildHistory();
            var executeStrategy = Substitute.For <IExecuteStrategy>();

            executeStrategy.BuildChain.Returns(buildChain);

            buildChain.Push(person);

            var sut = new Wrapper();

            var actual = (string)sut.RunGenerate(typeof(string), "email", executeStrategy);

            var domain = actual.Substring(actual.IndexOf("@", StringComparison.Ordinal) + 1);

            TestData.Domains.Any(x => x.ToLowerInvariant() == domain).Should().BeTrue();
        }