public void CalculateChangesRemovingOldGenderOnAccountStillHiddenMarksProfileAsChangedTest() { var original = Model.Create <Profile>().Set(x => x.BannedAt = null) .Set(x => x.Status = ProfileStatus.Hidden); var updated = original.Clone().Set(x => x.Gender = null); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().BeTrue(); actual.CategoryChanges.Should().BeEmpty(); }
CalculateChangesMarksProfileChangedWithNoCategoryChangesWhenStatusChangedBetweenAvailableAndUnavailableTest( ProfileStatus originalValue, ProfileStatus updatedValue) { var original = Model.Create <Profile>().Set(x => x.Status = originalValue); var updated = original.Clone().Set(x => x.Status = updatedValue); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().BeTrue(); actual.CategoryChanges.Should().BeEmpty(); }
public void CalculateChangesCorrectlyIdentifiesChangesToStatusTest( ProfileStatus originalValue, ProfileStatus updatedValue, bool expected) { var original = Model.Create <Profile>().Set(x => x.Status = originalValue); var updated = original.Clone().Set(x => x.Status = updatedValue); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().Be(expected); }
public void CalculateChangesAddingGenderOnBannedAccountMarksProfileAsChangedTest() { var original = Model.Create <Profile>().Set(x => x.BannedAt = DateTimeOffset.UtcNow) .Set(x => x.Status = ProfileStatus.Available) .Set(x => x.Gender = null); var updated = original.Clone().Set(x => x.Gender = "Female"); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().BeTrue(); actual.CategoryChanges.Should().BeEmpty(); }
public void CalculateChangesDetectsChangesToGenderTest( string originalValue, string updatedValue, bool isChanged, bool isAdded, bool isRemoved, string scenario) { _output.WriteLine("{0}: [{1}], [{2}]", scenario, originalValue ?? "null", updatedValue ?? "null"); var original = Model.Create <Profile>().Set(x => x.Gender = originalValue).Set(x => x.BannedAt = null) .Set(x => x.Status = ProfileStatus.Available); var updated = original.Clone().Set(x => x.Gender = updatedValue); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().Be(isChanged); if (isAdded == false && isRemoved == false) { actual.CategoryChanges.Should().BeEmpty(); } else if (isAdded && isRemoved) { actual.CategoryChanges.Should().HaveCount(2); actual.CategoryChanges.All(x => x.CategoryGroup == CategoryGroup.Gender).Should().BeTrue(); actual.CategoryChanges.Should().Contain( x => x.ChangeType == CategoryLinkChangeType.Remove && x.CategoryName == originalValue); actual.CategoryChanges.Should().Contain( x => x.ChangeType == CategoryLinkChangeType.Add && x.CategoryName == updatedValue); } else if (isAdded) { actual.CategoryChanges.Should().HaveCount(1); actual.CategoryChanges.All(x => x.CategoryGroup == CategoryGroup.Gender).Should().BeTrue(); actual.CategoryChanges.Should().Contain( x => x.ChangeType == CategoryLinkChangeType.Add && x.CategoryName == updatedValue); } else { actual.CategoryChanges.Should().HaveCount(1); actual.CategoryChanges.All(x => x.CategoryGroup == CategoryGroup.Gender).Should().BeTrue(); actual.CategoryChanges.Should().Contain( x => x.ChangeType == CategoryLinkChangeType.Remove && x.CategoryName == originalValue); } }
public void CalculateChangesCorrectlyIdentifiesChangesToStringPropertiesTest( Profile original, Profile updated, bool expected, string scenario) { _output.WriteLine(scenario); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.CategoryChanges.Should().BeEmpty(); actual.ProfileChanged.Should().Be(expected); }
public void CalculateChangesSetsProfileAsChangedButWithoutCategoryChangesWhenProfileIsBannedTest() { var original = Model.Create <Profile>().Set(x => x.BannedAt = DateTimeOffset.UtcNow); var updated = original.Clone(); var skill = Model.Create <Skill>(); updated.Skills.Add(skill); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().BeTrue(); actual.CategoryChanges.Should().BeEmpty(); }
public void CalculateChangesRemovingOldSkillOnBannedAccountMarksProfileAsChangedTest() { var original = Model.Create <Profile>().Set(x => x.BannedAt = DateTimeOffset.UtcNow) .Set(x => x.Status = ProfileStatus.Available); var updated = original.Clone(); var skill = Model.Create <Skill>(); original.Skills.Add(skill); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().BeTrue(); actual.CategoryChanges.Should().BeEmpty(); }
public void CalculateChangesAddingLanguageOnBannedAccountMarksProfileAsChangedTest() { var original = Model.Create <Profile>().Set(x => x.BannedAt = DateTimeOffset.UtcNow) .Set(x => x.Status = ProfileStatus.Available); var updated = original.Clone(); var language = Guid.NewGuid().ToString(); updated.Languages.Add(language); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().BeTrue(); actual.CategoryChanges.Should().BeEmpty(); }
public void CalculateChangesIgnoresLanguageDifferentByCaseOnlyTest() { var original = Model.Create <Profile>().Set(x => x.BannedAt = null) .Set(x => x.Status = ProfileStatus.Available); var updated = original.Clone(); var language = Guid.NewGuid().ToString(); original.Languages.Add(language.ToLowerInvariant()); updated.Languages.Add(language.ToUpperInvariant()); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().BeFalse(); actual.CategoryChanges.Should().BeEmpty(); }
public void CalculateChangesIgnoresSkillNameDifferentByCaseOnlyTest() { var original = Model.Create <Profile>().Set(x => x.BannedAt = null) .Set(x => x.Status = ProfileStatus.Available); var updated = original.Clone(); var oldSkill = Model.Create <Skill>().Set(x => x.Name = x.Name.ToLowerInvariant()); var newSkill = oldSkill.Clone().Set(x => x.Name = oldSkill.Name.ToUpperInvariant()); original.Skills.Add(oldSkill); updated.Skills.Add(newSkill); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().BeFalse(); actual.CategoryChanges.Should().BeEmpty(); }
public void RemoveAllCategoryLinksDeterminesGenderChangeTest(string gender, bool removeExpected) { var profile = Model.Create <Profile>().Set(x => x.Gender = gender); var sut = new ProfileChangeCalculator(); var actual = sut.RemoveAllCategoryLinks(profile); if (removeExpected) { actual.CategoryChanges.Should().Contain( x => x.CategoryGroup == CategoryGroup.Gender && x.CategoryName == gender); } else { actual.CategoryChanges.Should().NotContain( x => x.CategoryGroup == CategoryGroup.Gender && x.CategoryName == gender); } }
public void RemoveAllCategoryLinksDeterminesSkillAndLanguageChangesTest() { var profile = Model.Create <Profile>(); var sut = new ProfileChangeCalculator(); var actual = sut.RemoveAllCategoryLinks(profile); foreach (var language in profile.Languages) { actual.CategoryChanges.Should().Contain( x => x.CategoryGroup == CategoryGroup.Language && x.CategoryName == language); } foreach (var skill in profile.Skills) { actual.CategoryChanges.Should().Contain( x => x.CategoryGroup == CategoryGroup.Skill && x.CategoryName == skill.Name); } }
public void CalculateChangesSetsProfileAsChangedWithoutCategoryChangeWhenYearLastUsedChangesTest( int?originalValue, int?updatedValue, bool expected) { var original = Model.Create <Profile>().Set(x => x.BannedAt = null) .Set(x => x.Status = ProfileStatus.Available); var updated = original.Clone(); var originalSkill = Model.Create <Skill>().Set(x => x.YearLastUsed = originalValue); var updatedSkill = originalSkill.Clone().Set(x => x.YearLastUsed = updatedValue); original.Skills.Add(originalSkill); updated.Skills.Add(updatedSkill); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().Be(expected); actual.CategoryChanges.Should().BeEmpty(); }
public void CalculateChangesIgnoresNewCategoriesWhenStatusChangedToHiddenTest(ProfileStatus status) { var original = Model.Create <Profile>().Set(x => x.BannedAt = null) .Set(x => x.Status = status) .Set(x => x.Skills.Clear()) .Set(x => x.Languages.Clear()) .Set(x => x.Gender = null); var updated = original.Clone().Set(x => x.Status = ProfileStatus.Hidden); var skill = Model.Create <Skill>(); updated.Skills.Add(skill); updated.Languages.Add(Guid.NewGuid().ToString()); updated.Gender = Guid.NewGuid().ToString(); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().BeTrue(); actual.CategoryChanges.Should().HaveCount(0); }
public void CalculateChangesAddsNewLanguageTest() { var original = Model.Create <Profile>().Set(x => x.BannedAt = null) .Set(x => x.Status = ProfileStatus.Available); var updated = original.Clone(); var language = Guid.NewGuid().ToString(); updated.Languages.Add(language); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().BeTrue(); actual.CategoryChanges.Should().HaveCount(1); var change = actual.CategoryChanges.First(); change.CategoryGroup.Should().Be(CategoryGroup.Language); change.CategoryName.Should().Be(language); change.ChangeType.Should().Be(CategoryLinkChangeType.Add); }
public void CalculateChangesRemovesOldSkillTest() { var original = Model.Create <Profile>().Set(x => x.BannedAt = null) .Set(x => x.Status = ProfileStatus.Available); var updated = original.Clone(); var skill = Model.Create <Skill>(); original.Skills.Add(skill); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().BeTrue(); actual.CategoryChanges.Should().HaveCount(1); var change = actual.CategoryChanges.First(); change.CategoryGroup.Should().Be(CategoryGroup.Skill); change.CategoryName.Should().Be(skill.Name); change.ChangeType.Should().Be(CategoryLinkChangeType.Remove); }
public void CalculateChangesSetsProfileAsChangedWithCategoryChangeWhenSkillLevelChangesTest( SkillLevel originalLevel, SkillLevel updatedLevel, bool expected) { var original = Model.Create <Profile>().Set(x => x.BannedAt = null) .Set(x => x.Status = ProfileStatus.Available); var updated = original.Clone(); var originalSkill = Model.Create <Skill>().Set(x => x.Level = originalLevel); var updatedSkill = originalSkill.Clone().Set(x => x.Level = updatedLevel); original.Skills.Clear(); updated.Skills.Clear(); original.Skills.Add(originalSkill); updated.Skills.Add(updatedSkill); var sut = new ProfileChangeCalculator(); var actual = sut.CalculateChanges(original, updated); actual.ProfileChanged.Should().Be(expected); actual.CategoryChanges.Should().BeEmpty(); }