hydra-remote_identifier 0.0.1 → 0.0.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
  SHA1:
3
- metadata.gz: 8dd002275201924c8933a9a7ea1f2fe473cce6a2
4
- data.tar.gz: 310d16e3d0e2366617298b8ecb44da409ae31d09
3
+ metadata.gz: c212f0c8fbb12faf3510a14674d470e79475cc28
4
+ data.tar.gz: 28b81cd39c16f2c191c79ce226bfc7f333718c82
5
5
  SHA512:
6
- metadata.gz: 0dc6ea4fc96e29934469d96b08eb4c3a2c8d0ca2fafde6f3d4af8152a167f9e4797573b769a54c503d8245919ca1c1a5466e032f78a8dc138f018041e6603472
7
- data.tar.gz: 02d9d09d76c421039fb6f06bd1a56a2926eafac20f56adc35aba9b1ce2330ef677b940ed87050fe812db6e7d6b581f791b9128fe599f1375e739fd4b5cf55af4
6
+ metadata.gz: ef7b1d1f3f40c22b6169a456814ae2dce2925a1f66fba6fb51a7ae0ad92891a8ad3cb212db376312420ea9209b34663210a6f224d2041d1a07df2cd8e944b4c0
7
+ data.tar.gz: 38c365ad04bea7a1452900aea09090441bb309757254b5024a223533302ce473766911be6d41e15e7ec07a012768f4095ed4dcdc496172618c1abc1c7b925490
@@ -0,0 +1,7 @@
1
+ module Hydra::RemoteIdentifier
2
+ class InvalidServiceMapping < RuntimeError
3
+ def initialize(errors)
4
+ super(errors.join(". ") << '.')
5
+ end
6
+ end
7
+ end
@@ -1,11 +1,12 @@
1
+ require File.expand_path('../exceptions', __FILE__)
2
+
1
3
  module Hydra::RemoteIdentifier
2
- class InvalidServiceMapping < RuntimeError
3
- def initialize(errors)
4
- super(errors.join(". ") << '.')
5
- end
6
- end
4
+
5
+ # Registry is responsible for associating a model with a set of remote services and defining the attribute map
6
+ # The Mapper is responsible for transforming a target, via a Map, into an acceptable format for a Minter
7
7
  class Mapper
8
8
 
9
+ # The Wrapper provides the getting and setting behavior for a target based on a Map
9
10
  class Wrapper
10
11
  attr_reader :map, :target
11
12
  def initialize(map, target)
@@ -50,6 +51,9 @@ module Hydra::RemoteIdentifier
50
51
  end
51
52
  end
52
53
 
54
+ # The Map is responsible for defining which attributes on the target map
55
+ # to the attributes expected in the RemoteService as well as defining
56
+ # how the RemoteService can update the target
53
57
  class Map < BasicObject
54
58
  attr_reader :service_class, :_getters, :_setter
55
59
  def initialize(service_class, &config)
@@ -1,5 +1,8 @@
1
1
  module Hydra::RemoteIdentifier
2
2
 
3
+ # The Minter is responsible for passing the target's payload to the
4
+ # RemoteService then setting the target's identifier based on the response
5
+ # from the remote_service
3
6
  class Minter
4
7
 
5
8
  def self.call(coordinator, target)
@@ -1,10 +1,10 @@
1
1
  module Hydra::RemoteIdentifier
2
2
 
3
+ # The Minting
3
4
  class MintingCoordinator
4
- attr_reader :service_class, :target_class, :mapper
5
- def initialize(service_class, target_class, mapper_builder = Mapper, &map_config)
5
+ attr_reader :service_class, :mapper
6
+ def initialize(service_class, mapper_builder = Mapper, &map_config)
6
7
  @service_class = service_class
7
- @target_class = target_class
8
8
  @mapper = mapper_builder.new(service_class, &map_config)
9
9
  end
10
10
 
@@ -21,17 +21,4 @@ module Hydra::RemoteIdentifier
21
21
  end
22
22
  end
23
23
 
24
- describe MintingCoordinator do
25
- let(:service_class) { Class.new { def self.valid_attribute?(*); true; end } }
26
- let(:target_class) { Class.new }
27
- let(:mapper_builder) { double(new: double(call: :wrapped_target)) }
28
- let(:target) { target_class.new }
29
- let(:map) { lambda {|*|} }
30
- subject { MintingCoordinator.new(service_class, target_class, mapper_builder, &map) }
31
- it 'forward delegates call to the minter' do
32
- minter = double
33
- minter.should_receive(:call).with(kind_of(service_class), :wrapped_target)
34
- subject.call(target, minter)
35
- end
36
- end
37
- end
24
+ end
@@ -2,6 +2,8 @@ require 'active_support/core_ext/class/attribute'
2
2
 
3
3
  module Hydra::RemoteIdentifier
4
4
 
5
+ # The Registration is responsible for connecting a RemoteService, a Target
6
+ # to a particular Map
5
7
  class Registration
6
8
  def initialize(service_class, target_class, minting_coordinator = MintingCoordinator, &map)
7
9
  if map.nil?
@@ -9,36 +11,8 @@ module Hydra::RemoteIdentifier
9
11
  end
10
12
  target_class.class_attribute :registered_remote_identifier_minters unless target_class.respond_to?(:registered_remote_identifier_minters)
11
13
  target_class.registered_remote_identifier_minters ||= []
12
- target_class.registered_remote_identifier_minters += [minting_coordinator.new(service_class, target_class, &map)]
14
+ target_class.registered_remote_identifier_minters += [minting_coordinator.new(service_class, &map)]
13
15
  end
14
16
  end
15
17
 
16
- describe Registration do
17
-
18
- let(:minting_coordinator) { double(new: :minting_coordinator) }
19
- let(:remote_service) { RemoteService }
20
- let(:target_class) { Class.new }
21
- let(:map) { lambda {|m| m.title :title } }
22
-
23
- it 'requires a map' do
24
- expect { Registration.new(remote_service, target_class, minting_coordinator) }.to raise_error(RuntimeError)
25
- end
26
-
27
- it 'adds a .registered_remote_identifier_minters method' do
28
- expect {
29
- Registration.new(remote_service, target_class, minting_coordinator, &map)
30
- }.to change{ target_class.respond_to?(:registered_remote_identifier_minters) }.from(false).to(true)
31
- end
32
-
33
- it 'adds a .registered_remote_identifier_minters method' do
34
- Registration.new(remote_service, target_class, minting_coordinator, &map)
35
- expect(target_class.registered_remote_identifier_minters).to eq [:minting_coordinator]
36
- end
37
-
38
- it 'should yield a map' do
39
- Registration.new(remote_service, target_class, minting_coordinator, &map)
40
- end
41
-
42
- end
43
-
44
18
  end
@@ -1,5 +1,10 @@
1
1
  module Hydra::RemoteIdentifier
2
2
 
3
+ # The RemoteService is responsible for delivering a payload to a remote
4
+ # identification minting service and returning an identifier.
5
+ #
6
+ # It is responsible for assisting the construction and validation of a remote
7
+ # payload.
3
8
  class RemoteService
4
9
 
5
10
  def self.valid_attribute?(attribute_name)
@@ -1,5 +1,5 @@
1
1
  module Hydra
2
2
  module RemoteIdentifier
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -3,15 +3,14 @@ require File.expand_path('../../../../../lib/hydra/remote_identifier/minting_coo
3
3
  module Hydra::RemoteIdentifier
4
4
  describe MintingCoordinator do
5
5
  let(:service_class) { Class.new { def self.valid_attribute?(*); true; end } }
6
- let(:target_class) { Class.new }
7
6
  let(:mapper_builder) { double(new: double(call: :wrapped_target)) }
8
- let(:target) { target_class.new }
7
+ let(:target) { double }
9
8
  let(:map) { lambda {|*|} }
10
- subject { MintingCoordinator.new(service_class, target_class, mapper_builder, &map) }
9
+ subject { MintingCoordinator.new(service_class, mapper_builder, &map) }
11
10
  it 'forward delegates call to the minter' do
12
11
  minter = double
13
12
  minter.should_receive(:call).with(kind_of(service_class), :wrapped_target)
14
13
  subject.call(target, minter)
15
14
  end
16
15
  end
17
- end
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-remote_identifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Friesen
@@ -88,6 +88,7 @@ files:
88
88
  - Rakefile
89
89
  - hydra-remote_identifier.gemspec
90
90
  - lib/hydra/remote_identifier.rb
91
+ - lib/hydra/remote_identifier/exceptions.rb
91
92
  - lib/hydra/remote_identifier/mapper.rb
92
93
  - lib/hydra/remote_identifier/minter.rb
93
94
  - lib/hydra/remote_identifier/minting_coordinator.rb