public void MultipleDifferentSpecificationsIncorrectCandidate_ReturnExpectedResultObject() { var candidate = new Event { Id = 1, Code = "Defqon.1", Name = "Purple Tail", IsArchival = false }; var sut = new ItemBigIdSpecification() .Or(new ActiveItemsSpecification()) .And(new CodeStartsWithSpecification("Defqon")) .And(new NameContainsSpecification("Purple Tail").Not()); var overall = sut.IsSatisfiedBy(candidate, out var result); Assert.False(overall); Assert.Equal(4, result.TotalSpecificationsCount); Assert.Equal(1, result.FailedSpecificationsCount); Assert.Equal(1, result.FailedSpecifications.Count); Assert.Equal(typeof(NameContainsSpecification), result.FailedSpecifications[0].SpecificationType); Assert.Equal(1, result.FailedSpecifications[0].Parameters.Count); Assert.Equal("Purple Tail", result.FailedSpecifications[0].Parameters["Filter"]); Assert.Equal(candidate, result.FailedSpecifications[0].Candidate); Assert.Equal(1, result.FailedSpecifications[0].Errors.Count); Assert.Equal("Item [Purple Tail] contains: [Purple Tail]", result.FailedSpecifications[0].Errors[0]); Assert.Equal(1, result.Errors.Count); Assert.Equal("Item [Purple Tail] contains: [Purple Tail]", result.Errors.First()); Assert.False(result.OverallResult); Assert.Equal("ItemBigIdSpecification+Failed Or " + "ActiveItemsSpecification And " + "CodeStartsWithSpecification And " + "NotNameContainsSpecification+Failed", result.Trace); }
public void MultipleDifferentSpecificationsCorrectCandidate_ReturnExpectedResultObject() { var candidate = new Event { Id = 5, Code = "Defqon.1 Australia", Name = "All aboard, this is easy for real", IsArchival = false }; var sut = new ItemBigIdSpecification() .Or(new ActiveItemsSpecification()) .And(new CodeStartsWithSpecification("Defqon")) .And(new NameContainsSpecification("Purple Tail").Not()); var overall = sut.IsSatisfiedBy(candidate, out var result); Assert.True(overall); Assert.Equal(4, result.TotalSpecificationsCount); Assert.Equal(0, result.FailedSpecificationsCount); Assert.Equal(0, result.FailedSpecifications.Count); Assert.Equal(0, result.Errors.Count); Assert.True(result.OverallResult); Assert.Equal("ItemBigIdSpecification+Failed Or " + "ActiveItemsSpecification And " + "CodeStartsWithSpecification And " + "NotNameContainsSpecification", result.Trace); }