Exemplo n.º 1
0
    def test_ingredient_percent(self):
        recipe = model.Recipe()

        a1 = model.RecipeAddition(use='MASH',
                                  amount=6,
                                  unit='POUND',
                                  fermentable=model.Fermentable())
        a2 = model.RecipeAddition(use='MASH',
                                  amount=2,
                                  unit='POUND',
                                  fermentable=model.Fermentable())
        a3 = model.RecipeAddition(
            use='MASH',
            amount=.046875,  # .75 oz
            unit='POUND',
            hop=model.Hop())
        a4 = model.RecipeAddition(
            use='MASH',
            amount=.015625,  # .25 oz
            unit='POUND',
            hop=model.Hop())

        percent = recipe._percent({'Fermentable': [a1, a2], 'Hop': [a3, a4]})

        assert percent[a1] == .75
        assert percent[a2] == .25
        assert percent[a3] == .75
        assert percent[a4] == .25
Exemplo n.º 2
0
    def test_percentage(self):
        recipe = model.Recipe()

        a1 = model.RecipeAddition(use='MASH',
                                  amount=6,
                                  unit='POUND',
                                  fermentable=model.Fermentable())
        a2 = model.RecipeAddition(use='MASH',
                                  amount=2,
                                  unit='POUND',
                                  fermentable=model.Fermentable())
        a3 = model.RecipeAddition(
            use='BOIL',
            amount=.046875,  # .75 oz
            unit='POUND',
            hop=model.Hop())
        a4 = model.RecipeAddition(
            use='BOIL',
            amount=.015625,  # .25 oz
            unit='POUND',
            hop=model.Hop())
        recipe.additions = [a1, a2, a3, a4]

        assert a1.percentage == .75
        assert a2.percentage == .25
        assert a3.percentage == .75
        assert a4.percentage == .25
Exemplo n.º 3
0
    def test_printed_name(self):
        assert model.Fermentable(name='2-Row',
                                 origin='US').printed_name == u'2-Row (US)'

        assert model.Fermentable(
            name='2-Row', origin='BELGIAN').printed_name == u'2-Row (Belgian)'

        assert model.Hop(name='Cascade',
                         origin='US').printed_name == u'Cascade (US)'

        assert model.Hop(name='Cascade',
                         origin='BELGIAN').printed_name == u'Cascade (Belgian)'

        assert model.Yeast(name='Wyeast 1056 - American Ale'
                           ).printed_name == u'Wyeast 1056 - American Ale'
Exemplo n.º 4
0
    def test_zero_percentage(self):
        recipe = model.Recipe()

        a1 = model.RecipeAddition(use='MASH',
                                  amount=0,
                                  unit='POUND',
                                  fermentable=model.Fermentable())
        a2 = model.RecipeAddition(use='MASH',
                                  amount=0,
                                  unit='POUND',
                                  fermentable=model.Fermentable())
        recipe.additions = [a1, a2]

        assert a1.percentage == 0
        assert a2.percentage == 0
Exemplo n.º 5
0
    def test_metric_ingredient_amount(self):
        model.Fermentable(name='2-Row',
                          type='MALT',
                          origin='US',
                          ppg=36,
                          lovibond=2,
                          description='Sample Description')
        model.commit()
        self.b.refresh()

        for step in ('Mash', 'Boil'):
            self.b.find_element_by_link_text(step).click()

            self.b.find_element_by_link_text(
                "Add Malt/Fermentables...").click()
            self.b.find_element_by_link_text("2-Row (US)").click()

            i = self.b.find_element_by_css_selector(
                '.%s .addition .amount input' % step.lower())
            i.clear()
            i.send_keys('1 kg')
            self.blur()
            time.sleep(2)

            self.b.refresh()

            i = self.b.find_element_by_css_selector(
                '.%s .addition .amount input' % step.lower())
            assert i.get_attribute('value') == '1 kg'
Exemplo n.º 6
0
    def test_add_extract(self):
        model.Fermentable(name="Cooper's Amber LME",
                          type='EXTRACT',
                          origin='AUSTRALIAN',
                          ppg=36,
                          lovibond=13.3,
                          description='Sample Description')
        model.commit()
        self.b.refresh()

        for step in ('Mash', 'Boil'):
            self.b.find_element_by_link_text(step).click()

            assert len(
                self.b.find_elements_by_css_selector(
                    '.%s .ingredient-list .addition' % step.lower())) == 0

            self.b.find_element_by_link_text("Add Malt Extract...").click()
            self.b.find_element_by_link_text(
                "Cooper's Amber LME (Australian)").click()

            assert len(
                self.b.find_elements_by_css_selector(
                    '.%s .ingredient-list .addition:not(:empty)' %
                    step.lower())) == 1
Exemplo n.º 7
0
    def test_add_malt(self):
        model.Fermentable(name='2-Row',
                          type='MALT',
                          origin='US',
                          ppg=36,
                          lovibond=2,
                          description='Sample Description')
        model.commit()
        self.b.refresh()

        for step in ('Mash', 'Boil'):
            self.b.find_element_by_link_text(step).click()

            assert len(
                self.b.find_elements_by_css_selector(
                    '.%s .ingredient-list .addition' % step.lower())) == 0

            self.b.find_element_by_link_text(
                "Add Malt/Fermentables...").click()
            self.b.find_element_by_link_text("2-Row (US)").click()

            assert len(
                self.b.find_elements_by_css_selector(
                    '.%s .ingredient-list .addition:not(:empty)' %
                    step.lower())) == 1
Exemplo n.º 8
0
    def test_fermentable_ingredient(self):
        addition = model.RecipeAddition()
        fermentable = model.Fermentable()

        addition.fermentable = fermentable

        assert addition.ingredient == fermentable
Exemplo n.º 9
0
    def test_fermentable(self):
        model.Recipe(name='American IPA', author=model.User.get(1))
        model.Fermentable(name='2-Row', origin='US', ppg=36, lovibond=2)
        model.commit()

        data = {
            u'boil': {
                u'additions': [{
                    u'amount': 5,
                    u'use': 'BOIL',
                    u'duration': 15,
                    u'unit': u'POUND',
                    u'ingredient': {
                        u'id': 1,
                        u'class': 'Fermentable'
                    }
                }]
            }
        }

        self.post('/recipes/1/american-ipa/builder?_method=PUT',
                  params={'recipe': dumps(data)})

        assert model.RecipeAddition.query.count() == 1
        a = model.RecipeAddition.get(1)
        assert a.recipe == model.Recipe.get(1)
        assert a.amount == 5
        assert a.use == 'BOIL'
        assert a.duration == timedelta(minutes=15)
        assert a.unit == 'POUND'
        assert a.fermentable == model.Fermentable.get(1)
Exemplo n.º 10
0
    def test_ingredient_partition(self):
        recipe = model.Recipe()
        recipe.additions = [
            model.RecipeAddition(use='MASH', fermentable=model.Fermentable()),
            model.RecipeAddition(use='MASH', hop=model.Hop())
        ]
        partitions = recipe._partition(recipe.additions)
        assert len(partitions[model.Fermentable]) == 1
        assert len(partitions[model.Hop]) == 1

        recipe.additions = [
            model.RecipeAddition(use='FIRST WORT', hop=model.Hop()),
            model.RecipeAddition(use='BOIL', hop=model.Hop()),
            model.RecipeAddition(use='POST-BOIL', hop=model.Hop()),
            model.RecipeAddition(use='FLAME OUT', hop=model.Hop())
        ]
        partitions = recipe._partition(recipe.additions)
        assert len(partitions[model.Hop]) == 4

        recipe.additions = [
            model.RecipeAddition(use='PRIMARY', yeast=model.Yeast()),
            model.RecipeAddition(use='SECONDARY', yeast=model.Yeast())
        ]
        partitions = recipe._partition(recipe.additions)
        assert len(partitions[model.Yeast]) == 2
Exemplo n.º 11
0
    def test_simple_publish(self):
        model.Recipe(name='Rocky Mountain River IPA', author=model.User.get(1))
        model.Fermentable(name='2-Row', origin='US', ppg=36, lovibond=2)
        model.commit()

        assert model.Recipe.query.first().state == "DRAFT"
        self.post('/recipes/1/rocky-mountain-river-ipa/builder/publish/')
        assert model.Recipe.query.first().state == "PUBLISHED"
Exemplo n.º 12
0
    def test_additions_copy(self):
        recipe = model.Recipe(name=u'Sample Recipe')

        grain = model.Fermentable()
        primary_hop = model.Hop()
        bittering_hop = model.Hop()
        yeast = model.Yeast()
        recipe.additions = [
            model.RecipeAddition(use='MASH', fermentable=grain),
            model.RecipeAddition(use='MASH', hop=primary_hop),
            model.RecipeAddition(use='FIRST WORT', hop=primary_hop),
            model.RecipeAddition(
                use='BOIL',
                hop=primary_hop,
            ),
            model.RecipeAddition(use='POST-BOIL', hop=primary_hop),
            model.RecipeAddition(use='FLAME OUT', hop=bittering_hop),
            model.RecipeAddition(use='PRIMARY', yeast=yeast),
            model.RecipeAddition(use='SECONDARY', yeast=yeast)
        ]
        model.commit()

        assert model.Recipe.query.count() == 1
        assert model.RecipeAddition.query.count() == 8
        assert model.Fermentable.query.count() == 1
        assert model.Hop.query.count() == 2
        assert model.Yeast.query.count() == 1

        recipe = model.Recipe.query.first()
        recipe.duplicate()
        model.commit()

        assert model.Recipe.query.count() == 2
        assert model.RecipeAddition.query.count() == 16
        assert model.Fermentable.query.count() == 1
        assert model.Hop.query.count() == 2
        assert model.Yeast.query.count() == 1

        r1, r2 = model.Recipe.get(1), model.Recipe.get(2)
        assert len(r1.additions) == len(r2.additions) == 8

        for f in model.Fermentable.query.all():
            assert f in [a.ingredient for a in r1.additions]
            assert f in [a.ingredient for a in r2.additions]
            assert len(set([a.recipe for a in f.additions])) == 2

        for h in model.Hop.query.all():
            assert h in [a.ingredient for a in r1.additions]
            assert h in [a.ingredient for a in r2.additions]
            assert len(set([a.recipe for a in h.additions])) == 2

        for y in model.Yeast.query.all():
            assert y in [a.ingredient for a in r1.additions]
            assert y in [a.ingredient for a in r2.additions]
            assert len(set([a.recipe for a in y.additions])) == 2
Exemplo n.º 13
0
    def test_lookup(self):
        model.Fermentable(name='2-Row',
                          type='MALT',
                          origin='US',
                          ppg=36,
                          lovibond=2,
                          description='Sample Description')
        model.commit()

        assert self.get('/ingredients/1').status_int == 200
        assert self.get('/ingredients/2', status=404).status_int == 404
Exemplo n.º 14
0
    def test_draft_merge_additions(self):
        recipe = model.Recipe(name='Rocky Mountain River IPA',
                              state=u'PUBLISHED')

        # Add some ingredients
        grain = model.Fermentable()
        primary_hop = model.Hop()
        bittering_hop = model.Hop()
        yeast = model.Yeast()
        recipe.additions = [
            model.RecipeAddition(use='MASH', fermentable=grain),
            model.RecipeAddition(use='MASH', hop=primary_hop),
            model.RecipeAddition(use='FIRST WORT', hop=primary_hop),
            model.RecipeAddition(
                use='BOIL',
                hop=primary_hop,
            ),
            model.RecipeAddition(use='POST-BOIL', hop=primary_hop),
            model.RecipeAddition(use='FLAME OUT', hop=bittering_hop),
            model.RecipeAddition(use='PRIMARY', yeast=yeast),
            model.RecipeAddition(use='SECONDARY', yeast=yeast)
        ]
        model.commit()

        # Make a new draft of the recipe
        model.Recipe.query.first().draft()
        model.commit()

        assert model.Recipe.query.count() == 2

        # Change the ingredients of the draft
        draft = model.Recipe.query.filter(
            model.Recipe.state == 'DRAFT').first()
        draft.additions = [
            model.RecipeAddition(use='MASH',
                                 fermentable=model.Fermentable.query.first())
        ]
        model.commit()

        # Merge the draft back into its origin recipe.
        draft = model.Recipe.query.filter(
            model.Recipe.state == 'DRAFT').first()
        draft.publish()
        model.commit()

        # Make sure the remaining version is the (newly saved) draft
        assert model.Recipe.query.count() == 1
        assert model.RecipeAddition.query.count() == 1
        published = model.Recipe.query.first()

        assert published.additions[
            0].fermentable == model.Fermentable.query.first()
Exemplo n.º 15
0
    def test_additions_copy_with_overrides(self):
        recipe = model.Recipe(name=u'Sample Recipe')

        grain = model.Fermentable()
        primary_hop = model.Hop()
        bittering_hop = model.Hop()
        yeast = model.Yeast()
        recipe.additions = [
            model.RecipeAddition(use='MASH', fermentable=grain),
            model.RecipeAddition(use='MASH', hop=primary_hop),
            model.RecipeAddition(use='FIRST WORT', hop=primary_hop),
            model.RecipeAddition(
                use='BOIL',
                hop=primary_hop,
            ),
            model.RecipeAddition(use='POST-BOIL', hop=primary_hop),
            model.RecipeAddition(use='FLAME OUT', hop=bittering_hop),
            model.RecipeAddition(use='PRIMARY', yeast=yeast),
            model.RecipeAddition(use='SECONDARY', yeast=yeast)
        ]
        model.commit()

        assert model.Recipe.query.count() == 1
        assert model.RecipeAddition.query.count() == 8
        assert model.Fermentable.query.count() == 1
        assert model.Hop.query.count() == 2
        assert model.Yeast.query.count() == 1

        recipe = model.Recipe.query.first()
        recipe.duplicate({
            'additions': [
                model.RecipeAddition(
                    use='MASH', fermentable=model.Fermentable.query.first())
            ]
        })
        model.commit()

        assert model.Recipe.query.count() == 2
        assert model.RecipeAddition.query.count() == 9
        assert model.Fermentable.query.count() == 1
        assert model.Hop.query.count() == 2
        assert model.Yeast.query.count() == 1

        r1, r2 = model.Recipe.get(1), model.Recipe.get(2)
        assert len(r1.additions) == 8
        assert len(r2.additions) == 1

        assert r2.additions[0].fermentable == model.Fermentable.query.first()
Exemplo n.º 16
0
    def test_recipe_components(self):
        recipe = model.Recipe()

        recipe.additions = [
            model.RecipeAddition(use='MASH', fermentable=model.Fermentable()),
            model.RecipeAddition(use='MASH', hop=model.Hop()),
            model.RecipeAddition(use='FIRST WORT', hop=model.Hop()),
            model.RecipeAddition(use='BOIL', hop=model.Hop()),
            model.RecipeAddition(use='POST-BOIL', hop=model.Hop()),
            model.RecipeAddition(use='FLAME OUT', hop=model.Hop()),
            model.RecipeAddition(use='PRIMARY', yeast=model.Yeast()),
            model.RecipeAddition(use='SECONDARY', yeast=model.Yeast())
        ]

        assert len(recipe.mash[model.Fermentable]) == 1
        assert len(recipe.mash[model.Hop]) == 1
        assert len(recipe.boil[model.Hop]) == 4
        assert len(recipe.fermentation[model.Yeast]) == 2
Exemplo n.º 17
0
 def test_printed_type(self):
     assert model.Fermentable().printed_type == 'Grain'
     assert model.Fermentable(type='SUGAR').printed_type == 'Sugar'
     assert model.Fermentable(type='MALT').printed_type == 'Grain'
Exemplo n.º 18
0
    def test_recipe_contains(self):
        recipe = model.Recipe()

        f1 = model.Fermentable()
        h1 = model.Hop()
        h2 = model.Hop()
        h3 = model.Hop()
        h4 = model.Hop()
        h5 = model.Hop()
        y1 = model.Yeast()
        y2 = model.Yeast()

        recipe.additions = [
            model.RecipeAddition(use='MASH', fermentable=f1),
            model.RecipeAddition(use='MASH', hop=h1),
            model.RecipeAddition(use='FIRST WORT', hop=h2),
            model.RecipeAddition(use='BOIL', hop=h3),
            model.RecipeAddition(use='POST-BOIL', hop=h4),
            model.RecipeAddition(use='FLAME OUT', hop=h5),
            model.RecipeAddition(use='PRIMARY', yeast=y1),
            model.RecipeAddition(use='SECONDARY', yeast=y2)
        ]

        assert recipe.contains(f1, 'mash')
        assert recipe.contains(f1, 'boil') is False
        assert recipe.contains(f1, 'fermentation') is False

        assert recipe.contains(h1, 'mash')
        assert recipe.contains(h1, 'boil') is False
        assert recipe.contains(h1, 'fermentation') is False

        assert recipe.contains(h2, 'mash') is False
        assert recipe.contains(h2, 'boil')
        assert recipe.contains(h2, 'fermentation') is False

        assert recipe.contains(h3, 'mash') is False
        assert recipe.contains(h3, 'boil')
        assert recipe.contains(h3, 'fermentation') is False

        assert recipe.contains(h4, 'mash') is False
        assert recipe.contains(h4, 'boil')
        assert recipe.contains(h4, 'fermentation') is False

        assert recipe.contains(h5, 'mash') is False
        assert recipe.contains(h5, 'boil')
        assert recipe.contains(h5, 'fermentation') is False

        assert recipe.contains(y1, 'mash') is False
        assert recipe.contains(y1, 'boil') is False
        assert recipe.contains(y1, 'fermentation')

        assert recipe.contains(y2, 'mash') is False
        assert recipe.contains(y2, 'boil') is False
        assert recipe.contains(y2, 'fermentation')

        assert recipe.contains(f1, 'invalid') is False
        assert recipe.contains(h1, 'invalid') is False
        assert recipe.contains(h2, 'invalid') is False
        assert recipe.contains(h3, 'invalid') is False
        assert recipe.contains(h4, 'invalid') is False
        assert recipe.contains(h5, 'invalid') is False
        assert recipe.contains(y1, 'invalid') is False
        assert recipe.contains(y2, 'invalid') is False