def check_update(self): self.new_timestamp = (self.base_timestamp + relativedelta(years=10)).isoformat() self.init_mock_loader() importer = Importer(self.loader, force_singlethread=True) importer.update(self.body_id) for table, count in self.tables.items(): self.assertEqual( table.objects.count(), count, "{}: {} vs. {}".format(table, count, table.objects.all()), ) self.assertEqual(File.objects.count(), 6)
def import_update(body_id: Optional[str] = None, ignore_modified: bool = False) -> None: from importer.importer import Importer if body_id: bodies = Body.objects.filter(oparl_id=body_id).all() else: bodies = Body.objects.filter(oparl_id__isnull=False).all() for body in bodies: logger.info("Updating body {}: {}".format(body, body.oparl_id)) loader = get_loader_from_body(body.oparl_id) importer = Importer(loader, body, ignore_modified=ignore_modified) importer.update(body.oparl_id) importer.force_singlethread = True importer.load_files(body.short_name)
def check_deletion(self): self.new_timestamp = (self.base_timestamp + relativedelta(years=200)).isoformat() self.delete = True self.init_mock_loader() importer = Importer(self.loader, force_singlethread=True) importer.update(self.body_id) for table, count in self.tables.items(): # It doesn't make sense if our Body was deleted if table == Body: continue # We use minus one because we only deleted the top level objects self.assertEqual(table.objects.count(), count - 1, f"{table} {table.objects.all()}")
def check_ignoring_unmodified(self): """ Check that not-modified objects are ignored """ tables_with_modified = [ Body, Organization, Person, Meeting, Paper, File, ] # must have modified and File for #41 newer_now = timezone.now() importer = Importer(self.loader, force_singlethread=True) importer.update(self.body_id) for table in tables_with_modified: logger.debug(table.__name__) self.assertLess(table.objects.first().modified, newer_now)
def test_update_without_change_is_ignored(self): loader = build_mock_loader() importer = Importer(loader, force_singlethread=True) importer.run(self.body["id"]) [paper] = Paper.objects.all() self.assertEqual(paper.history.count(), 1) # The "updated" list still contains the same paper object importer.update(self.body["id"]) [paper] = Paper.objects.all() self.assertEqual(paper.history.count(), 1) # Consistency check: The count is increased if there is actual change update(loader) importer.update(self.body["id"]) [paper] = Paper.objects.all() self.assertEqual(paper.history.count(), 2)
def test_embedded_update(self): loader = build_mock_loader() importer = Importer(loader, force_singlethread=True) importer.run(self.body["id"]) paper_id = make_paper([])["id"] self.assertEqual(Paper.objects.count(), 1) file_ids = Paper.by_oparl_id(paper_id).files.values_list("oparl_id", flat=True) self.assertEqual( sorted(file_ids), [make_file(0)["id"], make_file(1)["id"]]) self.assertEqual(File.objects.count(), 2) update(loader) importer.update(self.body["id"]) self.assertEqual(Paper.objects.count(), 1) self.assertEqual(File.objects.count(), 2) file_ids = Paper.by_oparl_id(paper_id).files.values_list("oparl_id", flat=True) self.assertEqual( sorted(file_ids), [make_file(1)["id"], make_file(2)["id"]]) self.assertEqual(File.objects_with_deleted.count(), 3)