← Back to team overview

oship-dev team mailing list archive

[Branch ~oship-dev/oship/devel] Rev 498: Added invariants in the composition class and tests for it. Bug #630487

 

------------------------------------------------------------
revno: 498
committer: Wagner Francisco Mezaroba <wagner@wagner-laptop>
branch nick: oship
timestamp: Mon 2010-09-27 23:59:38 -0300
message:
  Added invariants in the composition class and tests for it. Bug #630487
added:
  src/oship/openehr/rm/composition/tests/composition.py
modified:
  src/oship/openehr/rm/composition/__init__.py
  src/oship/openehr/rm/composition/tests/composition.txt


--
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/composition/__init__.py'
--- src/oship/openehr/rm/composition/__init__.py	2010-08-06 21:24:11 +0000
+++ src/oship/openehr/rm/composition/__init__.py	2010-09-28 02:59:38 +0000
@@ -15,8 +15,21 @@
 
     grok.implements(IComposition)
 
-    def __init__(self,content,context,composer,cat,lang,terr,uid,atnodeid,name,atdetails,fdraudit,links):
-        Locatable.__init__(self,uid,atnodeid,name,atdetails,fdraudit,links)
+    def __init__(self,content,context,composer,cat,lang,terr,uid,atnodeid,name,atdetails,fdraudit,links, parent=None):
+        Locatable.__init__(self,uid,atnodeid,name,atdetails,fdraudit,links, parent)
+        if not self.isArchetypeRoot():
+            raise ValueError(u'instance must be an archetype root')     
+        if content is not None and (len(content) == 0):
+            raise ValueError(u'Content_valid: content /= Void implies not content.is_empty')
+        if cat is None: #it's necessary to finish terminology service to finish this invariant
+            raise ValueError(u'Category_validity: category /= Void')
+        if lang is None: #it's necessary to finish terminology service to finish this invariant
+            raise ValueError(u'Language_valid: language /= Void')
+        if terr is None: #it's necessary to finish terminology service to finish this invariant
+            raise ValueError(u'Territory_valid: territory /= Void')
+        if parent is not None:
+            raise ValueError(u'parent must be None')
+
         self.content=content
         self.context=context
         self.composer=composer

=== added file 'src/oship/openehr/rm/composition/tests/composition.py'
--- src/oship/openehr/rm/composition/tests/composition.py	1970-01-01 00:00:00 +0000
+++ src/oship/openehr/rm/composition/tests/composition.py	2010-09-28 02:59:38 +0000
@@ -0,0 +1,85 @@
+"""
+Do a Python test on the app.
+
+:Test-Layer: python
+"""
+
+import unittest
+import grok
+
+from oship.openehr.rm.composition import Composition
+from oship.openehr.rm.common.generic import PartyProxy
+from oship.openehr.rm.datatypes.text import CodePhrase
+from oship.openehr.rm.support.identification import TerminologyId
+from oship.openehr.rm.common.archetyped import Archetyped
+
+class CompositionTest(unittest.TestCase):
+
+    def setUp(self):
+        self.emptyList = []
+
+    def tearDown(self):
+        self.emptyList = None
+
+    def testShouldNotInitializeWithEmptyContentList(self):
+        self.assertRaises(ValueError, Composition, self.emptyList, self.context(), self.composer(), self.category(), self.language(), self.territory(), self.uid(), self.atnodeid(), self.name(), self.atdetails(), self.fdraudit(), self.links())
+
+    def testShouldInitializeWithNullContentList(self):
+        Composition(None, self.context(), self.composer(), self.category(), self.language(), self.territory(), self.uid(), self.atnodeid(), self.name(), self.atdetails(), self.fdraudit(), self.links())
+
+    def testShouldNotInitializeWithNullCategory(self):
+        self.assertRaises(ValueError, Composition, self.content(), self.context(), self.composer(), None, self.language(), self.territory(), self.uid(), self.atnodeid(), self.name(), self.atdetails(), self.fdraudit(), self.links())
+
+    def testShouldNotInitializeWithNullLanguage(self):
+        self.assertRaises(ValueError, Composition, self.content(), self.context(), self.composer(), self.category, None, self.territory(), self.uid(), self.atnodeid(), self.name(), self.atdetails(), self.fdraudit(), self.links())
+
+    def testShouldNotInitializeWithNullTerritory(self):
+        self.assertRaises(ValueError, Composition, self.content(), self.context(), self.composer(), self.category, self.language(), None, self.uid(), self.atnodeid(), self.name(), self.atdetails(), self.fdraudit(), self.links())
+
+    def testShouldNotInitializeIfIsArchetypeRoot(self):
+        self.assertRaises(ValueError, Composition, self.content(), self.context(), self.composer(), self.category, self.language(), self.territory(), self.uid(), self.atnodeid(), self.name(), None, self.fdraudit(), self.links())
+
+    def testShouldNotInitializeWithNotNullParent(self):
+        notNullParent = u'parent'
+        self.assertRaises(ValueError, Composition, self.content(), self.context(), self.composer(), self.category, self.language(), self.territory(), self.uid(), self.atnodeid(), self.name(), self.atdetails(), self.fdraudit(), self.links(), notNullParent)
+
+    def testShouldInitializeWithValidValues(self):
+        Composition(self.content(), self.context(), self.composer(), self.category, self.language(), self.territory(), self.uid(), self.atnodeid(), self.name(), self.atdetails(), self.fdraudit(), self.links())
+
+    def content(self):
+        pass
+
+    def context(self):
+        return None
+
+    def composer(self):
+        return None
+
+    def category(self):
+        return PartyProxy(None)
+
+    def language(self):
+        tid = TerminologyId(u'terminology id')
+        return CodePhrase(tid,u'language')
+
+    def territory(self):
+        tid = TerminologyId(u'terminology id')
+        return CodePhrase(tid,u'territory')
+
+    def uid(self):
+        return None
+
+    def atnodeid(self):
+        return None
+
+    def name(self):
+        return None
+
+    def atdetails(self):
+        return Archetyped(None,None,None)
+
+    def fdraudit(self):
+        return None
+
+    def links(self):
+        return None

=== modified file 'src/oship/openehr/rm/composition/tests/composition.txt'
--- src/oship/openehr/rm/composition/tests/composition.txt	2010-08-06 21:24:11 +0000
+++ src/oship/openehr/rm/composition/tests/composition.txt	2010-09-28 02:59:38 +0000
@@ -4,13 +4,14 @@
 >>> from oship.openehr.rm.composition.content.navigation import Section
 >>> from oship.openehr.rm.composition import EventContext, Composition
 >>> from oship.openehr.rm.composition.interfaces import IComposition
->>> from oship.openehr.rm.support.identification import TerminologyId
+>>> from oship.openehr.rm.support.identification import TerminologyId, ArchetypeId, TemplateId
 >>> from oship.openehr.rm.datatypes.text import CodePhrase,TermMapping,DvText,DvCodedText
 >>> from oship.openehr.rm.datatypes.quantity.datetime import DvDateTime
 >>> from oship.openehr.rm.datatypes.uri import DvUri
 >>> from oship.openehr.rm.data_structures.history import History
 >>> from oship.openehr.rm.data_structures.item_structure import ItemSingle
 >>> from oship.openehr.rm.common.generic import PartySelf,PartyIdentified,Participation
+>>> from oship.openehr.rm.common.archetyped import Archetyped
 >>> origin_date = DvDateTime(u'2009-09-09T00:00:00',0,None,None,None,None)
 >>> data = History(origin_date, ItemSingle)
 >>> tid1 = TerminologyId(u'ISO_639-1') 
@@ -39,7 +40,8 @@
 >>> tid3 = TerminologyId(u'ISO_3166') 
 >>> territory = CodePhrase(tid3,u'US') 
 >>> compositionEntryName = DvText(u"Composition", None, u"font-family:Arial", None, None, None)
->>> composition = Composition([section,],eventContext,composer,category,lang,territory,None,u'at0005',compositionEntryName,None,None,None)
+>>> compositionArchetypeDetails = Archetyped(None,None,None)
+>>> composition = Composition([section,],eventContext,composer,category,lang,territory,None,u'at0005',compositionEntryName,compositionArchetypeDetails,None,None)
 >>> composition.content[0].name.value
 u'Section 1'
 >>> composition.content[0].items[0].name.value