growthtribe_xapi 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ci.yml +28 -0
  3. data/CHANGELOG.md +2 -0
  4. data/CONTRIBUTING.md +7 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +78 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +299 -0
  9. data/Rakefile +12 -0
  10. data/bin/rspec +29 -0
  11. data/lib/growthtribe_xapi.rb +2 -0
  12. data/lib/xapi.rb +224 -0
  13. data/lib/xapi/about.rb +15 -0
  14. data/lib/xapi/activity.rb +37 -0
  15. data/lib/xapi/activity_definition.rb +131 -0
  16. data/lib/xapi/agent.rb +44 -0
  17. data/lib/xapi/agent_account.rb +33 -0
  18. data/lib/xapi/attachment.rb +64 -0
  19. data/lib/xapi/context.rb +54 -0
  20. data/lib/xapi/context_activities.rb +102 -0
  21. data/lib/xapi/documents/activity_profile_document.rb +15 -0
  22. data/lib/xapi/documents/agent_profile_document.rb +15 -0
  23. data/lib/xapi/documents/document.rb +20 -0
  24. data/lib/xapi/documents/state_document.rb +15 -0
  25. data/lib/xapi/enum.rb +42 -0
  26. data/lib/xapi/errors.rb +9 -0
  27. data/lib/xapi/group.rb +37 -0
  28. data/lib/xapi/interaction_component.rb +32 -0
  29. data/lib/xapi/interaction_type.rb +58 -0
  30. data/lib/xapi/lrs_response.rb +14 -0
  31. data/lib/xapi/query_result_format.rb +6 -0
  32. data/lib/xapi/remote_lrs.rb +416 -0
  33. data/lib/xapi/result.rb +46 -0
  34. data/lib/xapi/score.rb +39 -0
  35. data/lib/xapi/statement.rb +53 -0
  36. data/lib/xapi/statement_ref.rb +31 -0
  37. data/lib/xapi/statements/statements_base.rb +70 -0
  38. data/lib/xapi/statements_query.rb +42 -0
  39. data/lib/xapi/statements_query_v095.rb +42 -0
  40. data/lib/xapi/statements_result.rb +17 -0
  41. data/lib/xapi/sub_statement.rb +19 -0
  42. data/lib/xapi/tcapi_version.rb +27 -0
  43. data/lib/xapi/team.rb +44 -0
  44. data/lib/xapi/team_analytics_query.rb +36 -0
  45. data/lib/xapi/verb.rb +35 -0
  46. data/lib/xapi/version.rb +4 -0
  47. data/spec/fixtures/about.json +10 -0
  48. data/spec/fixtures/statement.json +33 -0
  49. data/spec/spec_helper.rb +107 -0
  50. data/spec/support/helpers.rb +60 -0
  51. data/spec/xapi/activity_definition_spec.rb +37 -0
  52. data/spec/xapi/activity_spec.rb +23 -0
  53. data/spec/xapi/agent_account_spec.rb +13 -0
  54. data/spec/xapi/agent_spec.rb +24 -0
  55. data/spec/xapi/attachment_spec.rb +26 -0
  56. data/spec/xapi/context_activities_spec.rb +57 -0
  57. data/spec/xapi/context_spec.rb +32 -0
  58. data/spec/xapi/group_spec.rb +15 -0
  59. data/spec/xapi/interaction_component_spec.rb +18 -0
  60. data/spec/xapi/remote_lrs_spec.rb +46 -0
  61. data/spec/xapi/result_spec.rb +24 -0
  62. data/spec/xapi/score_spec.rb +12 -0
  63. data/spec/xapi/statement_ref_spec.rb +19 -0
  64. data/spec/xapi/statement_spec.rb +73 -0
  65. data/spec/xapi/sub_statement_spec.rb +30 -0
  66. data/spec/xapi/verb_spec.rb +17 -0
  67. data/xapi.gemspec +30 -0
  68. metadata +244 -0
@@ -0,0 +1,32 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Xapi::Context do
5
+ include Helpers
6
+
7
+ it 'should serialize and deserialize' do
8
+ context = Xapi::Context.new
9
+ activities = Xapi::ContextActivities.new
10
+ activity = Xapi::Activity.new
11
+ activity.id = 'http://example.com/activity'
12
+ activities.parent = [activity]
13
+ context.context_activities = activities
14
+
15
+ map = {}
16
+ map['http://example.com/extension'] = 'extension value'
17
+ context.extensions = map
18
+
19
+ context.instructor = get_agent('Instructor', 'mbox', 'mailto:instructor@example.com')
20
+ context.language = 'en-US'
21
+ context.platform = 'iPhone 5'
22
+ context.registration = SecureRandom.uuid
23
+ context.revision = '1.2.3'
24
+ ref = Xapi::StatementRef.new
25
+ ref.id = SecureRandom.uuid
26
+ context.statement = ref
27
+ context.team = get_team('Group', 'mbox', 'mailto:group@example.com')
28
+
29
+ assert_serialize_and_deserialize(context)
30
+ end
31
+
32
+ end
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Xapi::Group do
5
+ include Helpers
6
+
7
+ it 'should serialize and deserialize' do
8
+ members = (1..10).map {|member| get_agent("Member #{member}", :mbox, "mailto:#{member}@example.com")}
9
+ group = Xapi::Group.new
10
+ group.name = 'Group'
11
+ group.mbox = 'mailto:group@example.com'
12
+ group.members = members
13
+ assert_serialize_and_deserialize(group)
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Xapi::InteractionComponent do
5
+ include Helpers
6
+
7
+ it 'should serialize and deserialize' do
8
+ component = Xapi::InteractionComponent.new
9
+ component.id = 'choice1'
10
+
11
+ map = {}
12
+ map['en-US'] = 'Some choice'
13
+ component.description = map
14
+
15
+ assert_serialize_and_deserialize(component)
16
+ end
17
+
18
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Xapi::RemoteLRS do
5
+ include Helpers
6
+
7
+ describe 'about' do
8
+ it 'is successful' do
9
+ stub_request(:get, "http://www.example.com/about").
10
+ with(headers: default_request_headers).
11
+ with(basic_auth: ['user', 'password']).
12
+ to_return(
13
+ status: 200,
14
+ body: fixture('about.json'),
15
+ headers: {})
16
+
17
+ remote_lrs = Xapi::RemoteLRS.new do |c|
18
+ c.end_point = 'http://www.example.com'
19
+ c.user_name = 'user'
20
+ c.password = 'password'
21
+ end
22
+
23
+ response = remote_lrs.about
24
+ expect(response.success).to be(true)
25
+ end
26
+
27
+ it 'creates an about instance' do
28
+ stub_request(:get, "http://www.example.com/about").
29
+ with(headers: default_request_headers).
30
+ with(basic_auth: ['user', 'password']).
31
+ to_return(
32
+ status: 200,
33
+ body: fixture('about.json'),
34
+ headers: {})
35
+
36
+ remote_lrs = Xapi::RemoteLRS.new do |c|
37
+ c.end_point = 'http://www.example.com'
38
+ c.user_name = 'user'
39
+ c.password = 'password'
40
+ end
41
+
42
+ response = remote_lrs.about
43
+ expect(response.content).to be_a(Xapi::About)
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Xapi::Result do
5
+ include Helpers
6
+
7
+ it 'should serialize and deserialize' do
8
+ result = Xapi::Result.new
9
+ result.completion = true
10
+ result.duration = ActiveSupport::Duration.parse('P1DT8H')
11
+
12
+ map = {}
13
+ map['http://example.com/extension'] = 'extension value'
14
+ result.extensions = map
15
+
16
+ result.response = "Here's a response"
17
+
18
+ score = Xapi::Score.new(raw: 0.43)
19
+ result.score = score
20
+ result.success = false
21
+
22
+ assert_serialize_and_deserialize(result)
23
+ end
24
+ end
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Xapi::Score do
5
+ include Helpers
6
+
7
+ it 'should serialize and deserialize' do
8
+ score = Xapi::Score.new(max: 100.0, min: 0.0, raw: 80.0, scaled: 0.8)
9
+
10
+ assert_serialize_and_deserialize(score)
11
+ end
12
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Xapi::StatementRef do
5
+ include Helpers
6
+
7
+ it 'sets the object type' do
8
+ ref = Xapi::StatementRef.new
9
+ expect(ref.object_type).to eq('StatementRef')
10
+ end
11
+
12
+ it 'should serialize and deserialize' do
13
+ ref = Xapi::StatementRef.new
14
+ ref.id = SecureRandom.uuid
15
+
16
+ assert_serialize_and_deserialize(ref)
17
+ end
18
+
19
+ end
@@ -0,0 +1,73 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Xapi::Statement do
5
+ include Helpers
6
+
7
+ it 'should serialize and deserialize' do
8
+ targets = []
9
+ activity = Xapi::Activity.new
10
+ activity.id = 'http://example.com/activity'
11
+ targets << activity
12
+ targets << get_agent('Target', 'mbox', 'mailto:target@example.com')
13
+ ref = Xapi::StatementRef.new
14
+ ref.id = SecureRandom.uuid
15
+ targets << ref
16
+
17
+ sub = Xapi::SubStatement.new
18
+ sub.actor = get_agent('Sub', 'mbox', 'mailto:sub@example.com')
19
+ verb = Xapi::Verb.new
20
+ verb.id = 'http://example.com/verb'
21
+ sub.verb = verb
22
+ activity = Xapi::Activity.new
23
+ activity.id = 'http://example.com/sub-activity'
24
+ sub.object = activity
25
+ targets << sub
26
+
27
+ statement = Xapi::Statement.new
28
+ statement.actor = get_agent('Joe', 'mbox', 'mailto:joe@example.com')
29
+ attachment = Xapi::Attachment.new
30
+ attachment.sha2 = '123'
31
+ statement.attachments = [attachment]
32
+
33
+ statement.authority = get_agent('Authority', 'mbox', 'mailto:authority@example.com')
34
+
35
+ context = Xapi::Context.new
36
+ context.language = 'en-US'
37
+ statement.context = context
38
+
39
+ statement.id = SecureRandom.uuid
40
+
41
+ result = Xapi::Result.new
42
+ result.completion = true
43
+ statement.result = result
44
+
45
+ statement.stored = Time.now
46
+ statement.timestamp = Time.now
47
+
48
+ verb = Xapi::Verb.new
49
+ verb.id = 'http://example.com/verb'
50
+ statement.verb = verb
51
+
52
+ targets.each do |target|
53
+ statement.object = target
54
+ assert_serialize_and_deserialize(statement)
55
+ end
56
+ end
57
+
58
+ it 'got stamped' do
59
+ statement = Xapi::Statement.new
60
+ statement.stamp
61
+ expect(statement.id).not_to eq nil
62
+ expect(statement.id).to be_a String
63
+ expect(statement.timestamp).not_to eq nil
64
+ expect(statement.timestamp).to be_a Time
65
+
66
+ timestamp = Time.now
67
+ id = SecureRandom.uuid
68
+ statement = Xapi::Statement.new
69
+ statement.stamp(id: id, timestamp: timestamp)
70
+ expect(statement.id).to eq(id)
71
+ expect(statement.timestamp).to eq(timestamp)
72
+ end
73
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Xapi::SubStatement do
5
+ include Helpers
6
+
7
+ it 'should serialize and deserialize' do
8
+ statement = Xapi::SubStatement.new
9
+ statement.actor = get_agent('Joe', 'mbox', 'mailto:joe@example.com')
10
+ context = Xapi::Context.new
11
+ context.language = 'en-US'
12
+ statement.context = context
13
+
14
+ activity = Xapi::Activity.new
15
+ activity.id = 'http://example.com/activity'
16
+ statement.object = activity
17
+
18
+ result = Xapi::Result.new
19
+ result.completion = true
20
+ statement.result = result
21
+
22
+ statement.timestamp = Time.now
23
+
24
+ verb = Xapi::Verb.new
25
+ verb.id = 'http://example.com/verb'
26
+ statement.verb = verb
27
+
28
+ assert_serialize_and_deserialize(statement)
29
+ end
30
+ end
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe Xapi::Verb do
5
+ include Helpers
6
+
7
+ it 'should serialize and deserialize' do
8
+ verb = Xapi::Verb.new
9
+ verb.id = 'http://example.com/attempted'
10
+ map = {}
11
+ map['en-US'] = 'attempted'
12
+ verb.display = map
13
+
14
+ assert_serialize_and_deserialize(verb)
15
+
16
+ end
17
+ end
data/xapi.gemspec ADDED
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'xapi/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "growthtribe_xapi"
8
+ spec.version = Xapi::VERSION
9
+ spec.authors = ["GrowthTribe"]
10
+ spec.email = ["dev@growthtribe.nl"]
11
+ spec.summary = "A Ruby library for implementing xAPIs."
12
+ spec.description = %q{A Ruby library for interacting with a Learning Record Store (LRS) using the xAPI). Forked and extended from https://github.com/Deakin-Prime/Xapi created by kodandapani.k@comakeit.com}
13
+ spec.homepage = 'https://github.com/growthtribeacademy/Xapi'
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency 'bundler'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'rspec'
24
+ spec.add_development_dependency 'pry'
25
+ spec.add_development_dependency 'webmock', '~> 3.0.0'
26
+
27
+ spec.add_runtime_dependency 'faraday', '~> 1.3.0'
28
+ spec.add_runtime_dependency 'addressable', '~> 2.3'
29
+ spec.add_runtime_dependency 'activesupport', '>= 5.1'
30
+ end
metadata ADDED
@@ -0,0 +1,244 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: growthtribe_xapi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - GrowthTribe
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-02-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 3.0.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 3.0.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: faraday
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.3.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.3.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: addressable
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.3'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.3'
111
+ - !ruby/object:Gem::Dependency
112
+ name: activesupport
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '5.1'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '5.1'
125
+ description: A Ruby library for interacting with a Learning Record Store (LRS) using
126
+ the xAPI). Forked and extended from https://github.com/Deakin-Prime/Xapi created
127
+ by kodandapani.k@comakeit.com
128
+ email:
129
+ - dev@growthtribe.nl
130
+ executables:
131
+ - rspec
132
+ extensions: []
133
+ extra_rdoc_files: []
134
+ files:
135
+ - ".github/workflows/ci.yml"
136
+ - CHANGELOG.md
137
+ - CONTRIBUTING.md
138
+ - Gemfile
139
+ - Gemfile.lock
140
+ - LICENSE.txt
141
+ - README.md
142
+ - Rakefile
143
+ - bin/rspec
144
+ - lib/growthtribe_xapi.rb
145
+ - lib/xapi.rb
146
+ - lib/xapi/about.rb
147
+ - lib/xapi/activity.rb
148
+ - lib/xapi/activity_definition.rb
149
+ - lib/xapi/agent.rb
150
+ - lib/xapi/agent_account.rb
151
+ - lib/xapi/attachment.rb
152
+ - lib/xapi/context.rb
153
+ - lib/xapi/context_activities.rb
154
+ - lib/xapi/documents/activity_profile_document.rb
155
+ - lib/xapi/documents/agent_profile_document.rb
156
+ - lib/xapi/documents/document.rb
157
+ - lib/xapi/documents/state_document.rb
158
+ - lib/xapi/enum.rb
159
+ - lib/xapi/errors.rb
160
+ - lib/xapi/group.rb
161
+ - lib/xapi/interaction_component.rb
162
+ - lib/xapi/interaction_type.rb
163
+ - lib/xapi/lrs_response.rb
164
+ - lib/xapi/query_result_format.rb
165
+ - lib/xapi/remote_lrs.rb
166
+ - lib/xapi/result.rb
167
+ - lib/xapi/score.rb
168
+ - lib/xapi/statement.rb
169
+ - lib/xapi/statement_ref.rb
170
+ - lib/xapi/statements/statements_base.rb
171
+ - lib/xapi/statements_query.rb
172
+ - lib/xapi/statements_query_v095.rb
173
+ - lib/xapi/statements_result.rb
174
+ - lib/xapi/sub_statement.rb
175
+ - lib/xapi/tcapi_version.rb
176
+ - lib/xapi/team.rb
177
+ - lib/xapi/team_analytics_query.rb
178
+ - lib/xapi/verb.rb
179
+ - lib/xapi/version.rb
180
+ - spec/fixtures/about.json
181
+ - spec/fixtures/statement.json
182
+ - spec/spec_helper.rb
183
+ - spec/support/helpers.rb
184
+ - spec/xapi/activity_definition_spec.rb
185
+ - spec/xapi/activity_spec.rb
186
+ - spec/xapi/agent_account_spec.rb
187
+ - spec/xapi/agent_spec.rb
188
+ - spec/xapi/attachment_spec.rb
189
+ - spec/xapi/context_activities_spec.rb
190
+ - spec/xapi/context_spec.rb
191
+ - spec/xapi/group_spec.rb
192
+ - spec/xapi/interaction_component_spec.rb
193
+ - spec/xapi/remote_lrs_spec.rb
194
+ - spec/xapi/result_spec.rb
195
+ - spec/xapi/score_spec.rb
196
+ - spec/xapi/statement_ref_spec.rb
197
+ - spec/xapi/statement_spec.rb
198
+ - spec/xapi/sub_statement_spec.rb
199
+ - spec/xapi/verb_spec.rb
200
+ - xapi.gemspec
201
+ homepage: https://github.com/growthtribeacademy/Xapi
202
+ licenses:
203
+ - MIT
204
+ metadata: {}
205
+ post_install_message:
206
+ rdoc_options: []
207
+ require_paths:
208
+ - lib
209
+ required_ruby_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - ">="
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
219
+ requirements: []
220
+ rubygems_version: 3.1.4
221
+ signing_key:
222
+ specification_version: 4
223
+ summary: A Ruby library for implementing xAPIs.
224
+ test_files:
225
+ - spec/fixtures/about.json
226
+ - spec/fixtures/statement.json
227
+ - spec/spec_helper.rb
228
+ - spec/support/helpers.rb
229
+ - spec/xapi/activity_definition_spec.rb
230
+ - spec/xapi/activity_spec.rb
231
+ - spec/xapi/agent_account_spec.rb
232
+ - spec/xapi/agent_spec.rb
233
+ - spec/xapi/attachment_spec.rb
234
+ - spec/xapi/context_activities_spec.rb
235
+ - spec/xapi/context_spec.rb
236
+ - spec/xapi/group_spec.rb
237
+ - spec/xapi/interaction_component_spec.rb
238
+ - spec/xapi/remote_lrs_spec.rb
239
+ - spec/xapi/result_spec.rb
240
+ - spec/xapi/score_spec.rb
241
+ - spec/xapi/statement_ref_spec.rb
242
+ - spec/xapi/statement_spec.rb
243
+ - spec/xapi/sub_statement_spec.rb
244
+ - spec/xapi/verb_spec.rb