vendredi 9 février 2018

Write test for a Django model with many-to-many relation

I want to write a test for Django model with many-to-many relation but I got this error:

ValueError: "" needs to have a value for field "id" before this many-to-many relationship can be used.

My test:

class ModelTestCase(TestCase):
    def setUp(self):
        self.mock_file = mock.MagicMock(File)
        self.mock_file.name = 'MockFile'
        self.before_count = Tour.objects.count()
        self.tour_agency = TourAgency.objects.create(
            name='agency',
            username='agency')
        self.tour_category = TourCategory.objects.create(name='category')
        self.tour_equipment = TourEquipment.objects.create(name='equipment')
        self.tour_leader = TourLeader.objects.create(
            name='leader',
            email='leader@sample.com',
            username='leader',
            bio='sample text',)
        self.tour_tag = TourTag.objects.create(name='tag')

    def test_model_can_create_tour(self):
        self.tour = Tour.objects.create(
            name='tour',
            description='description',
            summary='summary',
            agency=self.tour_agency,
            equipment=self.tour_equipment,
            category=self.tour_category,
            tags=self.tour_tag,
            activity_type='activity type',
            date=datetime.now,
            photo=self.mock_file)
        self.tour.save()
        self.tour.save_m2m()
        count = Tour.objects.count()
        self.assertNotEqual(self.before_count, count)

I'll try to save objects with .save() but it doesn't work.

Aucun commentaire:

Enregistrer un commentaire