Skip to content

Commit 3f5cad0

Browse files
committed
Merge pull request #53 from FishHooks/Group_from_list_fix
Fixed Group from list issue and SubStatement string match
2 parents 9dd7812 + a63f025 commit 3f5cad0

File tree

5 files changed

+88
-77
lines changed

5 files changed

+88
-77
lines changed

test/remote_lrs_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from tincan.context_activities import ContextActivities
2020
from tincan.score import Score
2121
from tincan.result import Result
22-
from tincan.substatement import Substatement
22+
from tincan.substatement import SubStatement
2323
from tincan.statement_ref import StatementRef
2424
from tincan.about import About
2525
from tincan.statements_result import StatementsResult
@@ -90,7 +90,7 @@ def setUp(self):
9090
duration="PT120S"
9191
)
9292

93-
self.substatement = Substatement(
93+
self.substatement = SubStatement(
9494
actor=self.agent,
9595
verb=self.verb,
9696
object=self.activity,

test/statement_test.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
from tincan.result import Result
2828
from tincan.context import Context
2929
from tincan.attachment import Attachment
30-
from tincan.substatement import Substatement
30+
from tincan.substatement import SubStatement
3131
from tincan.activity import Activity
3232
from tincan.statement_ref import StatementRef
3333

@@ -307,8 +307,8 @@ def test_InitAgentObject(self):
307307
self.assertIsNone(statement.authority)
308308
self.agentVerificationHelper(statement.object)
309309

310-
def test_InitSubstatementObject(self):
311-
statement = Statement(object=Substatement(object_type='Substatement'))
310+
def test_InitSubStatementObject(self):
311+
statement = Statement(object=SubStatement(object_type='SubStatement'))
312312
self.assertIsNone(statement.id)
313313
self.assertIsNone(statement.verb)
314314
self.assertIsNone(statement.actor)
@@ -457,7 +457,7 @@ def attachmentVerificationHelper(self, value):
457457
self.assertEqual(value.usage_type, 'test')
458458

459459
def substatementVerificationHelper(self, value):
460-
self.assertIsInstance(value, Substatement)
460+
self.assertIsInstance(value, SubStatement)
461461
self.assertEqual(value.object_type, 'SubStatement')
462462

463463
def statementrefVerificationHelper(self, value):

test/substatement_test.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,89 +21,89 @@
2121
from tincan.verb import Verb
2222
from tincan.statement_ref import StatementRef
2323
from tincan.activity import Activity
24-
from tincan.substatement import Substatement
24+
from tincan.substatement import SubStatement
2525

26-
class SubstatementTest(unittest.TestCase):
26+
class SubStatementTest(unittest.TestCase):
2727

2828
def test_InitAnonAgentActor(self):
29-
substatement = Substatement(actor={'name':'test'})
29+
substatement = SubStatement(actor={'object_type':'Agent', 'name':'test'})
3030
self.agentVerificationHelper(substatement.actor)
3131

3232
def test_InitAnonGroupActor(self):
33-
substatement = Substatement(actor=[Agent(name='test')])
33+
substatement = SubStatement(actor={'object_type':'Group', 'member':[{"name":"test"}]})
3434
self.groupVerificationHelper(substatement.actor)
3535

3636
def test_InitAnonVerb(self):
37-
substatement = Substatement(verb={'id':'test'})
37+
substatement = SubStatement(verb={'id':'test'})
3838
self.verbVerificationHelper(substatement.verb)
3939

4040
def test_InitAnonObject(self):
41-
substatement = Substatement(object={'id':'test'})
41+
substatement = SubStatement(object={'id':'test'})
4242
self.activityVerificationHelper(substatement.object)
4343

4444
def test_InitAnonAgentObject(self):
45-
substatement = Substatement(object={'object_type':'Agent', 'name':'test'})
45+
substatement = SubStatement(object={'object_type':'Agent', 'name':'test'})
4646
self.agentVerificationHelper(substatement.object)
4747

4848
def test_InitDifferentNamingObject(self):
49-
substatement = Substatement(object={'objectType':'Agent', 'name':'test'})
49+
substatement = SubStatement(object={'objectType':'Agent', 'name':'test'})
5050
self.agentVerificationHelper(substatement.object)
5151

5252
def test_InitObjectType(self):
53-
substatement = Substatement(object_type="SubStatement")
53+
substatement = SubStatement(object_type="SubStatement")
5454
self.assertEqual(substatement.object_type, "SubStatement")
5555

5656
def test_InitAgentActor(self):
57-
substatement = Substatement(actor=Agent(name='test'))
57+
substatement = SubStatement(actor=Agent(name='test'))
5858
self.agentVerificationHelper(substatement.actor)
5959

6060
def test_InitGroupActor(self):
61-
substatement = Substatement(actor=Group(member=[Agent(name='test')]))
61+
substatement = SubStatement(actor=Group(member=[Agent(name='test')]))
6262
self.groupVerificationHelper(substatement.actor)
6363

6464
def test_InitVerb(self):
65-
substatement = Substatement(verb=Verb(id='test'))
65+
substatement = SubStatement(verb=Verb(id='test'))
6666
self.verbVerificationHelper(substatement.verb)
6767

6868
def test_InitAgentObject(self):
69-
substatement = Substatement(object=Agent(name='test'))
69+
substatement = SubStatement(object=Agent(name='test'))
7070
self.agentVerificationHelper(substatement.object)
7171

7272
def test_InitGroupObject(self):
73-
substatement = Substatement(object=Group(member=[Agent(name='test')]))
73+
substatement = SubStatement(object=Group(member=[Agent(name='test')]))
7474
self.groupVerificationHelper(substatement.object)
7575

7676
def test_InitActivityObject(self):
77-
substatement = Substatement(object=Activity(id='test'))
77+
substatement = SubStatement(object=Activity(id='test'))
7878
self.activityVerificationHelper(substatement.object)
7979

8080
def test_InitUnpack(self):
8181
obj = {'object_type':'SubStatement', 'actor':{'name':'test'}, 'verb':{'id':'test'}, 'object':{'id':'test'}}
82-
substatement = Substatement(**obj)
82+
substatement = SubStatement(**obj)
8383
self.assertEqual(substatement.object_type, 'SubStatement')
8484
self.agentVerificationHelper(substatement.actor)
8585
self.verbVerificationHelper(substatement.verb)
8686
self.activityVerificationHelper(substatement.object)
8787

8888
def test_FromJSON(self):
8989
json_str = '{"object_type":"SubStatement", "actor":{"name":"test"}, "verb":{"id":"test"}, "object":{"id":"test"}}'
90-
substatement = Substatement.from_json(json_str)
90+
substatement = SubStatement.from_json(json_str)
9191
self.assertEqual(substatement.object_type, 'SubStatement')
9292
self.agentVerificationHelper(substatement.actor)
9393
self.verbVerificationHelper(substatement.verb)
9494
self.activityVerificationHelper(substatement.object)
9595

9696
def test_ToJSONEmpty(self):
97-
substatement = Substatement()
97+
substatement = SubStatement()
9898
self.assertEqual(substatement.to_json(), '{"objectType": "SubStatement"}')
9999

100100
def test_ToJSON(self):
101-
substatement = Substatement(object_type='Substatement', actor=Agent(name='test'), verb=Verb(id='test'), object=Activity(id='test'))
101+
substatement = SubStatement(object_type='SubStatement', actor=Agent(name='test'), verb=Verb(id='test'), object=Activity(id='test'))
102102
self.assertEqual(substatement.to_json(), '{"verb": {"id": "test"}, "object": {"id": "test"}, "actor": {"name": "test", "objectType": "Agent"}, "objectType": "SubStatement"}')
103103

104104
def test_FromJSONToJSON(self):
105105
json_str = '{"object_type":"SubStatement", "actor":{"name":"test"}, "verb":{"id":"test"}, "object":{"id":"test"}}'
106-
substatement = Substatement.from_json(json_str)
106+
substatement = SubStatement.from_json(json_str)
107107
self.assertEqual(substatement.object_type, 'SubStatement')
108108
self.agentVerificationHelper(substatement.actor)
109109
self.verbVerificationHelper(substatement.verb)
@@ -133,5 +133,5 @@ def activityVerificationHelper(self, value):
133133
self.assertEqual(value.id, 'test')
134134

135135
if __name__ == '__main__':
136-
suite = unittest.TestLoader().loadTestsFromTestCase(SubstatementTest)
136+
suite = unittest.TestLoader().loadTestsFromTestCase(SubStatementTest)
137137
unittest.TextTestRunner(verbosity=2).run(suite)

tincan/statement.py

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from tincan.attachment_list import AttachmentList
2525
from tincan.result import Result
2626
from tincan.context import Context
27-
from tincan.substatement import Substatement
27+
from tincan.substatement import SubStatement
2828
from tincan.statement_ref import StatementRef
2929
from tincan.activity import Activity
3030
from tincan.conversions.iso8601 import make_datetime
@@ -99,10 +99,18 @@ def actor(self):
9999

100100
@actor.setter
101101
def actor(self, value):
102-
if value is not None:
103-
if not isinstance(value, Agent):
104-
if value.get('object_type') == 'Group' or value.get('objectType') == 'Group':
105-
value = Group(member=value.get('member'))
102+
if value is not None and not isinstance(value, Agent) and not isinstance(value, Group):
103+
if isinstance(value, dict):
104+
if 'object_type' in value or 'objectType' in value:
105+
if 'objectType' in value:
106+
value['object_type'] = value['objectType']
107+
value.pop('objectType')
108+
if value['object_type'] == 'Agent':
109+
value = Agent(value)
110+
elif value['object_type'] == 'Group':
111+
value = Group(value)
112+
else:
113+
value = Agent(value)
106114
else:
107115
value = Agent(value)
108116
self._actor = value
@@ -146,29 +154,26 @@ def object(self):
146154
@object.setter
147155
def object(self, value):
148156
if value is not None:
149-
if not isinstance(value, Agent) and not isinstance(value, Group) and not isinstance(value, Substatement) and not isinstance(value, StatementRef) and not isinstance(value, Activity):
150-
if isinstance(value, list):
151-
value = Group(value)
152-
else:
153-
if isinstance(value, dict):
154-
if 'object_type' in value or 'objectType' in value:
155-
if 'objectType' in value:
156-
value['object_type'] = value['objectType']
157-
value.pop('objectType')
158-
if value['object_type'] == 'Agent':
159-
value = Agent(value)
160-
elif value['object_type'] == 'Substatement':
161-
value = Substatement(value)
162-
elif value['object_type'] == 'StatementRef':
163-
value = StatementRef(value)
164-
elif value['object_type'] == 'Activity':
165-
value = Activity(value)
166-
elif value['object_type'] == 'Group':
167-
value = Group(value)
168-
else:
169-
value = Activity(value)
157+
if not isinstance(value, Agent) and not isinstance(value, Group) and not isinstance(value, SubStatement) and not isinstance(value, StatementRef) and not isinstance(value, Activity):
158+
if isinstance(value, dict):
159+
if 'object_type' in value or 'objectType' in value:
160+
if 'objectType' in value:
161+
value['object_type'] = value['objectType']
162+
value.pop('objectType')
163+
if value['object_type'] == 'Agent':
164+
value = Agent(value)
165+
elif value['object_type'] == 'SubStatement':
166+
value = SubStatement(value)
167+
elif value['object_type'] == 'StatementRef':
168+
value = StatementRef(value)
169+
elif value['object_type'] == 'Activity':
170+
value = Activity(value)
171+
elif value['object_type'] == 'Group':
172+
value = Group(value)
170173
else:
171174
value = Activity(value)
175+
else:
176+
value = Activity(value)
172177
self._object = value
173178

174179
@object.deleter

tincan/substatement.py

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from tincan.verb import Verb
1919
from tincan.activity import Activity
2020

21-
class Substatement(SerializableBase):
21+
class SubStatement(SerializableBase):
2222

2323
_props_req = [
2424
'object_type'
@@ -34,7 +34,7 @@ class Substatement(SerializableBase):
3434

3535
@property
3636
def actor(self):
37-
"""Actor for Substatement
37+
"""Actor for SubStatement
3838
3939
:setter: Tries to convert to Agent
4040
:setter type: :mod:`tincan.agent`
@@ -46,8 +46,17 @@ def actor(self):
4646
@actor.setter
4747
def actor(self, value):
4848
if value is not None and not isinstance(value, Agent) and not isinstance(value, Group):
49-
if isinstance(value, list):
50-
value = Group(member=value)
49+
if isinstance(value, dict):
50+
if 'object_type' in value or 'objectType' in value:
51+
if 'objectType' in value:
52+
value['object_type'] = value['objectType']
53+
value.pop('objectType')
54+
if value['object_type'] == 'Agent':
55+
value = Agent(value)
56+
elif value['object_type'] == 'Group':
57+
value = Group(value)
58+
else:
59+
value = Agent(value)
5160
else:
5261
value = Agent(value)
5362
self._actor = value
@@ -58,7 +67,7 @@ def actor(self):
5867

5968
@property
6069
def verb(self):
61-
"""Verb for Substatement
70+
"""Verb for SubStatement
6271
6372
:setter: Tries to convert to Verb
6473
:setter type: :mod:`tincan.verb`
@@ -79,7 +88,7 @@ def verb(self):
7988

8089
@property
8190
def object(self):
82-
"""Object for Substatement
91+
"""Object for SubStatement
8392
8493
:setter: Setter for object
8594
:setter type: :mod:`tincan.Agent` | :mod:`tincan.Group`
@@ -91,24 +100,21 @@ def object(self):
91100
@object.setter
92101
def object(self, value):
93102
if value is not None and not isinstance(value, Agent) and not isinstance(value, Group) and not isinstance(value, Activity):
94-
if isinstance(value, list):
95-
value = Group(member=value)
103+
if isinstance(value, dict):
104+
if 'object_type' in value or 'objectType' in value:
105+
if 'objectType' in value:
106+
value['object_type'] = value['objectType']
107+
value.pop('objectType')
108+
if value['object_type'] == 'Agent':
109+
value = Agent(value)
110+
elif value['object_type'] == 'Activity':
111+
value = Activity(value)
112+
elif value['object_type'] == 'Group':
113+
value = Group(value)
114+
else:
115+
value = Activity(value)
96116
else:
97-
if isinstance(value, dict):
98-
if 'object_type' in value or 'objectType' in value:
99-
if 'objectType' in value:
100-
value['object_type'] = value['objectType']
101-
value.pop('objectType')
102-
if value['object_type'] == 'Agent':
103-
value = Agent(value)
104-
elif value['object_type'] == 'Activity':
105-
value = Activity(value)
106-
elif value['object_type'] == 'Group':
107-
value = Group(value)
108-
else:
109-
value = Activity(value)
110-
else:
111-
value = Activity(value)
117+
value = Activity(value)
112118
self._object = value
113119

114120
@object.deleter
@@ -117,7 +123,7 @@ def object(self):
117123

118124
@property
119125
def object_type(self):
120-
"""Object Type for Substatement. Will always be "SubStatement"
126+
"""Object Type for SubStatement. Will always be "SubStatement"
121127
122128
:setter: Tries to convert to unicode
123129
:setter type: unicode

0 commit comments

Comments
 (0)