def test_save_offer_name(self): """ If a request object is sent, the offer name should include program title and type. """ data = self.generate_data() self.mock_program_detail_endpoint(data['program_uuid'], self.site_configuration.discovery_api_url) form = ProgramOfferForm(request=self.request, data=data) form.is_valid() offer = form.save() self.assert_program_offer_conditions(offer, data['program_uuid'], data['benefit_value'], data['benefit_type'], 'Discount for the Test Program MicroMockers Program')
def test_save_create(self): """ A new ConditionalOffer, Benefit, and Condition should be created. """ data = self.generate_data() self.mock_program_detail_endpoint(data['program_uuid'], self.site_configuration.discovery_api_url) form = ProgramOfferForm(request=self.request, data=data) form.is_valid() offer = form.save() self.assert_program_offer_conditions(offer, data['program_uuid'], data['benefit_value'], data['benefit_type'], 'Discount for the Test Program MicroMockers Program')
def test_save_without_commit(self): """ No data should be persisted to the database if the commit kwarg is set to False. """ data = self.generate_data() form = ProgramOfferForm(request=self.request, data=data) self.mock_program_detail_endpoint(data['program_uuid'], self.site_configuration.discovery_api_url) form.is_valid() instance = form.save(commit=False) self.assertIsNone(instance.pk) self.assertFalse(hasattr(instance, 'benefit')) self.assertFalse(hasattr(instance, 'condition'))
def test_save_create(self): """ A new ConditionalOffer, Benefit, and Condition should be created. """ data = self.generate_data() self.mock_program_detail_endpoint(data['program_uuid']) form = ProgramOfferForm(request=self.request, data=data) form.is_valid() offer = form.save() self.assert_program_offer_conditions(offer, data['program_uuid'], data['benefit_value'], data['benefit_type'])
def test_save_offer_name(self): """ If a request object is sent, the offer name should include program title and type. """ data = self.generate_data() self.mock_program_detail_endpoint(data['program_uuid']) form = ProgramOfferForm(request=self.request, data=data) form.is_valid() offer = form.save() self.assert_program_offer_conditions(offer, data['program_uuid'], data['benefit_value'], data['benefit_type'])
def test_create_when_conditional_offer_with_uuid_exists(self): """ Verify a program offer can be created if a conditional offer with different type and same uuid already exists. """ data = self.generate_data() factories.ProgramOfferFactory( condition__program_uuid=data['program_uuid'], offer_type=ConditionalOffer.VOUCHER, ) form = ProgramOfferForm(request=self.request, data=data) self.assertTrue(form.is_valid())
def test_save_create_special_char_title(self): """ When the title is international, A new ConditionalOffer, Benefit, and Condition should still be created.""" data = self.generate_data() self.mock_program_detail_endpoint(data['program_uuid'], self.site_configuration.discovery_api_url, title=u'Sp\xe1nish Program') form = ProgramOfferForm(request=self.request, data=data) form.is_valid() offer = form.save() self.assert_program_offer_conditions(offer, data['program_uuid'], data['benefit_value'], data['benefit_type'], 'Discount for the Spánish Program MicroMockers Program')
def test_init(self): """ The constructor should pull initial data from the passed-in instance. """ program_offer = factories.ProgramOfferFactory() form = ProgramOfferForm(instance=program_offer) self.assertEqual(form['program_uuid'].value(), program_offer.condition.program_uuid.hex) self.assertEqual(form['benefit_type'].value(), program_offer.benefit.proxy().benefit_class_type) self.assertEqual(form['benefit_value'].value(), program_offer.benefit.value)
def test_save_edit(self): """ Previously-created ConditionalOffer, Benefit, and Condition instances should be updated. """ offer = factories.ProgramOfferFactory() data = self.generate_data(program_uuid=offer.condition.program_uuid, benefit_type=Benefit.FIXED) self.mock_program_detail_endpoint(data['program_uuid'], self.site_configuration.discovery_api_url) form = ProgramOfferForm(request=self.request, data=data, instance=offer) form.is_valid() form.save() offer.refresh_from_db() self.assert_program_offer_conditions(offer, data['program_uuid'], data['benefit_value'], data['benefit_type'], 'Discount for the Test Program MicroMockers Program')
def assert_form_errors(self, data, expected_errors): """ Assert that form validation fails with the expected errors. """ form = ProgramOfferForm(data=data) self.assertFalse(form.is_valid()) self.assertEqual(form.errors, expected_errors)