pupilfirst_xapi 0.2.1 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41967309ba9b114e5e27a040310e2f1a4f280ea292b88d4bb12721a028c77d8f
4
- data.tar.gz: a7adcc1bb4d78a14ec281dc16c6d56df50d1479c5a535a6201f0a1678d05b6f9
3
+ metadata.gz: f4c1f6e893b9a58bb193b6ddcbdf806ae9c341c3ff5527f3a2ba6a528cda7a05
4
+ data.tar.gz: 87858bf6e6a1b2beaa9bc8a85f9e7bc22424788a8011bc1a476f96fcd52d8370
5
5
  SHA512:
6
- metadata.gz: 0c9fa1fddf16ffd0d87e431e0b537484af2bc801b5e53675c2db040bea52e67f92cf9193204396bb4952b86c23b8ebafc4086d3520e94416898fe86d171ab833
7
- data.tar.gz: 4bc7f0ccd2d9947a73f6f66d0f1a1f4e1feaf87a9bce973f5116556f2665013a5636f5dea770931649b199167f3a1df17155544d0eaa1c124a35b74453a68007
6
+ metadata.gz: a9a7da4741a9151c9251e7f9a31dc149d303a213fadb94cbdccd9a65578fb21bc7adfadfec168f30d6dbbf614fdb372aeb8ac2a967547628d427c046c0c3d944
7
+ data.tar.gz: 606c6d2f23faccbc6d30ee80e49b912148a862cc9855ea10814e1d64cd18300ece70469daea7f72093d5dad1cc176a1ddb2b5818a850bb9de9e88ab66982356c
@@ -4,12 +4,12 @@ require_relative 'objects/target'
4
4
 
5
5
  module PupilfirstXapi
6
6
  module Objects
7
- def self.course(course, uri)
8
- Course.new.call(course, uri)
7
+ def self.course(course, uri_for)
8
+ Course.new.call(course, uri_for)
9
9
  end
10
10
 
11
- def self.target(target, uri)
12
- Target.new.call(target, uri)
11
+ def self.target(target, uri_for)
12
+ Target.new.call(target, uri_for)
13
13
  end
14
14
  end
15
15
  end
@@ -1,7 +1,9 @@
1
1
  module PupilfirstXapi
2
2
  module Objects
3
3
  class Course
4
- def call(course, uri)
4
+ def call(course, uri_for)
5
+ uri = uri_for.call(course)
6
+
5
7
  Builder.new(
6
8
  id: uri,
7
9
  type: 'http://adlnet.gov/expapi/activities/product',
@@ -1,13 +1,20 @@
1
1
  module PupilfirstXapi
2
2
  module Objects
3
3
  class Target
4
- def call(target, uri)
4
+ def call(target, uri_for)
5
+ course = target.course
6
+ target_uri = uri_for.call(target)
7
+ course_uri = uri_for.call(course)
8
+
5
9
  Builder.new(
6
- id: uri,
10
+ id: target_uri,
7
11
  type: "http://activitystrea.ms/schema/1.0/task",
8
12
  name: target.title,
9
13
  description: target.description
10
- ).call
14
+ ).tap do |obj|
15
+ obj.with_extension('course_id', course_uri)
16
+ obj.with_extension('course_name', course.name)
17
+ end.call
11
18
  end
12
19
  end
13
20
  end
@@ -13,7 +13,7 @@ module PupilfirstXapi
13
13
  Xapi.create_statement(
14
14
  actor: Actors.agent(actor),
15
15
  verb: Verbs::COMPLETED,
16
- object: Objects.course(course, @uri_for.call(course))
16
+ object: Objects.course(course, @uri_for)
17
17
  )
18
18
  end
19
19
  end
@@ -13,7 +13,7 @@ module PupilfirstXapi
13
13
  Xapi.create_statement(
14
14
  actor: Actors.agent(actor),
15
15
  verb: Verbs::REGISTERED,
16
- object: Objects.course(course, @uri_for.call(course))
16
+ object: Objects.course(course, @uri_for)
17
17
  )
18
18
  end
19
19
  end
@@ -16,7 +16,7 @@ module PupilfirstXapi
16
16
  Xapi.create_statement(
17
17
  actor: Actors.agent(actor),
18
18
  verb: Verbs::COMPLETED_ASSIGNMENT,
19
- object: Objects.target(target, @uri_for.call(target))
19
+ object: Objects.target(target, @uri_for)
20
20
  )
21
21
  end
22
22
  end
@@ -1,3 +1,3 @@
1
1
  module PupilfirstXapi
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  end
@@ -21,7 +21,9 @@ RSpec.describe "#xapi", type: :job, perform_jobs: true do
21
21
  double(:target,
22
22
  title: 'Getting Started with Rails',
23
23
  description: 'This guide covers getting up and running with Ruby on Rails.',
24
- uri: 'https://guides.rubyonrails.org/getting_started.html')
24
+ uri: 'https://guides.rubyonrails.org/getting_started.html',
25
+ course: ror_guides
26
+ )
25
27
  }
26
28
  let(:good_one) { double(:timeline_event, target: getting_started, passed?: true) }
27
29
  let(:bad_one) { double(:timeline_event, target: getting_started, passed?: false) }
@@ -88,7 +90,7 @@ RSpec.describe "#xapi", type: :job, perform_jobs: true do
88
90
  'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
89
91
  'Authorization'=>'Basic a2V5OnNlY3JldA==',
90
92
  'Content-Type'=>'application/json',
91
- 'User-Agent'=>'Faraday v1.3.0',
93
+ 'User-Agent'=>'Faraday v1.3.1',
92
94
  'X-Experience-Api-Version'=>'1.0.1'
93
95
  }
94
96
  ).to_return(status: 204, body: "", headers: {})
data/spec/outbox_spec.rb CHANGED
@@ -4,8 +4,8 @@ module PupilfirstXapi
4
4
  RSpec.describe Outbox do
5
5
  let(:timestamp) { Time.now }
6
6
  let(:john) { double(:john, name: 'John Doe', email: 'john@doe.com') }
7
- let(:course) { double(:course, name: 'Rails for Begginers', description: 'Seems easy', created_at: 1.week.ago, ends_at: nil) }
8
- let(:target) { double(:target, title: '1st target', description: 'Seems easy') }
7
+ let(:course) { double(:course, id: 32, name: 'Rails for Begginers', description: 'Seems easy', created_at: 1.week.ago, ends_at: nil) }
8
+ let(:target) { double(:target, title: '1st target', description: 'Seems easy', course: course) }
9
9
  let(:good_one) { double(:timeline_event, target: target, passed?: true) }
10
10
  let(:bad_one) { double(:timeline_event, target: target, passed?: false) }
11
11
 
@@ -4,7 +4,8 @@ module PupilfirstXapi
4
4
  module Statements
5
5
  RSpec.describe TargetCompleted do
6
6
  it do
7
- target = double(:target, title: '1st target', description: 'Seems easy')
7
+ course = double(:course, id: 17, name: 'Rails for Begginers', description: 'Seems easy', created_at: 1.week.ago, ends_at: nil)
8
+ target = double(:target, title: '1st target', course: course, description: 'Seems easy')
8
9
  submission = double(:timeline_event, target: target, passed?: true)
9
10
  john = double(:john, name: 'John Doe', email: 'john@doe.com')
10
11
  data = {
@@ -12,7 +13,7 @@ module PupilfirstXapi
12
13
  user: { 123 => john },
13
14
  }
14
15
  repository = ->(klass, resource_id) { data.dig(klass, resource_id) }
15
- uri_for = ->(obj) { obj == target ? 'target-1' : nil }
16
+ uri_for = ->(obj) { obj == target ? 'target-1' : obj == course ? 'course-1' : nil }
16
17
 
17
18
  xapi = TargetCompleted.new(repository, uri_for).call(actor_id: 123, resource_id: 456)
18
19
 
@@ -26,6 +27,10 @@ module PupilfirstXapi
26
27
  expect(xapi.object.definition.type).to eq 'http://activitystrea.ms/schema/1.0/task'
27
28
  expect(xapi.object.definition.name).to eq({'en-US' => '1st target'})
28
29
  expect(xapi.object.definition.description).to eq({'en-US' => 'Seems easy'})
30
+ expect(xapi.object.definition.extensions).to eq({
31
+ 'course_id'=>'course-1',
32
+ 'course_name'=>'Rails for Begginers'
33
+ })
29
34
  end
30
35
 
31
36
  it 'no-op when submission is not passed' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pupilfirst_xapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - GrowthTribe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-02 00:00:00.000000000 Z
11
+ date: 2021-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -117,7 +117,7 @@ files:
117
117
  - spec/rails_helper.rb
118
118
  - spec/spec_helper.rb
119
119
  - spec/statements/course_completed_spec.rb
120
- - spec/statements/course_redistered_spec.rb
120
+ - spec/statements/course_registered_spec.rb
121
121
  - spec/statements/target_completed_spec.rb
122
122
  homepage: https://github.com/growthtribeacademy/pupilfirst-xapi
123
123
  licenses:
@@ -153,5 +153,5 @@ test_files:
153
153
  - spec/rails_helper.rb
154
154
  - spec/spec_helper.rb
155
155
  - spec/statements/course_completed_spec.rb
156
- - spec/statements/course_redistered_spec.rb
156
+ - spec/statements/course_registered_spec.rb
157
157
  - spec/statements/target_completed_spec.rb