oship-dev team mailing list archive
-
oship-dev team
-
Mailing list archive
-
Message #01616
[Branch ~oship-dev/oship/devel] Rev 514: Enforced invariants in the Version class and created represetation method for it
------------------------------------------------------------
revno: 514
fixes bug(s): https://launchpad.net/bugs/625975
committer: Wagner Francisco Mezaroba <wagner@wagner-laptop>
branch nick: oship
timestamp: Sun 2010-11-21 01:20:28 -0200
message:
Enforced invariants in the Version class and created represetation method for it
modified:
src/oship/openehr/rm/common/change_control/__init__.py
src/oship/openehr/rm/common/change_control/tests/originalversion.py
--
lp:oship
https://code.launchpad.net/~oship-dev/oship/devel
Your team OSHIP Development Team is subscribed to branch lp:oship.
To unsubscribe from this branch go to https://code.launchpad.net/~oship-dev/oship/devel/+edit-subscription
=== modified file 'src/oship/openehr/rm/common/change_control/__init__.py'
--- src/oship/openehr/rm/common/change_control/__init__.py 2010-09-29 00:55:16 +0000
+++ src/oship/openehr/rm/common/change_control/__init__.py 2010-11-21 03:20:28 +0000
@@ -5,6 +5,7 @@
from oship.openehr.rm.support.identification import HierObjectId
from interfaces import *
+from oship.openehr.rm.support.terminology import TerminologyService
class Contribution(grok.Container):
u"""
@@ -36,11 +37,18 @@
grok.implements(IVersion)
- def __init__(self, uid, preVid, data, lcstate, caudit, contribution, sig):
+ def __init__(self, uid, preVid, data, lcstate, caudit, contribution, sig, terminologyService=None):
if uid.versionTreeId().isFirst() == (preVid!=None):
raise ValueError(u"If this is the first version it's not possible to have a preceding version uid and vice-versa.")
if contribution == None or contribution.type != 'CONTRIBUTION':
raise ValueError(u'Contribution must not be None and its type must be CONTRIBUTION')
+ if lcstate is None:
+ raise AttributeError(u'lcstate must not be None')
+
+ #TODO remove this consistence when we finish implementing the terminologyService
+ if terminologyService is not None:
+ if not terminologyService.terminology(TerminologyService.OPENEHR).hasCodeForGroupId('group_id_version_lifecycle_state', lcstate.definingCode):
+ raise AttributeError(u'lifecycle state must be in terminology service')
self.uid=uid
self.precedingVersionId=preVid
self.data=data
@@ -58,6 +66,9 @@
def canonicalForm(self):
raise NotImplementedError
+ def __repr__(self):
+ return 'OriginalVersion(uid: %s, precedingVersionId: %s, data: %s, lifecycleState: %s, commitAudit: %s, contribution: %s, signature: %s)' % (self.uid, self.precedingVersionId, self.data, self.lifecycleState, self.commitAudit, self.contribution, self.signature)
+
class OriginalVersion(Version):
@@ -67,8 +78,8 @@
grok.implements(IOriginalVersion)
- def __init__(self, uid, previd,otherInputVersionUids,data,attestations,lifecycleState,caudit,contribution,sig):
- Version.__init__(self,uid,previd,data,lifecycleState,caudit,contribution,sig)
+ def __init__(self, uid, previd,otherInputVersionUids,data,attestations,lifecycleState,caudit,contribution,sig, terminologyService=None):
+ Version.__init__(self,uid,previd,data,lifecycleState,caudit,contribution,sig, terminologyService)
if attestations is not None and (len(attestations) == 0):
raise ValueError(u'Attestations must not be empty')
if otherInputVersionUids is not None and (len(otherInputVersionUids) == 0):
=== modified file 'src/oship/openehr/rm/common/change_control/tests/originalversion.py'
--- src/oship/openehr/rm/common/change_control/tests/originalversion.py 2010-09-29 00:55:16 +0000
+++ src/oship/openehr/rm/common/change_control/tests/originalversion.py 2010-11-21 03:20:28 +0000
@@ -58,3 +58,32 @@
emptyList = []
self.assertRaises(ValueError, OriginalVersion, self.initialVersionId, None, emptyList, self.data, None, self.lifecycleState,self.caudit,self.contribution,None)
+ def testShouldNotInitializeWithNoneLcstate(self):
+ self.assertRaises(AttributeError, OriginalVersion, self.initialVersionId, None, None, self.data, None, None, self.caudit, self.contribution, None)
+
+ def testShouldNotInitializeWithInvalidLcstate(self):
+ self.assertRaises(AttributeError, OriginalVersion, self.initialVersionId, None, None, self.data, None, lcstate(), self.caudit, self.contribution, None, DummyTerminologyService(False))
+
+ def testShouldInitializeWithValidLcstate(self):
+ version = OriginalVersion(self.initialVersionId, None, None, self.data, None, lcstate(), self.caudit, self.contribution, None, DummyTerminologyService(True))
+
+
+class DummyTerminologyService(object):
+ def __init__(self, returnValue):
+ self.returnValue = returnValue
+
+ def terminology(self, code):
+ return DummyTerminologyAccess(self.returnValue)
+
+class DummyTerminologyAccess(object):
+ def __init__(self, returnValue):
+ self.returnValue = returnValue
+
+ def hasCodeForGroupId(self, groupId,code):
+ return self.returnValue
+
+
+def lcstate():
+ terminologyId = TerminologyId(u'terminology(1)')
+ codeString = u'lifecycle state'
+ return DvCodedText(CodePhrase(terminologyId, codeString), u'value')