ezid-client 1.4.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +11 -1
- data/VERSION +1 -1
- data/lib/ezid/identifier.rb +16 -5
- data/lib/ezid/proxy_identifier.rb +1 -1
- data/spec/integration/client_spec.rb +1 -1
- data/spec/integration/identifier_spec.rb +1 -1
- data/spec/unit/identifier_spec.rb +24 -8
- data/spec/unit/proxy_identifier_spec.rb +16 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fac2bb0d958a961b82670ed7c449989653648ea8
|
4
|
+
data.tar.gz: 53c4f97b36512859a1e7f7c7ec36d71a035419e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cab9bdb73a109aca706dd8d4bba336c8446d35424daeb6814996b1d2c5778722cdfccb13a34f415a3165ce78b034217cc266b3d9a74ce42dd738c210f5a08512
|
7
|
+
data.tar.gz: c920024b464e32639d74dc77568c680ec48f3d909290d91ef08557939e5d5aaf66ff11e5d8f0eef7194cce25c27a966760a5bb9859f45f09e5cb256b746a4a43
|
data/Rakefile
CHANGED
@@ -6,7 +6,17 @@ RSpec::Core::RakeTask.new(:spec)
|
|
6
6
|
|
7
7
|
desc "Run the ci build (no integration tests)"
|
8
8
|
task :ci do
|
9
|
-
system "rspec
|
9
|
+
system "rspec . -t ~deprecated -t ~integration"
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Run tests of deprecated functionality"
|
13
|
+
task :deprecated do
|
14
|
+
system "rspec . -t deprecated"
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Run the integration tests"
|
18
|
+
task :integration do
|
19
|
+
system "rspec . -t integration"
|
10
20
|
end
|
11
21
|
|
12
22
|
task default: :spec
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.4.
|
1
|
+
1.4.2
|
data/lib/ezid/identifier.rb
CHANGED
@@ -86,18 +86,29 @@ module Ezid
|
|
86
86
|
|
87
87
|
def initialize(*args)
|
88
88
|
raise ArgumentError, "`new` receives 0-2 arguments." if args.size > 2
|
89
|
-
|
89
|
+
options = args.last.is_a?(Hash) ? args.pop : nil
|
90
90
|
@id = args.first
|
91
91
|
apply_default_metadata
|
92
|
-
if
|
93
|
-
if
|
92
|
+
if options
|
93
|
+
if id = options.delete(:id)
|
94
|
+
warn "[DEPRECATION] The `:id` hash option is deprecated and will raise an exception in 2.0. The id should be passed as the first argument to `new` or set explicitly using the attribute writer. (called by #{caller.first})"
|
95
|
+
if @id
|
96
|
+
raise ArgumentError,
|
97
|
+
"`id' specified in both positional argument and (deprecated) hash option."
|
98
|
+
end
|
99
|
+
@id = id
|
100
|
+
end
|
101
|
+
if shoulder = options.delete(:shoulder)
|
94
102
|
warn "[DEPRECATION] The `:shoulder` hash option is deprecated and will raise an exception in 2.0. Use `Ezid::Identifier.mint(shoulder, metadata)` to mint an identifier. (called by #{caller.first})"
|
95
103
|
@shoulder = shoulder
|
96
104
|
end
|
97
|
-
if
|
105
|
+
if client = options.delete(:client)
|
106
|
+
warn "[DEPRECATION] The `:client` hash option is deprecated and ignored. It will raise an exception in 2.0. See the README for details on configuring `Ezid::Client`."
|
107
|
+
end
|
108
|
+
if anvl = options.delete(:metadata)
|
98
109
|
update_metadata(anvl)
|
99
110
|
end
|
100
|
-
update_metadata(
|
111
|
+
update_metadata(options)
|
101
112
|
end
|
102
113
|
yield self if block_given?
|
103
114
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Ezid
|
2
2
|
class ProxyIdentifier
|
3
3
|
|
4
|
-
warn "[DEPRECATION] `Ezid::ProxyIdentifier` is deprecated and will be removed in v2.0. Use `Ezid::Identifier` instead."
|
4
|
+
warn "[DEPRECATION] `Ezid::ProxyIdentifier` is deprecated and will be removed in v2.0. Use `Ezid::Identifier` instead. (called from #{caller.first})"
|
5
5
|
|
6
6
|
attr_reader :id
|
7
7
|
attr_accessor :__real
|
@@ -14,16 +14,14 @@ module Ezid
|
|
14
14
|
described_class.create("id")
|
15
15
|
end
|
16
16
|
end
|
17
|
-
describe "with a hash metadata arg" do
|
17
|
+
describe "with a hash metadata arg", deprecated: true do
|
18
18
|
it "mints a new Identifier" do
|
19
|
-
skip "DEPRECATED"
|
20
19
|
expect(described_class).to receive(:mint).with(nil, profile: "dc", target: "http://example.com")
|
21
20
|
described_class.create(profile: "dc", target: "http://example.com")
|
22
21
|
end
|
23
22
|
end
|
24
|
-
describe "with no args" do
|
23
|
+
describe "with no args", deprecated: true do
|
25
24
|
it "mints a new Identifier" do
|
26
|
-
skip "DEPRECATED"
|
27
25
|
expect(described_class).to receive(:mint).with(nil, nil)
|
28
26
|
described_class.create
|
29
27
|
end
|
@@ -113,11 +111,29 @@ module Ezid
|
|
113
111
|
its(:metadata) { is_expected.to eq("_profile"=>"dc", "_target"=>"http://example.com", "_status"=>"reserved", "_export"=>"no") }
|
114
112
|
end
|
115
113
|
end
|
114
|
+
describe "deprecated hash options", deprecated: true do
|
115
|
+
describe "id" do
|
116
|
+
subject { described_class.new(id: "id") }
|
117
|
+
its(:id) { is_expected.to eq("id") }
|
118
|
+
specify {
|
119
|
+
expect { described_class.new("id", id: "id") }.to raise_error(ArgumentError)
|
120
|
+
}
|
121
|
+
end
|
122
|
+
describe "shoulder" do
|
123
|
+
subject { described_class.new(shoulder: "shoulder") }
|
124
|
+
its(:shoulder) { is_expected.to eq("shoulder") }
|
125
|
+
end
|
126
|
+
describe "client" do
|
127
|
+
let(:client) { double }
|
128
|
+
subject { described_class.new(client: client) }
|
129
|
+
its(:client) { is_expected.to_not eq(client) }
|
130
|
+
end
|
131
|
+
end
|
116
132
|
end
|
117
133
|
|
118
134
|
describe "#update" do
|
119
135
|
let(:metadata) { {"status" => "unavailable"} }
|
120
|
-
subject { described_class.new(
|
136
|
+
subject { described_class.new("id") }
|
121
137
|
it "updates the metadata and saves" do
|
122
138
|
expect(subject).to receive(:update_metadata).with(metadata)
|
123
139
|
expect(subject).to receive(:save) { double }
|
@@ -223,7 +239,7 @@ module Ezid
|
|
223
239
|
end
|
224
240
|
end
|
225
241
|
context "when identifier is not reserved" do
|
226
|
-
subject { described_class.new(
|
242
|
+
subject { described_class.new("id", status: Status::PUBLIC) }
|
227
243
|
it "raises an exception" do
|
228
244
|
expect { subject.delete }.to raise_error(Error)
|
229
245
|
end
|
@@ -302,7 +318,7 @@ module Ezid
|
|
302
318
|
end
|
303
319
|
|
304
320
|
describe "status-changing methods" do
|
305
|
-
subject { described_class.new(
|
321
|
+
subject { described_class.new("id", status: status) }
|
306
322
|
describe "#unavailable!" do
|
307
323
|
context "when the status is \"unavailable\"" do
|
308
324
|
let(:status) { "#{Status::UNAVAILABLE} | whatever" }
|
@@ -359,7 +375,7 @@ module Ezid
|
|
359
375
|
end
|
360
376
|
end
|
361
377
|
describe "#public!" do
|
362
|
-
subject { described_class.new(
|
378
|
+
subject { described_class.new("id", status: Status::UNAVAILABLE) }
|
363
379
|
it "changes the status" do
|
364
380
|
expect { subject.public! }.to change(subject, :status).from(Status::UNAVAILABLE).to(Status::PUBLIC)
|
365
381
|
end
|
@@ -1,26 +1,25 @@
|
|
1
|
-
require 'ezid/proxy_identifier'
|
2
|
-
|
3
1
|
module Ezid
|
4
|
-
RSpec.describe
|
5
|
-
|
6
|
-
describe
|
7
|
-
|
8
|
-
|
9
|
-
|
2
|
+
RSpec.describe "proxy identifier", deprecated: true do
|
3
|
+
require 'ezid/proxy_identifier'
|
4
|
+
describe ProxyIdentifier do
|
5
|
+
describe "initialization" do
|
6
|
+
it "should not load the real identifier" do
|
7
|
+
expect(Identifier).not_to receive(:find)
|
8
|
+
described_class.new("ark:/99999/fk4fn19h88")
|
9
|
+
end
|
10
10
|
end
|
11
|
-
end
|
12
11
|
|
13
|
-
|
14
|
-
|
12
|
+
describe "lazy loading" do
|
13
|
+
subject { described_class.new(id) }
|
15
14
|
|
16
|
-
|
17
|
-
|
15
|
+
let(:id) { "ark:/99999/fk4fn19h88" }
|
16
|
+
let(:real) { double(id: id, target: "http://ezid.cdlib.org/id/#{id}") }
|
18
17
|
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
it "should load the real identifier when calling a missing method" do
|
19
|
+
expect(Identifier).to receive(:find).with(id) { real }
|
20
|
+
expect(subject.target).to eq(real.target)
|
21
|
+
end
|
22
22
|
end
|
23
23
|
end
|
24
|
-
|
25
24
|
end
|
26
25
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ezid-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Chandek-Stark
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hashie
|