def test_find_ref_error(self): """Verify an error occurs when no external reference found.""" self.item.ref = "not" "found" # space to avoid matching in this file self.item.tree = Mock() self.item.tree.vcs = WorkingCopy(EMPTY) # Act and assert self.assertRaises(DoorstopError, self.item.find_ref)
def test_find_ref_error_multiple(self): """Verify an error occurs when no external reference found.""" self.item.references = [{"path": "this/path/does/not/exist.yml"}] self.item.tree = Mock() self.item.tree.vcs = WorkingCopy(EMPTY) # Act and assert self.assertRaises(DoorstopError, self.item.find_references)
def test_find_skip_self(self): """Verify reference searches skip the item's file.""" self.item.path = __file__ self.item.ref = "148710938710289248" # random and unique to this file self.item.tree = Mock() self.item.tree.vcs = WorkingCopy(EMPTY) self.item.tree.vcs._path_cache = [(__file__, 'filename', 'relpath')] # Act and assert self.assertRaises(DoorstopError, self.item.find_ref)
def test_find_ref(self): """Verify an item's reference can be found.""" self.item.ref = "REF" "123" # space to avoid matching in this file self.item.tree = Mock() self.item.tree.vcs = WorkingCopy(EXTERNAL) # Act relpath, line = self.item.find_ref() # Assert self.assertEqual('text.txt', os.path.basename(relpath)) self.assertEqual(3, line)
def test_find_ref_filename(self): """Verify an item's reference can also be a filename.""" self.item.ref = "text.txt" self.item.tree = Mock() self.item.tree.vcs = WorkingCopy(FILES) self.item.tree.vcs._ignores_cache = ["*published*"] # Act relpath, line = self.item.find_ref() # Assert self.assertEqual('text.txt', os.path.basename(relpath)) self.assertEqual(None, line)
def test_find_references_invalid_keyword(self): """Verify an item's references can be found.""" self.item.references = [ {"path": "files/REQ001.yml", "keyword": "INVALID KEYWORD"} ] self.item.root = TESTS_ROOT self.item.tree = Mock() self.item.tree.vcs = WorkingCopy(TESTS_ROOT) with self.assertRaises(DoorstopError) as context: self.item.find_references() self.assertTrue('external reference not found' in str(context.exception))
def test_find_file_reference_should_skip_item_path(self): root = TESTS_ROOT tree = Mock() tree.vcs = WorkingCopy(TESTS_ROOT) item_path = os.path.join('path', 'to', 'RQ001.yml') # Act reference_finder = ReferenceFinder() with self.assertRaises(DoorstopError) as context: reference_finder.find_file_reference(item_path, root, tree, item_path) self.assertTrue( 'external reference not found' in str(context.exception))
def test_find_file_reference_does_not_exist(self): reference_path = "reference-that-does-not-exist.yml" root = TESTS_ROOT tree = Mock() tree.vcs = WorkingCopy(TESTS_ROOT) item_path = os.path.join('path', 'to', 'RQ001.yml') reference_finder = ReferenceFinder() with self.assertRaises(DoorstopError) as context: reference_finder.find_file_reference(reference_path, root, tree, item_path) self.assertTrue( 'external reference not found' in str(context.exception))
def test_find_file_reference_invalid_keyword_given(self): keyword = "Invalid keyword" reference_path = "files/REQ001.yml" root = TESTS_ROOT tree = Mock() tree.vcs = WorkingCopy(TESTS_ROOT) item_path = os.path.join('path', 'to', 'RQ001.yml') reference_finder = ReferenceFinder() with self.assertRaises(DoorstopError) as context: reference_finder.find_file_reference(reference_path, root, tree, item_path, keyword) self.assertTrue( 'external reference not found' in str(context.exception))
def test_find_file_reference_with_keyword(self): reference_path = "files/REQ006.yml" root = TESTS_ROOT tree = Mock() tree.vcs = WorkingCopy(TESTS_ROOT) item_path = os.path.join('path', 'to', 'RQ001.yml') # Act reference_finder = ReferenceFinder() path, line = reference_finder.find_file_reference( reference_path, root, tree, item_path, 'REF123') # Assert self.assertEqual(path, 'files/REQ006.yml') self.assertEqual(line, 10)
def test_find_file_reference_valid_keyword_given(self): keyword = "Lorem ipsum dolor sit amet" reference_path = "files/REQ001.yml" root = TESTS_ROOT tree = Mock() tree.vcs = WorkingCopy(TESTS_ROOT) item_path = os.path.join('path', 'to', 'RQ001.yml') # Act reference_finder = ReferenceFinder() path, line = reference_finder.find_file_reference( reference_path, root, tree, item_path, keyword) # Assert self.assertEqual(path, 'files/REQ001.yml') self.assertEqual(line, 12)
def test_find_references_valid_keyword(self): """Verify an item's references can be found.""" keyword = "Lorem ipsum dolor sit amet" self.item.references = [{"path": "files/REQ001.yml", "keyword": keyword}] self.item.root = TESTS_ROOT self.item.tree = Mock() self.item.tree.vcs = WorkingCopy(TESTS_ROOT) # Act ref = self.item.find_references() # Assert self.assertEqual(1, len(ref)) ref_path, ref_keyword_line = ref[0] self.assertEqual(ref_path, 'files/REQ001.yml') self.assertEqual(ref_keyword_line, 12)
def test_find_references(self): """Verify an item's references can be found.""" self.item.references = [ {"path": "files/REQ001.yml"}, {"path": "files/REQ002.yml"}, ] self.item.root = TESTS_ROOT self.item.tree = Mock() self.item.tree.vcs = WorkingCopy(TESTS_ROOT) # Act ref = self.item.find_references() # Assert self.assertEqual(2, len(ref)) relpath_1, keyword_line_1 = ref[0] self.assertEqual(relpath_1, 'files/REQ001.yml') self.assertEqual(keyword_line_1, None) relpath_2, keyword_line_2 = ref[1] self.assertEqual(relpath_2, 'files/REQ002.yml') self.assertEqual(keyword_line_2, None)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.tree = Mock() self.tree.vcs = WorkingCopy(None)