Exemple #1
0
 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')
Exemple #2
0
 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')
Exemple #3
0
 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'))
Exemple #4
0
 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'])
Exemple #5
0
 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())
Exemple #7
0
 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')
Exemple #8
0
 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)
Exemple #9
0
    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)