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
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())
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())
def setUp(self): self.condition = custom.create_condition(BasketOwnerCalledBarry) self.offer = models.ConditionalOffer(condition=self.condition) self.basket = Basket()
def create_referrer_condition(apps, schema_editor): from apps.offer.conditions import ReferrerCondition create_condition(ReferrerCondition)
def setUp(self): self.custom_conditions = [ custom.create_condition(CustomConditionModel), custom.create_condition(CustomConditionWithoutName)]
def create_birthday_condition(apps, schema_editor): from apps.offer.conditions import BirthdayCondition create_condition(BirthdayCondition)