def test_document_clone_with_single_tag(self): scope = Scope(database=self._database) scope.add_tag(6) self.assertEqual(set(scope.get_concept_document_ids()), {4, 7}) self.assertEqual(scope.get_concept_tag_ids(), [6]) self.assertEqual(set(scope.get_selection_tag_ids()), {1, 2, 3, 4, 5, 6}) self.assertEqual(set(scope.get_selection_only_tag_ids()), {1, 2, 3, 4, 5}) cloned_document = scope.clone_document(2) self.assertEqual(set(scope.get_concept_document_ids()), {4, 7, cloned_document.id}) self.assertEqual(scope.get_concept_tag_ids(), [6]) self.assertEqual(scope.get_selection_document_ids(), []) self.assertEqual(set(scope.get_selection_tag_ids()), {1, 2, 3, 4, 5, 6}) self.assertEqual(set(scope.get_concept_only_document_ids()), {4, 7, cloned_document.id}) self.assertEqual(set(scope.get_selection_only_tag_ids()), {1, 2, 3, 4, 5}) scope.remove_tag(6) self.assertEqual(set(scope.get_concept_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8, cloned_document.id}) self.assertEqual(scope.get_concept_tag_ids(), []) self.assertEqual(scope.get_selection_document_ids(), []) self.assertEqual(set(scope.get_selection_tag_ids()), {1, 2, 3, 4, 5, 6}) self.assertEqual(set(scope.get_concept_only_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8, cloned_document.id}) self.assertEqual(set(scope.get_selection_only_tag_ids()), {1, 2, 3, 4, 5, 6}) scope.select_document(cloned_document.id) self.assertEqual(set(scope.get_concept_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8, cloned_document.id}) self.assertEqual(scope.get_concept_tag_ids(), []) self.assertEqual(scope.get_selection_document_ids(), [cloned_document.id]) self.assertEqual(scope.get_selection_tag_ids(), [6]) self.assertEqual(set(scope.get_concept_only_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8}) self.assertEqual(scope.get_selection_only_tag_ids(), [6])
def test_document_clone_to_root(self): scope = Scope(database=self._database) cloned_document = scope.clone_document(7) self.assertNotEqual(cloned_document.id, 7) self.assertEqual(set(scope.get_concept_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8, cloned_document.id}) self.assertEqual(scope.get_concept_tag_ids(), []) self.assertEqual(scope.get_selection_document_ids(), []) self.assertEqual(set(scope.get_selection_tag_ids()), {1, 2, 3, 4, 5, 6}) self.assertEqual(set(scope.get_concept_only_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8, cloned_document.id}) self.assertEqual(set(scope.get_selection_only_tag_ids()), {1, 2, 3, 4, 5, 6}) scope.select_document(cloned_document.id) self.assertEqual(set(scope.get_concept_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8, cloned_document.id}) self.assertEqual(scope.get_concept_tag_ids(), []) self.assertEqual(scope.get_selection_document_ids(), [cloned_document.id]) self.assertEqual(scope.get_selection_tag_ids(), []) self.assertEqual(set(scope.get_concept_only_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8}) self.assertEqual(scope.get_selection_only_tag_ids(), [])
def test_invalid_document_clone(self): scope = Scope(database=self._database) with self.assertRaises(ValueError): _ = scope.clone_document(9)
def test_document_clone_with_multiple_tags(self): scope = Scope(database=self._database) scope.add_tag(2) scope.add_tag(3) scope.add_tag(6) self.assertEqual(scope.get_concept_document_ids(), []) self.assertEqual(set(scope.get_concept_tag_ids()), {2, 3, 6}) self.assertEqual(scope.get_selection_document_ids(), []) self.assertEqual(set(scope.get_selection_tag_ids()), {1, 2, 3, 4, 5, 6}) self.assertEqual(scope.get_concept_only_document_ids(), []) self.assertEqual(set(scope.get_selection_only_tag_ids()), {1, 4, 5}) cloned_document = scope.clone_document(6) self.assertNotEqual(cloned_document.id, 6) self.assertEqual(scope.get_concept_document_ids(), [cloned_document.id]) self.assertEqual(set(scope.get_concept_tag_ids()), {2, 3, 6}) self.assertEqual(scope.get_selection_document_ids(), []) self.assertEqual(set(scope.get_selection_tag_ids()), {1, 2, 3, 4, 5, 6}) self.assertEqual(scope.get_concept_only_document_ids(), [cloned_document.id]) self.assertEqual(set(scope.get_selection_only_tag_ids()), {1, 4, 5}) scope.select_document(cloned_document.id) self.assertEqual(scope.get_concept_document_ids(), [cloned_document.id]) self.assertEqual(set(scope.get_concept_tag_ids()), {2, 3, 6}) self.assertEqual(scope.get_selection_document_ids(), [cloned_document.id]) self.assertEqual(set(scope.get_selection_tag_ids()), {2, 3, 6}) self.assertEqual(scope.get_concept_only_document_ids(), []) self.assertEqual(scope.get_selection_only_tag_ids(), []) scope.remove_tag(3) self.assertEqual(set(scope.get_concept_document_ids()), {4, cloned_document.id}) self.assertEqual(set(scope.get_concept_tag_ids()), {2, 6}) self.assertEqual(scope.get_selection_document_ids(), [cloned_document.id]) self.assertEqual(set(scope.get_selection_tag_ids()), {2, 3, 6}) self.assertEqual(scope.get_concept_only_document_ids(), [4]) self.assertEqual(scope.get_selection_only_tag_ids(), [3]) scope.remove_tag(2) self.assertEqual(set(scope.get_concept_document_ids()), {4, 7, cloned_document.id}) self.assertEqual(set(scope.get_concept_tag_ids()), {6}) self.assertEqual(scope.get_selection_document_ids(), [cloned_document.id]) self.assertEqual(set(scope.get_selection_tag_ids()), {2, 3, 6}) self.assertEqual(set(scope.get_concept_only_document_ids()), {4, 7}) self.assertEqual(set(scope.get_selection_only_tag_ids()), {2, 3}) scope.remove_tag(6) self.assertEqual(set(scope.get_concept_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8, cloned_document.id}) self.assertEqual(scope.get_concept_tag_ids(), []) self.assertEqual(scope.get_selection_document_ids(), [cloned_document.id]) self.assertEqual(set(scope.get_selection_tag_ids()), {2, 3, 6}) self.assertEqual(set(scope.get_concept_only_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8}) self.assertEqual(set(scope.get_selection_only_tag_ids()), {2, 3, 6}) scope.deselect_document(cloned_document.id) self.assertEqual(set(scope.get_concept_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8, cloned_document.id}) self.assertEqual(scope.get_concept_tag_ids(), []) self.assertEqual(scope.get_selection_document_ids(), []) self.assertEqual(set(scope.get_selection_tag_ids()), {1, 2, 3, 4, 5, 6}) self.assertEqual(set(scope.get_concept_only_document_ids()), {1, 2, 3, 4, 5, 6, 7, 8, cloned_document.id}) self.assertEqual(set(scope.get_selection_only_tag_ids()), {1, 2, 3, 4, 5, 6}) document_counts = {1: 4, 2: 3 + 1, 3: 3 + 1, 4: 2, 5: 3, 6: 2 + 1} for tag_id, document_count in document_counts.items(): scope.add_tag(tag_id) self.assertEqual(len(scope.get_concept_documents()), document_count) scope.remove_tag(tag_id)