def test_snapshot_update_is_idempotent(self): """Test that nothing has changed if there's nothing to update""" self._import_file("snapshotter_create.csv") program = db.session.query( models.Program).filter(models.Program.slug == "Prog-13211").one() self.create_audit(program) audit = db.session.query(models.Audit).filter( models.Audit.title == "Snapshotable audit").one() snapshots = db.session.query(models.Snapshot).filter( models.Snapshot.parent_type == "Audit", models.Snapshot.parent_id == audit.id, ) self.assertEqual(snapshots.count(), len(Types.all) * 3) audit = self.refresh_object(audit) self.api.modify_object(audit, {"snapshots": {"operation": "upsert"}}) old_snapshots = {s.id: s for s in snapshots} snapshots = db.session.query(models.Snapshot).filter( models.Snapshot.parent_type == "Audit", models.Snapshot.parent_id == audit.id, ) new_snapshots = {s.id: s for s in snapshots} for _id, snapshot in new_snapshots.items(): self.assertEqual(snapshot_identity(old_snapshots[_id], snapshot), True)
def test_snapshot_update_is_idempotent(self, model_type): """Test that nothing has changed if there's nothing to update""" with factories.single_commit(): program = factories.ProgramFactory(title="Test Program") model_factory = factories.get_model_factory(model_type) model_object = model_factory( title="Test Snapshot - {}".format(model_type)) factories.RelationshipFactory(source=program, destination=model_object) self.create_audit(program) audit = db.session.query(models.Audit).filter( models.Audit.title == "Snapshotable audit").one() snapshots = db.session.query(models.Snapshot).filter( models.Snapshot.parent_type == "Audit", models.Snapshot.parent_id == audit.id, ) audit = self.refresh_object(audit) self.api.modify_object(audit, {"snapshots": {"operation": "upsert"}}) old_snapshots = {s.id: s for s in snapshots} snapshots = db.session.query(models.Snapshot).filter( models.Snapshot.parent_type == "Audit", models.Snapshot.parent_id == audit.id, ) new_snapshots = {s.id: s for s in snapshots} for _id, snapshot in new_snapshots.items(): self.assertEqual(snapshot_identity(old_snapshots[_id], snapshot), True)
def test_snapshot_update_is_idempotent(self): """Test that nothing has changed if there's nothing to update""" self._check_csv_response(self._import_file("snapshotter_create.csv"), {}) program = db.session.query(models.Program).filter( models.Program.slug == "Prog-13211" ).one() self.create_audit(program) audit = db.session.query(models.Audit).filter( models.Audit.title == "Snapshotable audit").one() snapshots = db.session.query(models.Snapshot).filter( models.Snapshot.parent_type == "Audit", models.Snapshot.parent_id == audit.id, ) self.assertEqual(snapshots.count(), (len(Types.all) - len(Types.external)) * 3) audit = self.refresh_object(audit) self.api.modify_object(audit, { "snapshots": { "operation": "upsert" } }) old_snapshots = {s.id: s for s in snapshots} snapshots = db.session.query(models.Snapshot).filter( models.Snapshot.parent_type == "Audit", models.Snapshot.parent_id == audit.id, ) new_snapshots = {s.id: s for s in snapshots} for _id, snapshot in new_snapshots.items(): self.assertEqual(snapshot_identity(old_snapshots[_id], snapshot), True)