Esempio n. 1
0
def test_retailer_model(db):
    retailer = m.Retailer(name='Rewe')
    m.Store(name='Billa', retailer=retailer)
    m.Store(name='Penny', retailer=retailer)
    m.Brand(name='Clever', retailer=retailer)
    m.Label(name={'en': 'BEPI'}, type='retailer', retailers=[retailer])

    criterion_1_assoc = m.RetailerMeetsCriterion(satisfied=False,
                                                 explanation='Nope.')
    criterion_1_assoc.criterion = m.Criterion(name={'en': 'Saves the world'},
                                              type='retailer')
    retailer.meets_criteria.append(criterion_1_assoc)

    criterion_2_assoc = m.RetailerMeetsCriterion(
        satisfied=True, explanation='At least a few of us...')
    criterion_2_assoc.criterion = m.Criterion(
        name={'en': 'Makes us all happy'}, type='retailer')
    retailer.meets_criteria.append(criterion_2_assoc)

    db.session.add(retailer)
    db.session.commit()

    assert retailer.id > 0
    assert len(retailer.stores) == 2
    assert len(retailer.brands) == 1
    assert len(retailer.meets_criteria) == 2
    assert len(retailer.labels) == 1
    assert retailer.name == 'Rewe'
    assert retailer.meets_criteria[0].satisfied is False
    assert retailer.meets_criteria[0].explanation == 'Nope.'
    assert retailer.meets_criteria[0].criterion.name['en'] == 'Saves the world'
    assert retailer.meets_criteria[0].criterion.type == 'retailer'
    assert retailer.labels[0].name['en'] == 'BEPI'
Esempio n. 2
0
def example_data_criteria(request, app, db):
    with app.app_context():
        print('\nSetting up criteria example data for {} {}'.format(
            id(db), db))
        c1 = m.Criterion(name={
            'en': 'Multilingual Criterion',
            'de': 'Mehrsprachiges Criterion'
        },
                         details={
                             'en': 'Multilingual details',
                             'de': 'Mehrsprachige Details'
                         })
        c2 = m.Criterion(name={'en': 'English Criterion'},
                         details={'en': 'English details'})
        c3 = m.Criterion(name={'de': 'Deutsches Criterion'},
                         details={'de': 'Deutsche Details'})

        cc1 = m.CriterionCategory(
            name={
                'en': 'Multilingual Criterion Category',
                'de': 'Mehrsprachige Criterion Category'
            })
        cc2 = m.CriterionCategory(name={'en': 'English Criterion Category'})
        cc3 = m.CriterionCategory(name={'de': 'Deutsche Criterion Category'})

        cc11 = m.CriterionCategory(name={'en': 'Turtle', 'de': 'Kroete'})

        cc1.subcategories = [cc11]

        cc1.criteria = [c1]
        cc2.criteria = [c2]
        cc3.criteria = [c3]

        db.session.add_all([c1, c2, c3, cc1, cc2, cc3, cc11])
        db.session.commit()
Esempio n. 3
0
def example_data_label_guide(request, app, db):
    with app.app_context():
        print('\nSetting up example data for label guide use cases for {} {}'.
              format(id(db), db))

        l1 = m.Label(name={
            "en": "English and German",
            "de": "Englisch und Deutsch"
        },
                     description={
                         "en": "English description",
                         "de": "Deutsche Beschreibung"
                     },
                     logo={
                         'en': 'english_logo.png',
                         'de': 'german_logo.png'
                     })
        l2 = m.Label(name={"en": "English only"},
                     description={"en": "English description only"},
                     logo={'en': 'english_only_logo.png'})
        l3 = m.Label(name={"de": "Nur Deutsch"},
                     description={"de": "Nur eine deutsche Beschreibung"},
                     logo={'de': 'german_only_logo.png'})

        crit1 = m.Criterion(name={'en': 'Multilingual'})
        crit2 = m.Criterion(name={'en': 'Understandable'})
        crit3 = m.Criterion(name={'en': 'Ignorant'})

        l1_m_c1 = m.LabelMeetsCriterion(
            label=l1,
            criterion=crit1,
            explanation={
                "en": "The label is both English and German.",
                "de": "Das Label ist sowohl Deutsch, als auch Englisch."
            },
            score=100)
        l2_m_c2 = m.LabelMeetsCriterion(
            label=l2,
            criterion=crit2,
            explanation={
                "en":
                "The label is at least in English, so a lot of people will understand it."
            },
            score=50)
        l3_m_c3 = m.LabelMeetsCriterion(
            label=l3,
            criterion=crit3,
            explanation={"de": "Alles nur Deutsch."},
            score=100)

        l1.meets_criteria = [l1_m_c1]
        l2.meets_criteria = [l2_m_c2]
        l3.meets_criteria = [l3_m_c3]

        db.session.add_all([l1, l2, l3])
        db.session.commit()
Esempio n. 4
0
def test_label_model(db):
    label = m.Label(
        name={
            'en': 'EU organic',
            'de': 'EU Bio'
        },
        description={
            'en': 'A cool label.',
            'de': 'Ein cooles Label'
        },
        logo={'en': 'some url'},
        countries=[m.LabelCountry(code='GB'),
                   m.LabelCountry(code='AT')])

    criterion_1_assoc = m.LabelMeetsCriterion(score=1,
                                              explanation={'en': 'Nope.'})
    criterion_1_assoc.criterion = m.Criterion(name={'en': 'Saves the world'})
    label.meets_criteria.append(criterion_1_assoc)

    criterion_2_assoc = m.LabelMeetsCriterion(
        score=2, explanation={'en': 'At least a few of us…'})
    criterion_2_assoc.criterion = m.Criterion(
        name={'en': 'Makes us all happy'})
    label.meets_criteria.append(criterion_2_assoc)

    resource_1 = m.Resource(name={'en': 'cocoa'})
    resource_2 = m.Resource(name={'en': 'palm oil'})
    label.resources = [resource_1, resource_2]

    product = m.Product(name={'en': 'Organic vegan gluten-free cookies'})
    label.products.append(product)

    db.session.add(label)
    db.session.commit()

    assert label.id > 0
    assert product.id > 0
    assert len(label.meets_criteria) == 2
    assert len(label.resources) == 2
    assert label.name['en'] == 'EU organic'
    assert label.name['de'] == 'EU Bio'
    assert label.products[0].name['en'] == 'Organic vegan gluten-free cookies'
    assert label.meets_criteria[0].score is 1
    assert label.meets_criteria[0].explanation['en'] == 'Nope.'
    assert label.meets_criteria[0].criterion.name['en'] == 'Saves the world'
    assert label.resources[0].name['en'] == 'cocoa'
    assert label.countries[0].code == 'AT'
    assert product.labels[0] == label
    assert resource_2.labels[0] == label
Esempio n. 5
0
def test_criterion_model(db):
    criterion = m.Criterion(name={'en': 'Saves the world'})
    criterion.details = {
        'en': {
            'question': 'Does the certificate/label save the world?',
            'response_options': '0 - no, 1 - partly, 2 - totally!',
            'explanation': '2 applies only if it really saves the world.',
            'possible_scores': [-1, 0, 1, 2]  # -1 means not applicable
        }
    }

    hotspot_assoc = m.CriterionImprovesHotspot(weight=2,
                                               explanation={'en': 'Obvious.'})
    hotspot_assoc.hotspot = m.Hotspot(name={'en': 'Saving the world'})
    criterion.improves_hotspots.append(hotspot_assoc)

    db.session.add(criterion)
    db.session.commit()

    assert criterion.id > 0
    assert criterion.details['en']['possible_scores'][0] == -1
    assert len(criterion.improves_hotspots) == 1
    assert criterion.improves_hotspots[0].weight == 2
    assert criterion.improves_hotspots[0].explanation['en'] == 'Obvious.'
    assert criterion.improves_hotspots[0].hotspot.name[
        'en'] == 'Saving the world'
Esempio n. 6
0
def example_data_labels(request, app, db):
    with app.app_context():
        print('\nSetting up label example data for {} {}'.format(id(db), db))
        r1 = m.Resource(name={'en': 'Testresource #1'})
        r2 = m.Resource(name={'en': 'Testresource #2'})
        lbl_country = m.LabelCountry(code='TL')
        hotspot = m.Hotspot(
            name={'en': 'Quality Assurance'},
            description={
                'en':
                'To achieve a better world, we need good code.' +
                'And good code needs good QA.'
            })
        crit_hs = m.CriterionImprovesHotspot(
            weight=100,
            explanation={'en': 'What better QA than solid test data?'},
            hotspot=hotspot)
        crit = m.Criterion(type='label',
                           name={'en': 'The test improvement criterion'},
                           improves_hotspots=[crit_hs])
        crit_cat = m.CriterionCategory(name={'en': 'Test Data'},
                                       criteria=[crit])
        lbl = m.Label(
            name={'en': 'Testlabel'},
            type='product',
            description={'en': 'For exceptional testing.'},
            logo={
                'en': 'beautiful_logo.png',
                'de': 'horrible_logo.png'
            },
            resources=[r1, r2],
            countries=[lbl_country],
        )
        lbl_criterion = m.LabelMeetsCriterion(
            label=lbl,
            criterion=crit,
            score=100,
            explanation={
                'en': 'Does the label improve testing for all of us?'
            })

        db.session.add(lbl)
        db.session.add(lbl_criterion)
        db.session.add(crit_cat)
        db.session.commit()