changeset 5199:cb3fa867418f

db: add explicit NOT NULL constraint for the implicit invariant that all status changes have a comment
author Mads Kiilerich <madski@unity3d.com>
date Fri, 19 Jun 2015 18:06:39 +0200
parents 93e055489e68
children a7ac467edbf5
files kallithea/model/db.py kallithea/tests/other/test_validators.py
diffstat 2 files changed, 14 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/model/db.py	Fri Jun 19 18:06:39 2015 +0200
+++ b/kallithea/model/db.py	Fri Jun 19 18:06:39 2015 +0200
@@ -2233,7 +2233,7 @@
     user_id = Column(Integer(), ForeignKey('users.user_id'), nullable=False, unique=None)
     revision = Column(String(40), nullable=False)
     status = Column(String(128), nullable=False, default=DEFAULT)
-    changeset_comment_id = Column(Integer(), ForeignKey('changeset_comments.comment_id'))
+    changeset_comment_id = Column(Integer(), ForeignKey('changeset_comments.comment_id'), nullable=False)
     modified_at = Column(DateTime(), nullable=False, default=datetime.datetime.now)
     version = Column(Integer(), nullable=False, default=0)
     pull_request_id = Column(Integer(), ForeignKey('pull_requests.pull_request_id'), nullable=True)
--- a/kallithea/tests/other/test_validators.py	Fri Jun 19 18:06:39 2015 +0200
+++ b/kallithea/tests/other/test_validators.py	Fri Jun 19 18:06:39 2015 +0200
@@ -8,7 +8,7 @@
 
 from kallithea.model.meta import Session
 from kallithea.model.repo_group import RepoGroupModel
-from kallithea.model.db import ChangesetStatus, Repository
+from kallithea.model.db import ChangesetStatus, ChangesetComment, Repository
 from kallithea.model.changeset_status import ChangesetStatusModel
 from kallithea.tests.fixture import Fixture
 
@@ -233,16 +233,23 @@
         self.assertEqual('DN_attr', validator.to_python('DN_attr'))
 
     def test_NotReviewedRevisions(self):
-        repo_id = Repository.get_by_repo_name(HG_REPO).repo_id
-        validator = v.NotReviewedRevisions(repo_id)
+        user = ChangesetStatusModel()._get_user(TEST_USER_ADMIN_LOGIN)
+        repo = Repository.get_by_repo_name(HG_REPO)
+        validator = v.NotReviewedRevisions(repo.repo_id)
         rev = '0' * 40
         # add status for a rev, that should throw an error because it is already
         # reviewed
+        new_comment = ChangesetComment()
+        new_comment.repo = repo
+        new_comment.author = user
+        new_comment.text = u''
+        Session().add(new_comment)
+        Session().flush()
         new_status = ChangesetStatus()
-        new_status.author = ChangesetStatusModel()._get_user(TEST_USER_ADMIN_LOGIN)
-        new_status.repo = ChangesetStatusModel()._get_repo(HG_REPO)
+        new_status.author = user
+        new_status.repo = repo
         new_status.status = ChangesetStatus.STATUS_APPROVED
-        new_status.comment = None
+        new_status.comment = new_comment
         new_status.revision = rev
         Session().add(new_status)
         Session().commit()