Example #1
0
 def test_revert_call_gc_hook(self):
     textfile = VersionedTextFile(data=SAMPLE_TEXT)
     textfile.save()
     textfile_ids = [textfile.id]
     for _ in range(10):
         textfile = textfile.update(factory.make_string())
         textfile_ids.append(textfile.id)
     # gc_hook only runs when there is something to revert to so
     # make sure we're actually reverting
     revert_to = random.choice(textfile_ids[:-1])
     reverted_ids = []
     remaining_ids = []
     reverted_or_remaining = remaining_ids
     for i in textfile_ids:
         reverted_or_remaining.append(i)
         if i == revert_to:
             reverted_or_remaining = reverted_ids
     gc_hook = Mock()
     textfile = textfile.revert(revert_to, gc_hook=gc_hook)
     for i in reverted_ids:
         self.assertRaises(
             VersionedTextFile.DoesNotExist,
             VersionedTextFile.objects.get,
             id=i,
         )
     for i in remaining_ids:
         self.assertIsNotNone(VersionedTextFile.objects.get(id=i))
     self.assertThat(gc_hook, MockCalledOnceWith(textfile))
Example #2
0
 def test_revert_by_id_with_garbage_collection(self):
     textfile = VersionedTextFile(data=SAMPLE_TEXT)
     textfile.save()
     textfile_ids = [textfile.id]
     for _ in range(10):
         textfile = textfile.update(factory.make_string())
         textfile_ids.append(textfile.id)
     revert_to = random.choice(textfile_ids)
     reverted_ids = []
     remaining_ids = []
     reverted_or_remaining = remaining_ids
     for i in textfile_ids:
         reverted_or_remaining.append(i)
         if i == revert_to:
             reverted_or_remaining = reverted_ids
     self.assertEquals(
         VersionedTextFile.objects.get(id=revert_to),
         textfile.revert(revert_to),
     )
     for i in reverted_ids:
         self.assertRaises(
             VersionedTextFile.DoesNotExist,
             VersionedTextFile.objects.get,
             id=i,
         )
     for i in remaining_ids:
         self.assertIsNotNone(VersionedTextFile.objects.get(id=i))
Example #3
0
 def test_revert_zero_does_nothing(self):
     textfile = VersionedTextFile(data=SAMPLE_TEXT)
     textfile.save()
     textfile_ids = [textfile.id]
     for _ in range(10):
         textfile = textfile.update(factory.make_string())
         textfile_ids.append(textfile.id)
     self.assertEquals(textfile, textfile.revert(0))
     self.assertItemsEqual(textfile_ids,
                           [f.id for f in textfile.previous_versions()])
Example #4
0
 def test_revert_by_negative_without_garbage_collection(self):
     textfile = VersionedTextFile(data=SAMPLE_TEXT)
     textfile.save()
     textfile_ids = [textfile.id]
     for _ in range(10):
         textfile = textfile.update(factory.make_string())
         textfile_ids.append(textfile.id)
     revert_to = random.randint(-10, -1)
     self.assertEquals(textfile_ids[revert_to - 1],
                       textfile.revert(revert_to, False).id)
     for i in textfile_ids:
         self.assertIsNotNone(VersionedTextFile.objects.get(id=i))
Example #5
0
 def test_revert_by_negative_with_garbage_collection(self):
     textfile = VersionedTextFile(data=SAMPLE_TEXT)
     textfile.save()
     textfile_ids = [textfile.id]
     for _ in range(10):
         textfile = textfile.update(factory.make_string())
         textfile_ids.append(textfile.id)
     revert_to = random.randint(-10, -1)
     reverted_ids = textfile_ids[revert_to:]
     remaining_ids = textfile_ids[:revert_to]
     self.assertEquals(textfile_ids[revert_to - 1],
                       textfile.revert(revert_to).id)
     for i in reverted_ids:
         self.assertRaises(VersionedTextFile.DoesNotExist,
                           VersionedTextFile.objects.get,
                           id=i)
     for i in remaining_ids:
         self.assertIsNotNone(VersionedTextFile.objects.get(id=i))