def test_delete(self): id = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) self.assertIsNotNone(dataset.get(id)) dataset.delete(id) self.assertIsNone(dataset.get(id))
def test_delete(self): id = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) self.assertIsNotNone(dataset.get(id)) dataset.delete(id) with self.assertRaises(db.exceptions.NoDataFoundException): dataset.get(id)
def test_add_recordings(self): """ Add recordings to an existing class """ dsid = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) originaldataset = dataset.get(dsid) class_name = "Class #1", recordings = ["1c085555-3805-428a-982f-e14e0a2b18e6"] dataset.add_recordings(dsid, class_name, recordings) updateddataset = dataset.get(dsid) # Class 1 has been updated with the new recording id self.assertEqual(2, len(originaldataset["classes"][0]["recordings"])) expected_recordings = [ "0dad432b-16cc-4bf0-8961-fd31d124b01b", "19e698e7-71df-48a9-930e-d4b1a2026c82", "1c085555-3805-428a-982f-e14e0a2b18e6" ] self.assertEqual(set(expected_recordings), set(updateddataset["classes"][0]["recordings"])) # Class #2 stays the same as `test_data` expected_recordings = [ "fd528ddb-411c-47bc-a383-1f8a222ed213", "96888f9e-c268-4db2-bc13-e29f8b317c20", "ed94c67d-bea8-4741-a3a6-593f20a22eb6" ] self.assertEqual(set(expected_recordings), set(updateddataset["classes"][1]["recordings"]))
def test_delete_nonexistent_class(self): """ Delete a class which doesn't exist in the dataset """ dsid = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) test_data = { "name": "Class #100" } originaldataset = dataset.get(dsid) dataset.delete_class(dsid, test_data) updateddataset = dataset.get(dsid) self.assertEqual(2, len(originaldataset["classes"])) self.assertEqual(2, len(updateddataset["classes"]))
def test_last_edited(self): id = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) ds = dataset.get(id) self.assertEqual(ds['created'], ds['last_edited']) with db.engine.begin() as connection: connection.execute("""UPDATE dataset SET last_edited = now() - interval %s where id = %s""", ('1 hour', id)) ds = dataset.get(id) self.assertTrue(ds['created'] > ds['last_edited']) dataset.update(id, self.test_data, author_id=self.test_user_id) ds_updated = dataset.get(id) self.assertTrue(ds_updated['last_edited'] > ds['last_edited'])
def test_delete_class(self): """ Delete a class from the dataset """ dsid = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) test_data = { "name": "Class #2" } originaldataset = dataset.get(dsid) dataset.delete_class(dsid, test_data) updateddataset = dataset.get(dsid) self.assertEqual(2, len(originaldataset["classes"])) self.assertEqual(1, len(updateddataset["classes"]))
def test_update_metadata(self): dsid = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) existing_dataset = dataset.get(dsid) dataset.update_dataset_meta(dsid, {"name": "new name", "description": "new desc", "public": False}) new_dataset = dataset.get(dsid) self.assertNotEqual(existing_dataset["name"], new_dataset["name"]) self.assertEqual(new_dataset["name"], "new name") self.assertNotEqual(existing_dataset["description"], new_dataset["description"]) self.assertEqual(new_dataset["description"], "new desc") self.assertNotEqual(existing_dataset["public"], new_dataset["public"]) self.assertEqual(new_dataset["public"], False)
def test_delete_recordings_other_class(self): """ If there are two datasets with the same class names, the correct one is deleted. """ ds1id = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) ds2id = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) class_name = "Class #1", recordings = ["19e698e7-71df-48a9-930e-d4b1a2026c82"] dataset.delete_recordings(ds2id, class_name, recordings) # Dataset 1 has both initial recordings, but it's been removed from dataset 2 ds1 = dataset.get(ds1id) ds2 = dataset.get(ds2id) self.assertEqual(2, len(ds1["classes"][0]["recordings"])) self.assertEqual(1, len(ds2["classes"][0]["recordings"]))
def test_delete_recordings(self): """ Delete recordings from a class """ dsid = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) originaldataset = dataset.get(dsid) class_name = "Class #1", recordings = ["19e698e7-71df-48a9-930e-d4b1a2026c82"] dataset.delete_recordings(dsid, class_name, recordings) updateddataset = dataset.get(dsid) # Original dataset has the 2 recordings in Class #1, but the updated one only has 1 remaining self.assertEqual(2, len(originaldataset["classes"][0]["recordings"])) expected_recordings = ["0dad432b-16cc-4bf0-8961-fd31d124b01b"] self.assertEqual(set(expected_recordings), set(updateddataset["classes"][0]["recordings"]))
def test_create_from_dict(self): id = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) ds = dataset.get(id) self.assertIsNotNone(ds) self.assertEqual(len(ds["classes"][0]["recordings"]), 2) self.assertEqual(len(ds["classes"][1]["recordings"]), 3)
def test_update_class(self): dsid = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) test_data = { "name": "Class #1", "new_name": "Different class", "description": "different desc" } originaldataset = dataset.get(dsid) dataset.update_class(dsid, "Class #1", test_data) updateddataset = dataset.get(dsid) self.assertEqual("Class #2", updateddataset["classes"][1]["name"]) self.assertEqual("", updateddataset["classes"][1]["description"]) self.assertEqual("Class #1", originaldataset["classes"][0]["name"]) self.assertEqual("Different class", updateddataset["classes"][0]["name"]) self.assertEqual("different desc", updateddataset["classes"][0]["description"])
def test_add_class(self): """ Add a class to a dataset """ dsid = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) test_data = { "name": "Class #3", "description": "This is the description of class 3" } originaldataset = dataset.get(dsid) dataset.add_class(dsid, test_data) updateddataset = dataset.get(dsid) self.assertEqual(2, len(originaldataset["classes"])) self.assertEqual(3, len(updateddataset["classes"])) expected = copy.deepcopy(test_data) expected["recordings"] = [] expected["id"] = mock.ANY self.assertDictEqual(expected, updateddataset["classes"][2])
def test_create_from_dict_duplicates(self): bad_dict = copy.deepcopy(self.test_data) bad_dict["classes"][0]["recordings"] = [ "0dad432b-16cc-4bf0-8961-fd31d124b01b", "19e698e7-71df-48a9-930e-d4b1a2026c82", "19e698e7-71df-48a9-930e-d4b1a2026c82", ] id = dataset.create_from_dict(bad_dict, author_id=self.test_user_id) ds = dataset.get(id) self.assertEqual(len(ds["classes"][0]["recordings"]), 2) self.assertIn("19e698e7-71df-48a9-930e-d4b1a2026c82", ds["classes"][0]["recordings"])
def test_add_recordings_duplicate(self): """ A recording id which already exists is skipped """ dsid = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) class_name = "Class #1", recordings = ["0dad432b-16cc-4bf0-8961-fd31d124b01b", "1c085555-3805-428a-982f-e14e0a2b18e6"] dataset.add_recordings(dsid, class_name, recordings) updateddataset = dataset.get(dsid) expected_recordings = ["0dad432b-16cc-4bf0-8961-fd31d124b01b", "19e698e7-71df-48a9-930e-d4b1a2026c82", "1c085555-3805-428a-982f-e14e0a2b18e6"] self.assertEqual(set(expected_recordings), set(updateddataset["classes"][0]["recordings"]))
def test_update(self): id = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) updated_dict = copy.deepcopy(self.test_data) updated_dict["classes"][0]["recordings"] = [] # Removing recordings from first class dataset.update( dataset_id=id, dictionary=updated_dict, author_id=self.test_user_id, ) ds = dataset.get(id) # First class shouldn't have any recordings self.assertEqual(len(ds["classes"][0]["recordings"]), 0) self.assertEqual(len(ds["classes"][1]["recordings"]), 3)
def test_add_recordings(self): """ Add recordings to an existing class """ dsid = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) originaldataset = dataset.get(dsid) class_name = "Class #1", recordings = ["1c085555-3805-428a-982f-e14e0a2b18e6"] dataset.add_recordings(dsid, class_name, recordings) updateddataset = dataset.get(dsid) # Class 1 has been updated with the new recording id self.assertEqual(2, len(originaldataset["classes"][0]["recordings"])) expected_recordings = ["0dad432b-16cc-4bf0-8961-fd31d124b01b", "19e698e7-71df-48a9-930e-d4b1a2026c82", "1c085555-3805-428a-982f-e14e0a2b18e6"] self.assertEqual(set(expected_recordings), set(updateddataset["classes"][0]["recordings"])) # Class #2 stays the same as `test_data` expected_recordings = ["fd528ddb-411c-47bc-a383-1f8a222ed213", "96888f9e-c268-4db2-bc13-e29f8b317c20", "ed94c67d-bea8-4741-a3a6-593f20a22eb6"] self.assertEqual(set(expected_recordings), set(updateddataset["classes"][1]["recordings"]))
def test_add_class_with_recordings(self): """ Add a class to a dataset and also add some recordings to it """ dsid = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) test_data = { "name": "Class #3", "description": "This is description of class 3", "recordings": ["1c085555-3805-428a-982f-e14e0a2b18e6"] } dataset.add_class(dsid, test_data) updateddataset = dataset.get(dsid) # Check that both the class details and recordings are in the retrieved dataset expected = copy.deepcopy(test_data) expected["id"] = mock.ANY self.assertDictEqual(expected, updateddataset["classes"][2])
def test_add_class_twice(self): """ A class name which already exists is skipped. """ dsid = dataset.create_from_dict(self.test_data, author_id=self.test_user_id) test_data = { "name": "Class #1", "description": "This is description of class 1", "recordings": ["1c085555-3805-428a-982f-e14e0a2b18e6"] } dataset.add_class(dsid, test_data) updateddataset = dataset.get(dsid) # Class #1 is not added again, but the recording is added to it self.assertEqual(2, len(updateddataset["classes"])) expected_recordings = ["0dad432b-16cc-4bf0-8961-fd31d124b01b", "19e698e7-71df-48a9-930e-d4b1a2026c82", "1c085555-3805-428a-982f-e14e0a2b18e6"] self.assertEqual(set(expected_recordings), set(updateddataset["classes"][0]["recordings"]))