def test_clean_all_data(self):
     """
     If a custom condition exists, and the data for range, type, value is supplied,
     the form should be valid.
     """
     create_condition(CustomConditionModel)
     form = forms.ConditionForm(
         data={
             'range': self.range.id,
             'type': 'Count',
             'value': 1,
             'custom_condition': ''
         })
     self.assertTrue(form.is_valid())
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
Exemple #3
0
    def test_offer_condition_view_with_custom_condition_type(self):
        range_ = RangeFactory()
        condition = create_condition(CustomConditionModel)

        request = RequestFactory().post('/',
                                        data={
                                            'range': range_.pk,
                                            'custom_condition': condition.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),
            self.benefit_form_kwargs_key:
            json.dumps(self.benefit_form_kwargs_session_data),
            self.benefit_obj_key:
            json.dumps(self.benefit_obj_session_data),
        }
        response = offer_views.OfferConditionView.as_view(update=True)(
            request, pk=self.offer.pk)

        self.assertEqual(response.status_code, 302)
        self.assertEqual(
            response.url,
            reverse('dashboard:offer-restrictions',
                    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],
            self.benefit_form_kwargs_session_data)
        self.assertJSONEqual(
            request.session['offer_wizard'][self.benefit_obj_key],
            self.benefit_obj_session_data)
        self.assertJSONEqual(
            request.session['offer_wizard'][self.condition_form_kwargs_key], {
                'data': {
                    'range': range_.pk,
                    'type': '',
                    'value': None,
                    'custom_condition': str(condition.pk),
                },
            })
        self.assertJSONEqual(
            request.session['offer_wizard'][self.condition_obj_key],
            [{
                'model': 'offer.condition',
                'pk': condition.pk,
                'fields': {
                    'range': None,
                    'type': '',
                    'value': None,
                    'proxy_class': condition.proxy_class,
                }
            }])
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
 def test_clean_no_value(self):
     """
     If a custom condition exists, and the data for one of range, type, value is supplied,
     the form should be invalid.
     """
     create_condition(CustomConditionModel)
     test_data = [('range', self.range), ('type', 'Count'), ('value', 1)]
     for field, value in test_data:
         data = {
             'range': '',
             'type': '',
             'value': '',
             'custom_condition': ''
         }
         data[field] = value
         form = forms.ConditionForm(data=data)
         self.assertFalse(form.is_valid())
Exemple #6
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())
    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())
 def test_clean_custom_condition(self):
     """
     If a custom condition exists, and the data for range and custom condition is supplied,
     the form should be valid.
     """
     custom_condition = create_condition(CustomConditionModel)
     form = forms.ConditionForm(
         data={
             'range': self.range.id,
             'type': '',
             'value': '',
             'custom_condition': custom_condition.id
         })
     self.assertTrue(form.is_valid())
Exemple #9
0
 def setUp(self):
     self.condition = custom.create_condition(BasketOwnerCalledBarry)
     self.offer = models.ConditionalOffer(condition=self.condition)
     self.basket = Basket()
Exemple #10
0
 def setUp(self):
     self.condition = custom.create_condition(BasketOwnerCalledBarry)
     self.offer = models.ConditionalOffer(condition=self.condition)
     self.basket = Basket()
Exemple #11
0
def create_referrer_condition(apps, schema_editor):
    from apps.offer.conditions import ReferrerCondition

    create_condition(ReferrerCondition)
Exemple #12
0
 def setUp(self):
     self.custom_conditions = [
         custom.create_condition(CustomConditionModel), custom.create_condition(CustomConditionWithoutName)]
Exemple #13
0
def create_birthday_condition(apps, schema_editor):
    from apps.offer.conditions import BirthdayCondition

    create_condition(BirthdayCondition)