hydra-remote_identifier 0.0.1 → 0.0.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
  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