public void IsSatisfiedBy_AppendsToBuilderAndAddsParameters()
        {
            var spec = new MenuItemForAllergensSpecification(Allergens);

            var builder    = new StringBuilder();
            var parameters = new Dictionary <string, object>();

            spec.IsSatisfiedBy(builder, parameters);

            builder.ToString().Should().Be("[Id] IN (SELECT MenuItemId FROM Allergens WHERE AllergenType IN @allergens)");
            parameters["allergens"].Should().BeEquivalentTo(Allergens.Select(x => x.ToString()));
        }
        public void IsSatisfiedBy_ReturnsFalse()
        {
            var spec = new MenuItemForAllergensSpecification(Allergens);

            var menuItem = new MenuItem
            {
                Allergens = new List <Allergen>
                {
                    new Allergen
                    {
                        AllergenType = AllergenType.Crustaceans,
                    },
                },
            };

            var result = spec.IsSatisfiedBy(menuItem);

            result.Should().BeFalse();
        }
        public void IsSatisfiedBy_ReturnsTrue()
        {
            var spec = new MenuItemForAllergensSpecification(Allergens);

            var menuItem = new MenuItem
            {
                Allergens = new List <Allergen>
                {
                    new Allergen
                    {
                        AllergenType = AllergenType.Soya,
                    },
                    new Allergen
                    {
                        AllergenType = AllergenType.Celery,
                    },
                },
            };

            var result = spec.IsSatisfiedBy(menuItem);

            result.Should().BeTrue();
        }