Skip to content

Commit

Permalink
Automatically mark unreviewed items as reviewed
Browse files Browse the repository at this point in the history
Fixes doorstop-dev#184

This makes an item’s review status behave like
doorstop-dev#177.
  • Loading branch information
jacebrowning committed Nov 14, 2014
1 parent 9ed8768 commit dcb6add
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .pydevproject
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?><pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 3.0</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Doorstop</pydev_property>
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
<path>/${PROJECT_DIR_NAME}</path>
Expand Down
5 changes: 4 additions & 1 deletion doorstop/core/item.py
Original file line number Diff line number Diff line change
Expand Up @@ -553,7 +553,10 @@ def get_issues(self, **kwargs):
if not self.reviewed:
if settings.CHECK_REVIEW_STATUS:
if not self._data['reviewed']:
yield DoorstopInfo("needs initial review")
if settings.REVIEW_NEW_ITEMS:
self.review()
else:
yield DoorstopInfo("needs initial review")
else:
yield DoorstopWarning("unreviewed changes")

Expand Down
9 changes: 8 additions & 1 deletion doorstop/core/test/test_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,11 +110,13 @@ def test_new(self):
self.assertEqual(0, len(document.items))

@patch('doorstop.settings.REORDER', False)
@patch('doorstop.settings.REVIEW_NEW_ITEMS', False)
def test_validate(self):
"""Verify a document can be validated."""
self.assertTrue(self.document.validate())

@patch('doorstop.settings.REORDER', False)
@patch('doorstop.settings.REVIEW_NEW_ITEMS', False)
def test_issues_count(self):
"""Verify a number of issues are found in a document."""
issues = self.document.issues
Expand All @@ -123,6 +125,7 @@ def test_issues_count(self):
self.assertEqual(12, len(issues))

@patch('doorstop.settings.REORDER', False)
@patch('doorstop.settings.REVIEW_NEW_ITEMS', False)
def test_issues_duplicate_level(self):
"""Verify duplicate item levels are detected."""
expect = DoorstopWarning("duplicate level: 2.1 (REQ002, REQ2-001)")
Expand All @@ -134,6 +137,7 @@ def test_issues_duplicate_level(self):
self.fail("issue not found: {}".format(expect))

@patch('doorstop.settings.REORDER', False)
@patch('doorstop.settings.REVIEW_NEW_ITEMS', False)
def test_issues_skipped_level(self):
"""Verify skipped item levels are detected."""
expect = DoorstopInfo("skipped level: 1.4 (REQ003), 1.6 (REQ004)")
Expand Down Expand Up @@ -215,6 +219,7 @@ def test_reorder_with_start(self):
self.assertListEqual(expected, actual)

@patch('doorstop.settings.REORDER', True)
@patch('doorstop.settings.REVIEW_NEW_ITEMS', False)
def test_validate_with_reordering(self):
"""Verify a document's order is corrected during validation."""
document = core.Document.new(None,
Expand Down Expand Up @@ -248,6 +253,7 @@ def tearDown(self):

@patch('doorstop.settings.REORDER', False)
@patch('doorstop.settings.STAMP_NEW_LINKS', False)
@patch('doorstop.settings.REVIEW_NEW_ITEMS', False)
@patch('doorstop.core.document.Document', DocumentNoSkip)
def test_validate_invalid_link(self):
"""Verify a tree is invalid with a bad link."""
Expand All @@ -257,6 +263,7 @@ def test_validate_invalid_link(self):
self.assertFalse(tree.validate())

@patch('doorstop.settings.REORDER', False)
@patch('doorstop.settings.REVIEW_NEW_ITEMS', False)
def test_validate_long(self):
"""Verify trees can be checked."""
logging.info("tree: {}".format(self.tree))
Expand Down Expand Up @@ -476,6 +483,7 @@ def test_export_csv(self):
self.assertEqual(expected, actual)
move_file(temp, path)

@patch('doorstop.settings.REVIEW_NEW_ITEMS', False)
def test_export_tsv(self):
"""Verify a document can be exported as a TSV file."""
path = os.path.join(FILES, 'exported.tsv')
Expand All @@ -490,7 +498,6 @@ def test_export_tsv(self):
self.assertEqual(expected, actual)
move_file(temp, path)

@unittest.skipUnless(os.getenv(ENV) or not CHECK_EXPORTED_CONTENT, REASON)
def test_export_xlsx(self):
"""Verify a document can be exported as an XLSX file."""
path = os.path.join(FILES, 'exported.xlsx')
Expand Down
3 changes: 3 additions & 0 deletions doorstop/core/test/test_item.py
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,7 @@ def test_validate_reviewed(self):
stamp = 'c6a87755b8756b61731c704c6a7be4a2'
self.assertEqual(stamp, self.item._data['reviewed'])

@patch('doorstop.settings.REVIEW_NEW_ITEMS', False)
def test_validate_reviewed_first(self):
"""Verify that a missing initial review leaves the stamp empty."""
self.item._data['reviewed'] = Stamp(None)
Expand Down Expand Up @@ -723,6 +724,7 @@ def test_validate_tree_error(self):
self.item.tree = mock_tree
self.assertFalse(self.item.validate())

@patch('doorstop.settings.REVIEW_NEW_ITEMS', False)
def test_validate_both(self):
"""Verify an item can be checked against both."""

Expand Down Expand Up @@ -751,6 +753,7 @@ def _iter(self): # pylint: disable=W0613
self.assertTrue(self.item.validate())

@patch('doorstop.settings.STAMP_NEW_LINKS', False)
@patch('doorstop.settings.REVIEW_NEW_ITEMS', False)
def test_validate_both_no_reverse_links(self):
"""Verify an item can be checked against both (no reverse links)."""

Expand Down
3 changes: 3 additions & 0 deletions doorstop/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@
WARN_ALL = False # display info-level issues as warnings
ERROR_ALL = False # display warning-level issues as errors

# Review settings
REVIEW_NEW_ITEMS = True # automatically review new items during validation

# Stamping settings
STAMP_NEW_LINKS = True # automatically stamp links upon creation

Expand Down

0 comments on commit dcb6add

Please sign in to comment.