Skip to content
Snippets Groups Projects

New Process Dataset Sets management

Merged ml bonhomme requested to merge process-dataset-sets into master
All threads resolved!
2 files
+ 33
11
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -1062,9 +1062,21 @@ class TestDatasetsAPI(FixtureAPITestCase):
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertDictEqual(response.json(), {"detail": "Not found."})
def test_delete_dataset_in_process_forbidden(self):
self.client.force_login(self.user)
with self.assertNumQueries(4):
response = self.client.delete(
reverse("api:dataset-update", kwargs={"pk": self.dataset.pk}),
)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(response.json(), ["This dataset cannot be deleted because at least one of its sets is used in a process."])
self.dataset.refresh_from_db()
def test_delete(self):
self.client.force_login(self.user)
with self.assertNumQueries(8):
# Remove dataset sets from process
ProcessDatasetSet.objects.filter(process_id=self.process.id, set__dataset_id=self.dataset.id).delete()
with self.assertNumQueries(7):
response = self.client.delete(
reverse("api:dataset-update", kwargs={"pk": self.dataset.pk}),
)
@@ -1072,8 +1084,9 @@ class TestDatasetsAPI(FixtureAPITestCase):
with self.assertRaises(Dataset.DoesNotExist):
self.dataset.refresh_from_db()
def test_delete_not_open(self):
self.client.force_login(self.user)
@patch("arkindex.project.mixins.has_access", return_value=True)
def test_delete_not_open(self, has_access_mock):
self.client.force_login(self.write_user)
cases = [DatasetState.Building, DatasetState.Complete, DatasetState.Error]
for state in cases:
with self.subTest(state=state):
@@ -1083,8 +1096,11 @@ class TestDatasetsAPI(FixtureAPITestCase):
response = self.client.delete(
reverse("api:dataset-update", kwargs={"pk": self.dataset.pk}),
)
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertDictEqual(response.json(), {"detail": "Only datasets in an open state can be deleted."})
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(response.json(), ["Only datasets in an open state can be deleted."])
self.assertEqual(has_access_mock.call_count, 1)
self.assertEqual(has_access_mock.call_args, call(self.write_user, self.corpus, Role.Admin.value, skip_public=False))
has_access_mock.reset_mock()
def test_delete_elements(self):
"""
@@ -1096,9 +1112,11 @@ class TestDatasetsAPI(FixtureAPITestCase):
train_set.set_elements.create(element_id=self.page1.id, set="training")
validation_set.set_elements.create(element_id=self.page2.id, set="validation")
validation_set.set_elements.create(element_id=self.page3.id, set="validation")
# Remove dataset sets from process
ProcessDatasetSet.objects.filter(process_id=self.process.id, set__dataset_id=self.dataset.id).delete()
self.client.force_login(self.user)
with self.assertNumQueries(8):
with self.assertNumQueries(7):
response = self.client.delete(
reverse("api:dataset-update", kwargs={"pk": self.dataset.pk}),
)
Loading