pupilfirst_xapi 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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