def test_deserialize_with_sort_order(self): beatles = Band.from_json('{"pk": null, "albums": [{"pk": null, "name": "With The Beatles", "sort_order": 2}, {"pk": null, "name": "Please Please Me", "sort_order": 1}], "name": "The Beatles", "members": []}') self.assertEqual(2, beatles.albums.count()) # Make sure the albums were ordered correctly self.assertEqual("Please Please Me", beatles.albums.all()[0].name) self.assertEqual("With The Beatles", beatles.albums.all()[1].name)
def test_deserialize_json(self): beatles = Band.from_json( '{"pk": 9, "albums": [], "name": "The Beatles", "members": [{"pk": null, "name": "John Lennon", "band": null}, {"pk": null, "name": "Paul McCartney", "band": null}]}' ) self.assertEqual(9, beatles.id) self.assertEqual('The Beatles', beatles.name) self.assertEqual(2, beatles.members.count()) self.assertEqual(BandMember, beatles.members.all()[0].__class__)
def test_deserialize_with_multiple_sort_order(self): Album._meta.ordering = ['sort_order', 'name'] beatles = Band.from_json('{"pk": null, "albums": [{"pk": 1, "name": "With The Beatles", "sort_order": 1}, {"pk": 2, "name": "Please Please Me", "sort_order": 1}, {"pk": 3, "name": "Please Please Me", "sort_order": 2}], "name": "The Beatles", "members": []}') Album._meta.ordering = ['sort_order'] self.assertEqual(3, beatles.albums.count()) # Make sure the albums were ordered correctly self.assertEqual(2, beatles.albums.all()[0].pk) self.assertEqual(1, beatles.albums.all()[1].pk) self.assertEqual(3, beatles.albums.all()[2].pk)
def test_saved_items_with_non_db_relation(self): class BandForm(ClusterForm): class Meta: model = Band fields = ['name'] first_song = Song(name='I Saw Her Standing There') second_song = Song(name='Misery') album = Album(name='Please Please Me', songs=[first_song, second_song]) beatles = Band(name='The Beatles', albums=[album]) beatles.save() # pack and unpack the record so that we're working with a non-db-backed queryset new_beatles = Band.from_json(beatles.to_json()) form = BandForm({ 'name': 'The Beatles', 'members-TOTAL_FORMS': 0, 'members-INITIAL_FORMS': 0, 'members-MAX_NUM_FORMS': 1000, 'albums-TOTAL_FORMS': 1, 'albums-INITIAL_FORMS': 1, 'albums-MAX_NUM_FORMS': 1000, 'albums-0-name': album.name, 'albums-0-id': album.id, 'albums-0-ORDER': 1, 'albums-0-songs-TOTAL_FORMS': 4, 'albums-0-songs-INITIAL_FORMS': 2, 'albums-0-songs-MAX_NUM_FORMS': 1000, 'albums-0-songs-0-name': first_song.name, 'albums-0-songs-0-DELETE': 'albums-0-songs-0-DELETE', 'albums-0-songs-0-id': first_song.id, 'albums-0-songs-1-name': second_song.name, 'albums-0-songs-1-id': second_song.id, 'albums-0-songs-2-name': 'Anna', 'albums-0-songs-2-id': '', 'albums-0-songs-3-name': '', 'albums-0-songs-3-id': '', }, instance=new_beatles) self.assertTrue(form.is_valid()) form.save() self.assertTrue(Song.objects.filter(name='Anna').exists()) self.assertFalse(Song.objects.filter(name='I Saw Her Standing There').exists())
def test_serialize_json_with_dates(self): beatles = Band(name='The Beatles', members=[ BandMember(name='John Lennon'), BandMember(name='Paul McCartney'), ], albums=[ Album(name='Rubber Soul', release_date=datetime.date(1965, 12, 3)) ]) beatles_json = beatles.to_json() self.assertTrue("John Lennon" in beatles_json) self.assertTrue("1965-12-03" in beatles_json) unpacked_beatles = Band.from_json(beatles_json) self.assertEqual(datetime.date(1965, 12, 3), unpacked_beatles.albums.all()[0].release_date)
def test_saved_items_with_non_db_relation(self): class BandForm(ClusterForm): class Meta: model = Band beatles = Band(name='The Beatles', members=[ BandMember(name='John Lennon'), BandMember(name='Paul McCartney'), ]) beatles.save() member0, member1 = beatles.members.all() # pack and unpack the record so that we're working with a non-db-backed queryset new_beatles = Band.from_json(beatles.to_json()) form = BandForm({ 'name': "The New Beatles", 'members-TOTAL_FORMS': 4, 'members-INITIAL_FORMS': 2, 'members-MAX_NUM_FORMS': 1000, 'members-0-name': member0.name, 'members-0-DELETE': 'members-0-DELETE', 'members-0-id': member0.id, 'members-1-name': member1.name, 'members-1-id': member1.id, 'members-2-name': 'George Harrison', 'members-2-id': '', 'members-3-name': '', 'members-3-id': '', 'albums-TOTAL_FORMS': 0, 'albums-INITIAL_FORMS': 0, 'albums-MAX_NUM_FORMS': 1000, }, instance=new_beatles) self.assertTrue(form.is_valid()) form.save() new_beatles = Band.objects.get(id=beatles.id) self.assertEqual('The New Beatles', new_beatles.name) self.assertTrue(BandMember.objects.filter(name='George Harrison').exists()) self.assertFalse(BandMember.objects.filter(name='John Lennon').exists())
def test_saved_items_with_non_db_relation(self): class BandForm(ClusterForm): class Meta: model = Band fields = ['name'] john = BandMember(name='John Lennon') paul = BandMember(name='Paul McCartney') beatles = Band(name='The Beatles', members=[john, paul]) beatles.save() # pack and unpack the record so that we're working with a non-db-backed queryset new_beatles = Band.from_json(beatles.to_json()) form = BandForm({ 'name': "The New Beatles", 'members-TOTAL_FORMS': 4, 'members-INITIAL_FORMS': 2, 'members-MAX_NUM_FORMS': 1000, 'members-0-name': john.name, 'members-0-DELETE': 'members-0-DELETE', 'members-0-id': john.id, 'members-1-name': paul.name, 'members-1-id': paul.id, 'members-2-name': 'George Harrison', 'members-2-id': '', 'members-3-name': '', 'members-3-id': '', 'albums-TOTAL_FORMS': 0, 'albums-INITIAL_FORMS': 0, 'albums-MAX_NUM_FORMS': 1000, }, instance=new_beatles) self.assertTrue(form.is_valid()) form.save() new_beatles = Band.objects.get(id=beatles.id) self.assertEqual('The New Beatles', new_beatles.name) self.assertTrue(BandMember.objects.filter(name='George Harrison').exists()) self.assertFalse(BandMember.objects.filter(name='John Lennon').exists())
def test_deserialize_json(self): beatles = Band.from_json('{"pk": 9, "albums": [], "name": "The Beatles", "members": [{"pk": null, "name": "John Lennon", "band": null}, {"pk": null, "name": "Paul McCartney", "band": null}]}') self.assertEqual(9, beatles.id) self.assertEqual('The Beatles', beatles.name) self.assertEqual(2, beatles.members.count()) self.assertEqual(BandMember, beatles.members.all()[0].__class__)