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); }
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); }
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); }
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); }
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); }
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(); }
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(); }
public void LastReturnsSingleValueInHistory() { var sut = new BuildHistory(); var item = Model.Create <Person>() !; sut.Push(item); sut.Last.Should().BeSameAs(item); }
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(); }
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>(); }
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>(); }
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>(); }
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); }
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); }
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(); }
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(); }
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(); }
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(); }
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>(); }
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(); }
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(); }
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); }
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(); }
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(); }
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(); }
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"); }
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(); }