ims_caliper 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +37 -0
  3. data/.idea/caliper-ruby.iml +98 -0
  4. data/.idea/encodings.xml +5 -0
  5. data/.idea/misc.xml +5 -0
  6. data/.idea/modules.xml +9 -0
  7. data/.idea/scopes/scope_settings.xml +5 -0
  8. data/.idea/vcs.xml +7 -0
  9. data/Gemfile +12 -1
  10. data/Gemfile.lock +42 -1
  11. data/LICENSE +67 -0
  12. data/NOTICE +15 -0
  13. data/README.md +13 -5
  14. data/caliper.gemspec +2 -8
  15. data/lib/caliper/defaults.rb +4 -4
  16. data/lib/caliper/entities/annotation/annotation.rb +14 -4
  17. data/lib/caliper/entities/annotation/bookmark_annotation.rb +14 -4
  18. data/lib/caliper/entities/annotation/highlight_annotation.rb +14 -3
  19. data/lib/caliper/entities/annotation/shared_annotation.rb +12 -3
  20. data/lib/caliper/entities/annotation/tag_annotation.rb +13 -3
  21. data/lib/caliper/entities/assessment/assessment.rb +27 -0
  22. data/lib/caliper/entities/assessment/assessment_item.rb +26 -0
  23. data/lib/caliper/entities/assignable/assignable_digital_resource.rb +47 -0
  24. data/lib/caliper/entities/assignable/attempt.rb +32 -0
  25. data/lib/caliper/entities/digital_resource.rb +36 -35
  26. data/lib/caliper/entities/entity.rb +50 -36
  27. data/lib/caliper/entities/foaf/agent.rb +1 -1
  28. data/lib/caliper/entities/jsonable.rb +56 -0
  29. data/lib/caliper/entities/learning_objective.rb +26 -0
  30. data/lib/caliper/entities/lis/course_offering.rb +30 -0
  31. data/lib/caliper/entities/lis/course_section.rb +27 -15
  32. data/lib/caliper/entities/lis/group.rb +27 -0
  33. data/lib/caliper/entities/lis/membership.rb +32 -0
  34. data/lib/caliper/entities/lis/organization.rb +20 -17
  35. data/lib/caliper/entities/lis/person.rb +23 -10
  36. data/lib/caliper/entities/lis/roles.rb +77 -0
  37. data/lib/caliper/entities/lis/status.rb +19 -0
  38. data/lib/caliper/entities/media/audio_object.rb +21 -0
  39. data/lib/caliper/entities/media/image_object.rb +21 -0
  40. data/lib/caliper/entities/media/media_location.rb +23 -0
  41. data/lib/caliper/entities/media/media_object.rb +38 -0
  42. data/lib/caliper/entities/media/video_object.rb +21 -0
  43. data/lib/caliper/entities/reading/epub_volume.rb +15 -7
  44. data/lib/caliper/entities/reading/frame.rb +7 -15
  45. data/lib/caliper/entities/response/fillin_blank_response.rb +20 -0
  46. data/lib/caliper/entities/response/multiple_choice_response.rb +20 -0
  47. data/lib/caliper/entities/response/multiple_response_response.rb +20 -0
  48. data/lib/caliper/entities/response/response.rb +23 -0
  49. data/lib/caliper/entities/response/response_type.rb +13 -0
  50. data/lib/caliper/entities/response/select_type_response.rb +20 -0
  51. data/lib/caliper/entities/response/true_false_response.rb +21 -0
  52. data/lib/caliper/entities/schemadotorg/software_application.rb +8 -8
  53. data/lib/caliper/entities/session.rb +25 -17
  54. data/lib/caliper/entities/software_application.rb +16 -7
  55. data/lib/caliper/entities/web_page.rb +2 -0
  56. data/lib/caliper/entity_envelope.rb +21 -0
  57. data/lib/caliper/event/annotation_event.rb +10 -6
  58. data/lib/caliper/event/assessment_event.rb +19 -0
  59. data/lib/caliper/event/assessment_item_event.rb +19 -0
  60. data/lib/caliper/event/assignable_event.rb +19 -0
  61. data/lib/caliper/event/event.rb +70 -50
  62. data/lib/caliper/event/jsonable.rb +55 -0
  63. data/lib/caliper/event/navigation_event.rb +2 -7
  64. data/lib/caliper/event/outcome_event.rb +1 -1
  65. data/lib/caliper/event/session_event.rb +13 -14
  66. data/lib/caliper/event/view_event.rb +6 -7
  67. data/lib/caliper/event_envelope.rb +22 -0
  68. data/lib/caliper/jsonable.rb +53 -0
  69. data/lib/caliper/profiles/annotation_profile.rb +56 -53
  70. data/lib/caliper/profiles/assessment_profile.rb +48 -0
  71. data/lib/caliper/profiles/assignable_profile.rb +44 -0
  72. data/lib/caliper/profiles/media_profile.rb +54 -0
  73. data/lib/caliper/profiles/profile.rb +38 -38
  74. data/lib/caliper/profiles/reading_profile.rb +31 -28
  75. data/lib/caliper/profiles/session_profile.rb +17 -18
  76. data/lib/caliper/request/event_store_requestor.rb +26 -26
  77. data/lib/caliper/sensor.rb +46 -35
  78. data/lib/caliper/version.rb +1 -1
  79. data/spec/lib/entities/entity.json +9 -0
  80. data/spec/lib/entities/entity_spec.rb +37 -0
  81. data/spec/lib/entities/lis/person_spec.rb +37 -0
  82. data/spec/lib/entities/lis/student.json +11 -0
  83. data/spec/lib/event/annotation_event_bookmark_spec.rb +159 -0
  84. data/spec/lib/event/annotation_event_highlight_spec.rb +160 -0
  85. data/spec/lib/event/annotation_event_shared_spec.rb +172 -0
  86. data/spec/lib/event/annotation_event_tag_spec.rb +159 -0
  87. data/spec/lib/event/assessment_event_spec.rb +207 -0
  88. data/spec/lib/event/assessment_item_completed_event_spec.rb +223 -0
  89. data/spec/lib/event/assessment_item_started_event_spec.rb +207 -0
  90. data/spec/lib/event/media_event_spec.rb +157 -0
  91. data/spec/lib/event/navigated_event_spec.rb +160 -0
  92. data/spec/lib/event/session_event_login_spec.rb +160 -0
  93. data/spec/lib/event/session_event_logout_spec.rb +145 -0
  94. data/spec/lib/event/session_event_timeout_spec.rb +145 -0
  95. data/spec/lib/event/viewed_event_spec.rb +149 -0
  96. data/spec/lib/event_helper.rb +145 -0
  97. data/spec/lib/sensor_spec.rb +30 -0
  98. data/spec/spec_helper.rb +3 -2
  99. metadata +84 -61
  100. data/lib/caliper/client.rb +0 -33
  101. data/lib/caliper/consumer/base.rb +0 -46
  102. data/lib/caliper/consumer/queue.rb +0 -40
  103. data/lib/caliper/consumer/socket.rb +0 -132
  104. data/lib/caliper/entities/annotation/text_position_selector.rb +0 -14
  105. data/lib/caliper/entities/schemadotorg/audio_object.rb +0 -15
  106. data/lib/caliper/entities/schemadotorg/image_object.rb +0 -15
  107. data/lib/caliper/entities/schemadotorg/media_object.rb +0 -19
  108. data/lib/caliper/entities/schemadotorg/video_object.rb +0 -15
  109. data/lib/caliper/event/.shared.rb.swp +0 -0
  110. data/spec/lib/client_spec.rb +0 -35
  111. data/spec/lib/consumer/base_spec.rb +0 -28
  112. data/spec/lib/consumer/queue_spec.rb +0 -16
  113. data/spec/lib/event/annotation_spec.rb +0 -12
  114. data/spec/lib/event/bookmarked_spec.rb +0 -17
  115. data/spec/lib/event/commented_spec.rb +0 -19
  116. data/spec/lib/event/highlighted_spec.rb +0 -18
  117. data/spec/lib/event/navigation_spec.rb +0 -15
  118. data/spec/lib/event/shared_spec.rb +0 -18
  119. data/spec/lib/event/tagged_spec.rb +0 -17
  120. data/spec/lib/event/used_spec.rb +0 -15
  121. data/spec/lib/event/viewed_spec.rb +0 -15
  122. data/test/caliper/events/session_login_event_test.rb +0 -58
  123. data/test/caliper/events/session_logout_event_test.rb +0 -55
  124. data/test/caliper/events/session_timeout_event_test.rb +0 -55
  125. data/test/caliper/request/http_requestor_test.rb +0 -59
  126. data/test/caliper/test_event.rb +0 -53
  127. data/test/caliper/test_utils.rb +0 -198
  128. data/test/fixtures/caliper_session_login_event.json +0 -71
  129. data/test/fixtures/caliper_session_logout_event.json +0 -52
  130. data/test/fixtures/caliper_session_timeout_event.json +0 -52
  131. data/test/fixtures/event_store_payload.json +0 -85
@@ -0,0 +1,145 @@
1
+ require 'require_all'
2
+ require_all 'lib/caliper/entities/entity.rb'
3
+ require_all 'lib/caliper/entities/session.rb'
4
+ require_all 'lib/caliper/entities/software_application.rb'
5
+ require_all 'lib/caliper/entities/lis/person.rb'
6
+ require_all 'lib/caliper/entities/lis/membership.rb'
7
+ require_all 'lib/caliper/entities/lis/roles.rb'
8
+ require_all 'lib/caliper/entities/lis/status.rb'
9
+ require_all 'lib/caliper/entities/lis/course_section.rb'
10
+ require_all 'lib/caliper/entities/lis/course_offering.rb'
11
+ require_all 'lib/caliper/entities/lis/group.rb'
12
+ require_all 'lib/caliper/entities/reading/epub_volume.rb'
13
+ require_all 'lib/caliper/entities/reading/frame.rb'
14
+ require_all 'lib/caliper/event/session_event.rb'
15
+ require_all 'lib/caliper/profiles/session_profile.rb'
16
+ require 'json_spec'
17
+
18
+ module Caliper
19
+ module Event
20
+
21
+ describe SessionEvent do
22
+
23
+ it 'should ensure that a SessionEvent (timeout) is correctly created and serialized' do
24
+
25
+ # The Actor (Person/Student))
26
+ student = Caliper::Entities::LIS::Person.new
27
+ student.id = 'https://some-university.edu/user/554433'
28
+ membership1 = Caliper::Entities::LIS::Membership.new
29
+ membership1.id = "https://some-university.edu/membership/001"
30
+ membership1.member = "https://some-university.edu/user/554433"
31
+ membership1.organization = "https://some-university.edu/politicalScience/2015/american-revolution-101"
32
+ membership1.roles = [Caliper::Entities::LIS::Roles::LEARNER]
33
+ membership1.status = Caliper::Entities::LIS::Status::ACTIVE
34
+ membership1.dateCreated = "2015-08-01T06:00:00.000Z"
35
+ membership1.dateModified = nil;
36
+ membership2 = Caliper::Entities::LIS::Membership.new
37
+ membership2.id = "https://some-university.edu/membership/002"
38
+ membership2.member = "https://some-university.edu/user/554433"
39
+ membership2.organization = "https://some-university.edu/politicalScience/2015/american-revolution-101/section/001"
40
+ membership2.roles = [Caliper::Entities::LIS::Roles::LEARNER]
41
+ membership2.status = Caliper::Entities::LIS::Status::ACTIVE
42
+ membership2.dateCreated = "2015-08-01T06:00:00.000Z"
43
+ membership2.dateModified = nil
44
+ membership3 = Caliper::Entities::LIS::Membership.new
45
+ membership3.id = "https://some-university.edu/membership/003"
46
+ membership3.member = "https://some-university.edu/user/554433"
47
+ membership3.organization = "https://some-university.edu/politicalScience/2015/american-revolution-101/section/001/group/001"
48
+ membership3.roles = [Caliper::Entities::LIS::Roles::LEARNER]
49
+ membership3.status = Caliper::Entities::LIS::Status::ACTIVE
50
+ membership3.dateCreated = "2015-08-01T06:00:00.000Z"
51
+ membership3.dateModified = nil
52
+ student.hasMembership = [membership1, membership2, membership3]
53
+ student.dateCreated = '2015-08-01T06:00:00.000Z'
54
+ student.dateModified = '2015-09-02T11:30:00.000Z'
55
+ # puts "new student = #{student.to_json}"
56
+
57
+ # The Action
58
+ action = Caliper::Profiles::SessionActions::TIMED_OUT
59
+
60
+ # The Object (edApp)
61
+ edApp = Caliper::Entities::SoftwareApplication.new
62
+ edApp.id = 'https://github.com/readium/readium-js-viewer'
63
+ edApp.name = 'Readium'
64
+ edApp.hasMembership = []
65
+ edApp.dateCreated = '2015-08-01T06:00:00.000Z'
66
+ edApp.dateModified = '2015-09-02T11:30:00.000Z'
67
+
68
+ # The Target (Session)
69
+ session = Caliper::Entities::Session.new
70
+ session.id = 'https://github.com/readium/session-123456789'
71
+ session.name = 'session-123456789'
72
+ session.description = nil
73
+ session.actor = student
74
+ session.startedAtTime = '2015-09-15T10:15:00.000Z'
75
+ session.endedAtTime = '2015-09-15T11:05:00.000Z'
76
+ session.duration = 'PT3000S'
77
+ session.dateCreated = '2015-08-01T06:00:00.000Z'
78
+ session.dateModified = '2015-09-02T11:30:00.000Z'
79
+
80
+ #LIS Course Offering
81
+ courseOffering = Caliper::Entities::LIS::CourseOffering.new
82
+ courseOffering.id = "https://some-university.edu/politicalScience/2015/american-revolution-101"
83
+ courseOffering.name = "Political Science 101: The American Revolution"
84
+ courseOffering.courseNumber = "POL101"
85
+ courseOffering.academicSession = "Fall-2015"
86
+ courseOffering.membership = []
87
+ courseOffering.subOrganizationOf = nil
88
+ courseOffering.dateCreated = '2015-08-01T06:00:00.000Z'
89
+ courseOffering.dateModified = '2015-09-02T11:30:00.000Z'
90
+
91
+ # The LIS Course Section for the Caliper Event
92
+ course = Caliper::Entities::LIS::CourseSection.new
93
+ course.id = 'https://some-university.edu/politicalScience/2015/american-revolution-101/section/001'
94
+ course.name = 'American Revolution 101'
95
+ course.courseNumber = "POL101"
96
+ course.academicSession = "Fall-2015"
97
+ course.category = nil
98
+ course.membership = [membership2]
99
+ course.subOrganizationOf = courseOffering
100
+ course.dateCreated = '2015-08-01T06:00:00.000Z'
101
+ course.dateModified = '2015-09-02T11:30:00.000Z'
102
+
103
+ # LIS Group
104
+ group = Caliper::Entities::LIS::Group.new
105
+ group.id = "https://some-university.edu/politicalScience/2015/american-revolution-101/section/001/group/001"
106
+ group.name = "Discussion Group 001"
107
+ group.membership = [membership3]
108
+ group.subOrganizationOf = course
109
+ group.dateCreated = '2015-08-01T06:00:00.000Z'
110
+ group.dateModified = nil
111
+
112
+ # The (Session) Event
113
+ session_event = SessionEvent.new
114
+ session_event.actor = edApp
115
+ session_event.action = action
116
+ session_event.object = edApp
117
+ session_event.target = session
118
+ session_event.generated = nil
119
+ session_event.edApp = edApp
120
+ session_event.group = group
121
+ session_event.startedAtTime = '2015-09-15T10:15:00.000Z'
122
+ session_event.endedAtTime = '2015-09-15T11:05:00.000Z'
123
+ session_event.duration = 'PT3000S'
124
+ # puts "Event JSON = #{session_event.to_json}'"
125
+
126
+ # Load JSON from caliper-common-fixtures for comparison
127
+ # NOTE - sym link to caliper-common-fixtures needs to exist under spec/fixtures
128
+ file = File.read('spec/fixtures/caliperSessionTimeoutEvent.json')
129
+ data_hash = JSON.parse(file)
130
+ expected_json = data_hash.to_json # convert hash back to JSON string after parse
131
+ session_event.to_json.should be_json_eql(expected_json)#.excluding("actor", "action", "object", "target", "generated", "edApp", "group")
132
+
133
+ # puts "JSON from file = #{data_hash}"
134
+ deser_session_event = SessionEvent.new
135
+ deser_session_event.from_json data_hash
136
+ # puts "SessionEvent from JSON = #{deser_session_event.to_json}"
137
+
138
+ # Ensure that the deserialized session event object conforms
139
+ expect(session_event).to eql(deser_session_event)
140
+
141
+ end
142
+
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,149 @@
1
+ require 'require_all'
2
+ require_all 'lib/caliper/entities/entity.rb'
3
+ require_all 'lib/caliper/entities/software_application.rb'
4
+ require_all 'lib/caliper/entities/lis/person.rb'
5
+ require_all 'lib/caliper/entities/lis/membership.rb'
6
+ require_all 'lib/caliper/entities/lis/roles.rb'
7
+ require_all 'lib/caliper/entities/lis/status.rb'
8
+ require_all 'lib/caliper/entities/lis/course_section.rb'
9
+ require_all 'lib/caliper/entities/lis/course_offering.rb'
10
+ require_all 'lib/caliper/entities/lis/group.rb'
11
+ require_all 'lib/caliper/entities/reading/epub_volume.rb'
12
+ require_all 'lib/caliper/event/view_event.rb'
13
+ require_all 'lib/caliper/profiles/reading_profile.rb'
14
+ require 'json_spec'
15
+
16
+ module Caliper
17
+ module Event
18
+
19
+ describe ViewEvent do
20
+
21
+ it 'should ensure that a Viewed Event is correctly created and serialized' do
22
+
23
+ # The Actor (Person/Student))
24
+ student = Caliper::Entities::LIS::Person.new
25
+ student.id = 'https://some-university.edu/user/554433'
26
+ membership1 = Caliper::Entities::LIS::Membership.new
27
+ membership1.id = "https://some-university.edu/membership/001"
28
+ membership1.member = "https://some-university.edu/user/554433"
29
+ membership1.organization = "https://some-university.edu/politicalScience/2015/american-revolution-101"
30
+ membership1.roles = [Caliper::Entities::LIS::Roles::LEARNER]
31
+ membership1.status = Caliper::Entities::LIS::Status::ACTIVE
32
+ membership1.dateCreated = "2015-08-01T06:00:00.000Z"
33
+ membership1.dateModified = nil;
34
+ membership2 = Caliper::Entities::LIS::Membership.new
35
+ membership2.id = "https://some-university.edu/membership/002"
36
+ membership2.member = "https://some-university.edu/user/554433"
37
+ membership2.organization = "https://some-university.edu/politicalScience/2015/american-revolution-101/section/001"
38
+ membership2.roles = [Caliper::Entities::LIS::Roles::LEARNER]
39
+ membership2.status = Caliper::Entities::LIS::Status::ACTIVE
40
+ membership2.dateCreated = "2015-08-01T06:00:00.000Z"
41
+ membership2.dateModified = nil
42
+ membership3 = Caliper::Entities::LIS::Membership.new
43
+ membership3.id = "https://some-university.edu/membership/003"
44
+ membership3.member = "https://some-university.edu/user/554433"
45
+ membership3.organization = "https://some-university.edu/politicalScience/2015/american-revolution-101/section/001/group/001"
46
+ membership3.roles = [Caliper::Entities::LIS::Roles::LEARNER]
47
+ membership3.status = Caliper::Entities::LIS::Status::ACTIVE
48
+ membership3.dateCreated = "2015-08-01T06:00:00.000Z"
49
+ membership3.dateModified = nil
50
+ student.hasMembership = [membership1, membership2, membership3]
51
+ student.dateCreated = '2015-08-01T06:00:00.000Z'
52
+ student.dateModified = '2015-09-02T11:30:00.000Z'
53
+ # puts "new student = #{student.to_json}"
54
+
55
+ # The Action
56
+ action = Caliper::Profiles::ReadingActions::VIEWED
57
+
58
+ # The Object viewed (ePub Volume)
59
+ ePubVolume = Caliper::Entities::Reading::EPubVolume.new
60
+ ePubVolume.id = 'https://github.com/readium/readium-js-viewer/book/34843#epubcfi(/4/3)'
61
+ ePubVolume.name = 'The Glorious Cause: The American Revolution, 1763-1789 (Oxford History of the United States)'
62
+ ePubVolume.version = '2nd ed.'
63
+ ePubVolume.dateCreated = '2015-08-01T06:00:00.000Z'
64
+ ePubVolume.dateModified = '2015-09-02T11:30:00.000Z'
65
+
66
+ # The Target within the Object (frame)
67
+ frame = Caliper::Entities::Reading::Frame.new
68
+ frame.id = 'https://github.com/readium/readium-js-viewer/book/34843#epubcfi(/4/3/1)'
69
+ frame.name = 'Key Figures: George Washington'
70
+ frame.version = '2nd ed.'
71
+ frame.dateCreated = '2015-08-01T06:00:00.000Z'
72
+ frame.dateModified = '2015-09-02T11:30:00.000Z'
73
+ frame.index = 1
74
+ frame.isPartOf = ePubVolume.id
75
+
76
+ # The course that is part of the Learning Context (edApp)
77
+ edApp = Caliper::Entities::SoftwareApplication.new
78
+ edApp.id = 'https://github.com/readium/readium-js-viewer'
79
+ edApp.name = 'Readium'
80
+ edApp.hasMembership = []
81
+ edApp.dateCreated = '2015-08-01T06:00:00.000Z'
82
+ edApp.dateModified = '2015-09-02T11:30:00.000Z'
83
+
84
+ #LIS Course Offering
85
+ courseOffering = Caliper::Entities::LIS::CourseOffering.new
86
+ courseOffering.id = "https://some-university.edu/politicalScience/2015/american-revolution-101"
87
+ courseOffering.name = "Political Science 101: The American Revolution"
88
+ courseOffering.courseNumber = "POL101"
89
+ courseOffering.academicSession = "Fall-2015"
90
+ courseOffering.membership = []
91
+ courseOffering.subOrganizationOf = nil
92
+ courseOffering.dateCreated = '2015-08-01T06:00:00.000Z'
93
+ courseOffering.dateModified = '2015-09-02T11:30:00.000Z'
94
+
95
+ # The LIS Course Section for the Caliper Event
96
+ course = Caliper::Entities::LIS::CourseSection.new
97
+ course.id = 'https://some-university.edu/politicalScience/2015/american-revolution-101/section/001'
98
+ course.name = 'American Revolution 101'
99
+ course.courseNumber = "POL101"
100
+ course.academicSession = "Fall-2015"
101
+ course.category = nil
102
+ course.membership = [membership2]
103
+ course.subOrganizationOf = courseOffering
104
+ course.dateCreated = '2015-08-01T06:00:00.000Z'
105
+ course.dateModified = '2015-09-02T11:30:00.000Z'
106
+
107
+ # LIS Group
108
+ group = Caliper::Entities::LIS::Group.new
109
+ group.id = "https://some-university.edu/politicalScience/2015/american-revolution-101/section/001/group/001"
110
+ group.name = "Discussion Group 001"
111
+ group.membership = [membership3]
112
+ group.subOrganizationOf = course
113
+ group.dateCreated = '2015-08-01T06:00:00.000Z'
114
+ group.dateModified = nil
115
+
116
+ # The (Reading::BookmarkReading) Event
117
+ viewed_event = Caliper::Event::ViewEvent.new
118
+ viewed_event.actor = student
119
+ viewed_event.action = action
120
+ viewed_event.object = ePubVolume
121
+ viewed_event.target = frame
122
+ viewed_event.generated = nil
123
+ viewed_event.edApp = edApp
124
+ viewed_event.group = group
125
+ viewed_event.startedAtTime = '2015-09-15T10:15:00.000Z'
126
+ viewed_event.endedAtTime = nil
127
+ viewed_event.duration = nil
128
+ # puts "Event JSON = #{viewed_event.to_json}'"
129
+
130
+ # Load JSON from caliper-common-fixtures for comparison
131
+ # NOTE - sym link to caliper-common-fixtures needs to exist under spec/fixtures
132
+ file = File.read('spec/fixtures/caliperViewEvent.json')
133
+ data_hash = JSON.parse(file)
134
+ expected_json = data_hash.to_json # convert hash back to JSON string after parse
135
+ viewed_event.to_json.should be_json_eql(expected_json)#.excluding("actor", "action", "object", "target", "generated", "edApp", "group")
136
+
137
+ # puts "JSON from file = #{data_hash}"
138
+ deser_viewed_event = Caliper::Event::ViewEvent.new
139
+ deser_viewed_event.from_json data_hash
140
+ # puts "ReadingEvent from JSON = #{deser_viewed_event.to_json}"
141
+
142
+ # Ensure that the deserialized shared event object conforms
143
+ expect(viewed_event).to eql(deser_viewed_event)
144
+
145
+ end
146
+
147
+ end
148
+ end
149
+ end
@@ -0,0 +1,145 @@
1
+ require 'require_all'
2
+ require_all 'lib/caliper/entities/entity.rb'
3
+ require_all 'lib/caliper/entities/software_application.rb'
4
+ require_all 'lib/caliper/entities/session.rb'
5
+ require_all 'lib/caliper/entities/lis/person.rb'
6
+ require_all 'lib/caliper/entities/lis/membership.rb'
7
+ require_all 'lib/caliper/entities/lis/roles.rb'
8
+ require_all 'lib/caliper/entities/lis/status.rb'
9
+ require_all 'lib/caliper/entities/lis/course_section.rb'
10
+ require_all 'lib/caliper/entities/lis/course_offering.rb'
11
+ require_all 'lib/caliper/entities/lis/group.rb'
12
+ require_all 'lib/caliper/entities/reading/epub_volume.rb'
13
+ require_all 'lib/caliper/entities/reading/frame.rb'
14
+ require_all 'lib/caliper/event/session_event.rb'
15
+ require_all 'lib/caliper/profiles/session_profile.rb'
16
+
17
+ module Helper
18
+
19
+ def session_event
20
+
21
+ # The Actor (Person/Student))
22
+ student = Caliper::Entities::LIS::Person.new
23
+ student.id = 'https://some-university.edu/user/554433'
24
+ membership1 = Caliper::Entities::LIS::Membership.new
25
+ membership1.id = "https://some-university.edu/membership/001"
26
+ membership1.member = "https://some-university.edu/user/554433"
27
+ membership1.organization = "https://some-university.edu/politicalScience/2015/american-revolution-101"
28
+ membership1.roles = [Caliper::Entities::LIS::Roles::LEARNER]
29
+ membership1.status = Caliper::Entities::LIS::Status::ACTIVE
30
+ membership1.dateCreated = "2015-08-01T06:00:00.000Z"
31
+ membership1.dateModified = nil;
32
+ membership2 = Caliper::Entities::LIS::Membership.new
33
+ membership2.id = "https://some-university.edu/membership/002"
34
+ membership2.member = "https://some-university.edu/user/554433"
35
+ membership2.organization = "https://some-university.edu/politicalScience/2015/american-revolution-101/section/001"
36
+ membership2.roles = [Caliper::Entities::LIS::Roles::LEARNER]
37
+ membership2.status = Caliper::Entities::LIS::Status::ACTIVE
38
+ membership2.dateCreated = "2015-08-01T06:00:00.000Z"
39
+ membership2.dateModified = nil
40
+ membership3 = Caliper::Entities::LIS::Membership.new
41
+ membership3.id = "https://some-university.edu/membership/003"
42
+ membership3.member = "https://some-university.edu/user/554433"
43
+ membership3.organization = "https://some-university.edu/politicalScience/2015/american-revolution-101/section/001/group/001"
44
+ membership3.roles = [Caliper::Entities::LIS::Roles::LEARNER]
45
+ membership3.status = Caliper::Entities::LIS::Status::ACTIVE
46
+ membership3.dateCreated = "2015-08-01T06:00:00.000Z"
47
+ membership3.dateModified = nil
48
+ student.hasMembership = [membership1, membership2, membership3]
49
+ student.dateCreated = '2015-08-01T06:00:00.000Z'
50
+ student.dateModified = '2015-09-02T11:30:00.000Z'
51
+ # puts "new student = #{student.to_json}"
52
+
53
+ # The Action
54
+ action = Caliper::Profiles::SessionActions::LOGGED_IN;
55
+
56
+ # The Object (edApp)
57
+ edApp = Caliper::Entities::SoftwareApplication.new
58
+ edApp.id = 'https://github.com/readium/readium-js-viewer'
59
+ edApp.name = 'Readium'
60
+ edApp.dateCreated = '2015-08-01T06:00:00.000Z'
61
+ edApp.dateModified = '2015-09-02T11:30:00.000Z'
62
+
63
+ # The Target (Frame)
64
+ ePubVolume = Caliper::Entities::Reading::EPubVolume.new
65
+ ePubVolume.id = 'https://github.com/readium/readium-js-viewer/book/34843#epubcfi(/4/3)'
66
+ ePubVolume.name = 'The Glorious Cause: The American Revolution, 1763-1789 (Oxford History of the United States)'
67
+ ePubVolume.version = '2nd ed.'
68
+ ePubVolume.dateCreated = '2015-08-01T06:00:00.000Z'
69
+ ePubVolume.dateModified = '2015-09-02T11:30:00.000Z'
70
+
71
+ frame = Caliper::Entities::Reading::Frame.new
72
+ frame.id = 'https://github.com/readium/readium-js-viewer/book/34843#epubcfi(/4/3/1)'
73
+ frame.name = 'Key Figures: George Washington'
74
+ frame.version = '2nd ed.'
75
+ frame.dateCreated = '2015-08-01T06:00:00.000Z'
76
+ frame.dateModified = '2015-09-02T11:30:00.000Z'
77
+ frame.index = 1
78
+ frame.isPartOf = ePubVolume
79
+
80
+ # The Generated (Session)
81
+ session = Caliper::Entities::Session.new
82
+ session.id = 'https://github.com/readium/session-123456789'
83
+ session.name = 'session-123456789'
84
+ session.description = nil
85
+ session.actor = student
86
+ session.startedAtTime = '2015-09-15T10:15:00.000Z'
87
+ session.endedAtTime = nil
88
+ session.duration = nil
89
+ session.dateCreated = '2015-08-01T06:00:00.000Z'
90
+ session.dateModified = '2015-09-02T11:30:00.000Z'
91
+
92
+ # The LIS Course Section for the Caliper Event
93
+ edApp = Caliper::Entities::SoftwareApplication.new
94
+ edApp.id = 'https://github.com/readium/readium-js-viewer'
95
+ edApp.name = 'Readium'
96
+ edApp.hasMembership = []
97
+ edApp.dateCreated = '2015-08-01T06:00:00.000Z'
98
+ edApp.dateModified = '2015-09-02T11:30:00.000Z'
99
+
100
+ #LIS Course Offering
101
+ courseOffering = Caliper::Entities::LIS::CourseOffering.new
102
+ courseOffering.id = "https://some-university.edu/politicalScience/2015/american-revolution-101"
103
+ courseOffering.name = "Political Science 101: The American Revolution"
104
+ courseOffering.courseNumber = "POL101"
105
+ courseOffering.academicSession = "Fall-2015"
106
+ courseOffering.membership = []
107
+ courseOffering.subOrganizationOf = nil
108
+ courseOffering.dateCreated = '2015-08-01T06:00:00.000Z'
109
+ courseOffering.dateModified = '2015-09-02T11:30:00.000Z'
110
+
111
+ # The LIS Course Section for the Caliper Event
112
+ course = Caliper::Entities::LIS::CourseSection.new
113
+ course.id = 'https://some-university.edu/politicalScience/2015/american-revolution-101/section/001'
114
+ course.name = 'American Revolution 101'
115
+ course.courseNumber = "POL101"
116
+ course.academicSession = "Fall-2015"
117
+ course.category = nil
118
+ course.membership = [membership2]
119
+ course.subOrganizationOf = courseOffering
120
+ course.dateCreated = '2015-08-01T06:00:00.000Z'
121
+ course.dateModified = '2015-09-02T11:30:00.000Z'
122
+
123
+ # LIS Group
124
+ group = Caliper::Entities::LIS::Group.new
125
+ group.id = "https://some-university.edu/politicalScience/2015/american-revolution-101/section/001/group/001"
126
+ group.name = "Discussion Group 001"
127
+ group.membership = [membership3]
128
+ group.subOrganizationOf = course
129
+ group.dateCreated = '2015-08-01T06:00:00.000Z'
130
+ group.dateModified = nil
131
+
132
+ # The (Session) Event
133
+ session_event = Caliper::Event::SessionEvent.new
134
+ session_event.actor = student
135
+ session_event.action = action
136
+ session_event.object = edApp
137
+ session_event.target = frame
138
+ session_event.generated = session
139
+ session_event.edApp = edApp
140
+ session_event.group = course
141
+ session_event.startedAtTime = '2015-09-15T10:15:00.000Z'
142
+ return session_event
143
+
144
+ end
145
+ end
@@ -0,0 +1,30 @@
1
+ require 'require_all'
2
+ require_all 'lib/caliper/sensor.rb'
3
+ require_relative './event_helper'
4
+
5
+ module Caliper
6
+
7
+ describe Sensor do
8
+ include Helper
9
+
10
+ it "should ensure that we can create and send an event" do
11
+
12
+ options = {
13
+ 'host' => 'http://requestb.in/1i7pr2i1',
14
+ 'sensorId' => 'test_sensor_id',
15
+ 'apiKey' => 'test_api_key'
16
+ }
17
+
18
+ sensor = Sensor.new options
19
+ event = session_event
20
+
21
+ # NOTE: To test sending events to an actual endpoint,
22
+ # for now, uncomment the line below after setting options.host above
23
+ # to a new/valid request bin or end point URL.
24
+
25
+ # sensor.send event
26
+
27
+ end
28
+
29
+ end
30
+ end