コード例 #1
0
    def test_clean_validation_custom_exists(self):
        """
        If a custom benefit exists, and the data for range, type and value is supplied, the form should validate.
        Clean should return the cleaned data.
        """

        create_benefit(CustomBenefitModel)

        form = forms.BenefitForm(
            data={
                'range': self.range.id,
                'type': Benefit.FIXED,
                'value': 5,
                'custom_benefit': ''
            })

        self.assertTrue(form.is_valid())
        self.assertEqual(
            {
                'range': self.range,
                'type': Benefit.FIXED,
                'value': D('5'),
                'custom_benefit': '',
                'max_affected_items': None
            }, form.clean())
コード例 #2
0
 def test_init_with_custom_benefit(self):
     """
     If a custom benefit exists, the type field should not be required.
     """
     create_benefit(CustomBenefitModel)
     form = forms.BenefitForm()
     self.assertFalse(form.fields['type'].required)
     self.assertEqual(form.fields['custom_benefit'].initial, None)
コード例 #3
0
 def test_init_with_custom_benefit(self):
     """
     If a custom benefit exists, the type field should not be required.
     """
     create_benefit(CustomBenefitModel)
     form = forms.BenefitForm()
     self.assertFalse(form.fields['type'].required)
     self.assertEqual(form.fields['custom_benefit'].initial, None)
コード例 #4
0
def create_offer():
    range = models.Range.objects.create(name="All products", includes_all_products=True)
    condition = models.CountCondition.objects.create(range=range, type=models.Condition.COUNT, value=1)
    benefit = custom.create_benefit(CustomAction)
    return models.ConditionalOffer.objects.create(
        condition=condition, benefit=benefit, offer_type=models.ConditionalOffer.SITE
    )
コード例 #5
0
    def test_clean_only_range_custom_exists(self):
        """
        If a custom benefit exists, the type field is not required. Still, the clean method should throw a
        ValidationError, if only the range is supplied.
        """
        create_benefit(CustomBenefitModel)

        form = forms.BenefitForm(data={
            'range': self.range,
            'type': '',
            'value': '',
            'custom_benefit': ''
        })

        self.assertFalse(form.is_valid())
        self.assertRaises(ValidationError, form.clean)
コード例 #6
0
def create_twin_product_offer():

    try:
        o1 = ConditionalOffer.objects.get(slug='remove-twin-products')
    except:
        print('Modelli offer non presenti, li creo')
        # creare range
        r = create_range(AllProductsRange)

        c1_new = True
        try:
            c1 = create_condition(CheckTwinDigitalProducts,
                                  range=r,
                                  value=1,
                                  type=CoverageCondition.COVERAGE)
        except:
            c1_new = False
            c1 = CheckTwinDigitalProducts.objects.get(
                range=r, value=1, type=CoverageCondition.COVERAGE)
        print('Check Preso?', c1, 'Nuovo?', c1_new)

        b1 = create_benefit(FreeTwinDigitalProducts,
                            range=r,
                            value=100,
                            type=PercentageDiscountBenefit.PERCENTAGE)
        print('Benefit Preso?', b1)

        o1, o1_new = ConditionalOffer.objects.get_or_create(
            name='Remove twin products',
            condition=c1,
            benefit=b1,
            offer_type=ConditionalOffer.SESSION)
        print('Offer Preso?', o1, 'Nuova?', o1_new)

    return o1
コード例 #7
0
def create_twin_product_offer():
    
    try:
        o1 = ConditionalOffer.objects.get(slug='remove-twin-products')
    except:
        print('Modelli offer non presenti, li creo')
        # creare range
        r = create_range(AllProductsRange)

        c1_new = True
        try:
            c1 = create_condition(CheckTwinDigitalProducts, range=r, value=1, type=CoverageCondition.COVERAGE)
        except:
            c1_new = False
            c1 = CheckTwinDigitalProducts.objects.get(range=r, value=1, type=CoverageCondition.COVERAGE)
        print('Check Preso?', c1, 'Nuovo?', c1_new)
        
        
        b1 = create_benefit(FreeTwinDigitalProducts, range=r, value=100, type=PercentageDiscountBenefit.PERCENTAGE)
        print('Benefit Preso?', b1)
        
        
        o1, o1_new= ConditionalOffer.objects.get_or_create(name='Remove twin products', condition=c1, benefit=b1, offer_type=ConditionalOffer.SESSION)
        print('Offer Preso?', o1, 'Nuova?', o1_new)
    
    return o1
コード例 #8
0
    def test_clean_only_range_custom_exists(self):
        """
        If a custom benefit exists, the type field is not required. Still, the clean method should throw a
        ValidationError, if only the range is supplied.
        """
        create_benefit(CustomBenefitModel)

        form = forms.BenefitForm(data={
            'range': self.range,
            'type': '',
            'value': '',
            'custom_benefit': ''
        })

        self.assertFalse(form.is_valid())
        self.assertRaises(ValidationError, form.clean)
コード例 #9
0
 def test_init_with_custom_benefit_with_instance(self):
     """
     If a custom benefit exists and the kwargs instance is passed to init, the initial value for the custom_benefit
     should be the instance.
     """
     benefit = create_benefit(CustomBenefitModel)
     form = forms.BenefitForm(instance=benefit)
     self.assertFalse(form.fields['type'].required)
     self.assertEqual(form.fields['custom_benefit'].initial, benefit.id)
コード例 #10
0
 def test_init_with_custom_benefit_with_instance(self):
     """
     If a custom benefit exists and the kwargs instance is passed to init, the initial value for the custom_benefit
     should be the instance.
     """
     benefit = create_benefit(CustomBenefitModel)
     form = forms.BenefitForm(instance=benefit)
     self.assertFalse(form.fields['type'].required)
     self.assertEqual(form.fields['custom_benefit'].initial, benefit.id)
コード例 #11
0
def create_offer():
    range = models.Range.objects.create(name="All products",
                                        includes_all_products=True)
    condition = models.CountCondition.objects.create(
        range=range, type=models.Condition.COUNT, value=1)
    benefit = custom.create_benefit(CustomAction)
    return models.ConditionalOffer.objects.create(
        condition=condition,
        benefit=benefit,
        offer_type=models.ConditionalOffer.SITE)
コード例 #12
0
    def test_custom_benefits_and_conditions_not_deleted(self):
        condition = custom.create_condition(BasketOwnerCalledBarry)
        condition_id = condition.id

        benefit = custom.create_benefit(CustomBenefitModel)
        benefit_id = benefit.id

        offer = factories.create_offer(benefit=benefit, condition=condition)
        offer.delete()

        self.assertTrue(
            models.Condition.objects.filter(id=condition_id).exists())
        self.assertTrue(models.Benefit.objects.filter(id=benefit_id).exists())
コード例 #13
0
    def test_custom_benefits_and_conditions_not_deleted(self):
        condition = custom.create_condition(BasketOwnerCalledBarry)
        condition_id = condition.id

        benefit = custom.create_benefit(CustomBenefitModel)
        benefit_id = benefit.id

        offer = factories.create_offer(benefit=benefit, condition=condition)
        offer.delete()

        self.assertTrue(
            models.Condition.objects.filter(id=condition_id).exists())
        self.assertTrue(
            models.Benefit.objects.filter(id=benefit_id).exists())
コード例 #14
0
    def test_clean_validation_custom_exists(self):
        """
        If a custom benefit exists, and the data for range, type and value is supplied, the form should validate.
        Clean should return the cleaned data.
        """

        create_benefit(CustomBenefitModel)

        form = forms.BenefitForm(data={
            'range': self.range.id,
            'type': Benefit.FIXED,
            'value': 5,
            'custom_benefit': ''
        })

        self.assertTrue(form.is_valid())
        self.assertEqual({
            'range': self.range,
            'type': Benefit.FIXED,
            'value': D('5'),
            'custom_benefit': '',
            'max_affected_items': None
        }, form.clean())
コード例 #15
0
    def test_offer_benefit_view_with_custom_benefit_type(self):
        benefit = create_benefit(CustomBenefitModel)

        request = RequestFactory().post('/',
                                        data={
                                            'custom_benefit': benefit.pk,
                                        })
        request.session['offer_wizard'] = {
            self.metadata_form_kwargs_key:
            json.dumps(self.metadata_form_kwargs_session_data),
            self.metadata_obj_key:
            json.dumps(self.metadata_obj_session_data),
        }
        response = offer_views.OfferBenefitView.as_view(update=True)(
            request, pk=self.offer.pk)

        self.assertEqual(response.status_code, 302)
        self.assertEqual(
            response.url,
            reverse('dashboard:offer-condition', kwargs={'pk': self.offer.pk}))
        self.assertJSONEqual(
            request.session['offer_wizard'][self.metadata_form_kwargs_key],
            self.metadata_form_kwargs_session_data)
        self.assertJSONEqual(
            request.session['offer_wizard'][self.metadata_obj_key],
            self.metadata_obj_session_data)
        self.assertJSONEqual(
            request.session['offer_wizard'][self.benefit_form_kwargs_key], {
                'data': {
                    'range': None,
                    'type': '',
                    'value': None,
                    'max_affected_items': None,
                    'custom_benefit': str(benefit.pk),
                },
            })
        self.assertJSONEqual(
            request.session['offer_wizard'][self.benefit_obj_key],
            [{
                'model': 'offer.benefit',
                'pk': benefit.pk,
                'fields': {
                    'range': None,
                    'type': '',
                    'value': None,
                    'max_affected_items': None,
                    'proxy_class': benefit.proxy_class,
                }
            }])
コード例 #16
0
    def test_clean_validation_with_custom_benefit(self):
        """
        If a custom benefit is selected, the form should be valid.
        """
        benefit = create_benefit(CustomBenefitModel)

        form = forms.BenefitForm(data={
            'range': '',
            'type': '',
            'value': '',
            'custom_benefit': benefit.id
        })

        self.assertTrue(form.is_valid())
        self.assertEqual({
            'range': None,
            'type': '',
            'value': None,
            'custom_benefit': str(benefit.id),
            'max_affected_items': None
        }, form.clean())
コード例 #17
0
    def test_clean_validation_with_custom_benefit(self):
        """
        If a custom benefit is selected, the form should be valid.
        """
        benefit = create_benefit(CustomBenefitModel)

        form = forms.BenefitForm(data={
            'range': '',
            'type': '',
            'value': '',
            'custom_benefit': benefit.id
        })

        self.assertTrue(form.is_valid())
        self.assertEqual({
            'range': None,
            'type': '',
            'value': None,
            'custom_benefit': str(benefit.id),
            'max_affected_items': None
        }, form.clean())
コード例 #18
0
ファイル: test_custom.py プロジェクト: mackevin1/aglan
 def setUp(self):
     self.custom_benefits = [
         custom.create_benefit(CustomBenefitModel), custom.create_benefit(CustomBenefitWithoutName)]