예제 #1
0
 def test_create_should_throw_whenInputInvalid(self):
     test_cases = [{
         'recipe': '',
         'sub_recipe': '',
         'sub_recipe_price': 50,
         'exception': InvalidRecipeHasSubrecipeArgumentException
     }, {
         'recipe': {},
         'sub_recipe': self.recipe1,
         'sub_recipe_price': 50,
         'exception': InvalidRecipeHasSubrecipeArgumentException
     }, {
         'recipe': self.recipe1,
         'sub_recipe': self.recipe1,
         'sub_recipe_price': 50,
         'exception': InvalidRecipeHasSubrecipeArgumentException
     }, {
         'recipe': self.recipe1,
         'sub_recipe': self.recipe2,
         'sub_recipe_price': 'invalid',
         'exception': InvalidFloatNumberException
     }, {
         'recipe': self.recipe1,
         'sub_recipe': self.recipe2,
         'sub_recipe_price': -10,
         'exception': InvalidFloatNumberException
     }]
     for test_case in test_cases:
         self.assertRaises(test_case['exception'], self.sut.create,
                           test_case['recipe'], test_case['sub_recipe'],
                           test_case['sub_recipe_price'],
                           SelectedAllergens([]), self.order, '')
예제 #2
0
 def test_create_should_returnExpected(self):
     actual = self.sut.create(self.recipe1, self.recipe2, 50,
                              SelectedAllergens(['Fish']), self.order, '')
     self.assertTrue(isinstance(actual, RecipeHasSubrecipe))
     self.assertEqual(actual.r_id, 1)
     self.assertEqual(actual.sr_id, 2)
     self.assertEqual(actual.sr_price, 50)
     self.assertEqual(actual.sr_allergens, 'Fish')
    def test_whenISaveAllergensInRecipe_theyCanBeFoundLater(self):
        expected = SelectedAllergens.new(["Celery"])
        recipe = Recipe.new(chef=self.chef, name="Recipe 1", draft=False)
        recipe.set_allergens(expected)
        self.sut.save(recipe)

        recipe = self.sut.findById(recipe.toDTO()['id'])
        actual = recipe.get_allergens()

        self.assertEquals(actual.toAllergenString(), expected.toAllergenString())
예제 #4
0
    def add_allergens_to_recipe(self, recipe_id, allergens):
        recipe = self.repository.findById(recipe_id)
        previous_allergens = recipe.model.allergens.split(',')
        allergen_instance = SelectedAllergens.new(previous_allergens)

        for allergen in allergens:
            allergen_instance.add(Allergen(allergen.strip()))

        recipe.set_allergens(allergen_instance)
        self.repository.save(recipe)
        return recipe.to_instance()
    def remove_allergens(self, recipe_id, allergens):
        recipe_has_ingredient = self.repository.find_by_recipe_id(recipe_id)

        for r_i in recipe_has_ingredient:

            previous_allergens = r_i.allergens.split(',')
            allergen_instance = SelectedAllergens.new(previous_allergens)

            for allergen in allergens:
                allergen_instance.remove(Allergen(allergen.strip()))

            r_i.set_allergens(allergen_instance)
            self.repository.save(r_i)
예제 #6
0
 def get_allergens(self):
     return SelectedAllergens.new(self.model.allergens.split(", "))
예제 #7
0
 def create(self, recipe, sub_recipe, sub_recipe_price, allergen_list,
            order, amount):
     allergens = SelectedAllergens(allergen_list)
     return self.repository.save(
         RecipeHasSubrecipe.create(recipe, sub_recipe, sub_recipe_price,
                                   allergens, order, amount))
예제 #8
0
 def test_create_should_notThrow_whenInputValid(self):
     self.sut.create(self.recipe1, self.recipe2, 50, SelectedAllergens([]),
                     self.order, '')
     self.assert_(True)
 def test_delete_shouldDeleteByRecipeId(self):
     recipe = RecipeHasSubrecipe.create(self.recipe1, self.recipe2, 50,
                                        SelectedAllergens([]), self.order,
                                        '')
     self.assertIsNone(self.sut.delete_by_recipe_id(recipe.r_id))