public void And_WhenShowAllIsApplied_NoItemsAreFiltered() { // Arrange var first = new ExpressionSpec <ItemForTest>(); var second = new ExpressionSpec <ItemForTest>(); var items = new[] { new ItemForTest("11"), new ItemForTest("22") }; var andSpec = first.And(second); // Act var result = items.Where(x => andSpec.IsSatisfy(x)).ToArray(); // Assert result .Should() .BeEquivalentTo(items.ToList()); }
public void And_WhenSelectorApplicableBetweenMultipleSpecifications_ShouldCorrectlyFilterItems() { // Arrange var first = new ExpressionSpec <ItemForTest>(x => x.Id.Contains("2")); var second = new ExpressionSpec <SubItemForTest>(x => x != null && x.Active); var items = new[] { new ItemForTest("11"), new ItemForTest("22"), new ItemForTest("22", new SubItemForTest(true)) }; var andSpec = first.And(second, new SubItemSelector()); // Act var result = items.Where(x => andSpec.IsSatisfy(x)).ToArray(); // Assert result .Should() .Contain(x => x.Id == "22") .And .HaveCount(1); }
public void And_WhenMultipleSpecificationsAreApplicable_ShouldCorrectlyFilterItems() { // Arrange var first = new ExpressionSpec <ItemForTest>(x => x.Id.Contains("1")); var second = new ExpressionSpec <ItemForTest>(x => x.Id.Contains("2")); var items = new[] { new ItemForTest("11"), new ItemForTest("21"), new ItemForTest("22") }; var andSpec = first.And(second); // Act var result = items.Where(x => andSpec.IsSatisfy(x)).ToArray(); // Assert result .Should() .Contain(x => x.Id == "21") .And .HaveCount(1); }