oai 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +19 -4
  3. data/Rakefile +7 -0
  4. data/bin/oai +0 -2
  5. data/examples/models/file_model.rb +2 -2
  6. data/lib/oai/client/response.rb +8 -8
  7. data/lib/oai/client.rb +34 -10
  8. data/lib/oai/exception.rb +46 -38
  9. data/lib/oai/harvester/config.rb +1 -1
  10. data/lib/oai/harvester/harvest.rb +37 -25
  11. data/lib/oai/harvester/logging.rb +3 -5
  12. data/lib/oai/harvester.rb +4 -1
  13. data/lib/oai/provider/model/activerecord_caching_wrapper.rb +5 -8
  14. data/lib/oai/provider/model/activerecord_wrapper.rb +38 -22
  15. data/lib/oai/provider/model.rb +1 -1
  16. data/lib/oai/provider/response/list_records.rb +12 -0
  17. data/lib/oai/provider/response.rb +7 -4
  18. data/lib/oai/provider/resumption_token.rb +18 -5
  19. data/test/activerecord_provider/database/0001_oaipmh_tables.rb +7 -1
  20. data/test/activerecord_provider/helpers/providers.rb +3 -1
  21. data/test/activerecord_provider/helpers/transactional_test_case.rb +2 -1
  22. data/test/activerecord_provider/models/dc_field.rb +8 -0
  23. data/test/activerecord_provider/models/dc_lang.rb +3 -0
  24. data/test/activerecord_provider/models/exclusive_set_dc_field.rb +6 -0
  25. data/test/activerecord_provider/tc_activerecord_wrapper.rb +63 -0
  26. data/test/activerecord_provider/tc_ar_provider.rb +54 -26
  27. data/test/activerecord_provider/tc_ar_sets_provider.rb +10 -9
  28. data/test/activerecord_provider/tc_caching_paging_provider.rb +9 -7
  29. data/test/activerecord_provider/tc_simple_paging_provider.rb +9 -7
  30. data/test/client/tc_exception.rb +1 -1
  31. data/test/client/tc_get_record.rb +1 -1
  32. data/test/client/tc_http_client.rb +2 -2
  33. data/test/client/tc_libxml.rb +1 -1
  34. data/test/client/tc_utf8_escaping.rb +8 -1
  35. data/test/harvester/tc_harvest.rb +42 -0
  36. data/test/harvester/test_helper_harvester.rb +6 -0
  37. data/test/provider/models.rb +3 -3
  38. data/test/provider/tc_functional_tokens.rb +17 -11
  39. data/test/provider/tc_provider.rb +26 -0
  40. metadata +27 -16
@@ -13,15 +13,16 @@ class ResumptionTokenFunctionalTest < Test::Unit::TestCase
13
13
  end
14
14
  doc = Document.new(@provider.list_records(:metadata_prefix => 'oai_dc'))
15
15
  assert_not_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"]
16
- assert_equal 101, doc.elements["/OAI-PMH/ListRecords"].to_a.size
16
+ assert_equal (@provider.model.limit + 1), doc.elements["/OAI-PMH/ListRecords"].to_a.size
17
17
  token = doc.elements["/OAI-PMH/ListRecords/resumptionToken"].text
18
18
  doc = Document.new(@provider.list_records(:resumption_token => token))
19
19
  assert_not_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"]
20
- assert_equal 101, doc.elements["/OAI-PMH/ListRecords"].to_a.size
20
+ assert_equal (@provider.model.limit + 1), doc.elements["/OAI-PMH/ListRecords"].to_a.size
21
21
  end
22
22
 
23
23
  def test_from_and_until_with_resumption_tokens
24
- # Should return 300 records broken into 3 groups of 100.
24
+ # Should return 550 records broken into 5 groups of 100, and a final group of 50.
25
+ # checked elements under ListRecords are limit + 1, accounting for the resumptionToken element
25
26
  assert_nothing_raised do
26
27
  Document.new(@provider.list_records(:metadata_prefix => 'oai_dc'))
27
28
  end
@@ -29,19 +30,24 @@ class ResumptionTokenFunctionalTest < Test::Unit::TestCase
29
30
  @provider.list_records(
30
31
  :metadata_prefix => 'oai_dc',
31
32
  :from => Time.parse("September 1 2004"),
32
- :until => Time.parse("November 30 2004"))
33
+ :until => Time.parse("December 25 2005"))
33
34
  )
34
- assert_equal 101, doc.elements["/OAI-PMH/ListRecords"].to_a.size
35
- token = doc.elements["/OAI-PMH/ListRecords/resumptionToken"].text
36
-
37
- doc = Document.new(@provider.list_records(:resumption_token => token))
35
+ assert_equal (@provider.model.limit + 1), doc.elements["/OAI-PMH/ListRecords"].to_a.size
38
36
  assert_not_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"]
39
- assert_equal 101, doc.elements["/OAI-PMH/ListRecords"].to_a.size
40
37
  token = doc.elements["/OAI-PMH/ListRecords/resumptionToken"].text
41
38
 
39
+ 4.times do
40
+ doc = Document.new(@provider.list_records(:resumption_token => token))
41
+ assert_not_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"]
42
+ assert_equal (@provider.model.limit + 1), doc.elements["/OAI-PMH/ListRecords"].to_a.size
43
+ token = doc.elements["/OAI-PMH/ListRecords/resumptionToken"].text
44
+ end
45
+
42
46
  doc = Document.new(@provider.list_records(:resumption_token => token))
43
- assert_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"]
44
- assert_equal 100, doc.elements["/OAI-PMH/ListRecords"].to_a.size
47
+ # assert that ListRecords includes remaining records and an empty resumption token
48
+ assert_equal (551 % @provider.model.limit), doc.elements["/OAI-PMH/ListRecords"].to_a.size
49
+ assert_not_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"]
50
+ assert_nil doc.elements["/OAI-PMH/ListRecords/resumptionToken"].text
45
51
  end
46
52
 
47
53
  end
@@ -78,6 +78,32 @@ class OaiTest < Test::Unit::TestCase
78
78
  )
79
79
  assert_equal 100, doc.elements['OAI-PMH/ListRecords'].to_a.size
80
80
  end
81
+
82
+ def test_from_and_until_match
83
+ assert_nothing_raised do
84
+ @big_provider.list_records(
85
+ :metadata_prefix => 'oai_dc',
86
+ :from => "2000-11-01T05:00:00Z",
87
+ :until => "2000-11-30T05:00:00Z"
88
+ )
89
+ end
90
+
91
+ assert_nothing_raised do
92
+ @big_provider.list_records(
93
+ :metadata_prefix => 'oai_dc',
94
+ :from => "2000-11-01",
95
+ :until => "2000-11-30"
96
+ )
97
+ end
98
+
99
+ assert_raise(OAI::ArgumentException) do
100
+ @big_provider.list_records(
101
+ :metadata_prefix => 'oai_dc',
102
+ :from => "2000-11-01T05:00:00Z",
103
+ :until => "2000-11-30"
104
+ )
105
+ end
106
+ end
81
107
 
82
108
  def test_from_and_until
83
109
  assert_nothing_raised do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oai
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ed Summers
8
8
  autorequire: oai
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-31 00:00:00.000000000 Z
11
+ date: 2022-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -28,30 +28,36 @@ dependencies:
28
28
  name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '3'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "<"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '3'
41
41
  - !ruby/object:Gem::Dependency
42
- name: faraday_middleware
42
+ name: faraday-follow_redirects
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 0.3.0
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '2'
48
51
  type: :runtime
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
55
  - - ">="
53
56
  - !ruby/object:Gem::Version
54
- version: '0'
57
+ version: 0.3.0
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '2'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: activerecord
57
63
  requirement: !ruby/object:Gem::Requirement
@@ -61,7 +67,7 @@ dependencies:
61
67
  version: 5.2.0
62
68
  - - "<"
63
69
  - !ruby/object:Gem::Version
64
- version: '6.1'
70
+ version: '7.1'
65
71
  type: :development
66
72
  prerelease: false
67
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -71,7 +77,7 @@ dependencies:
71
77
  version: 5.2.0
72
78
  - - "<"
73
79
  - !ruby/object:Gem::Version
74
- version: '6.1'
80
+ version: '7.1'
75
81
  - !ruby/object:Gem::Dependency
76
82
  name: appraisal
77
83
  requirement: !ruby/object:Gem::Requirement
@@ -86,7 +92,7 @@ dependencies:
86
92
  - - ">="
87
93
  - !ruby/object:Gem::Version
88
94
  version: '0'
89
- description:
95
+ description:
90
96
  email: ehs@pobox.com
91
97
  executables:
92
98
  - oai
@@ -146,9 +152,11 @@ files:
146
152
  - test/activerecord_provider/helpers/set_provider.rb
147
153
  - test/activerecord_provider/helpers/transactional_test_case.rb
148
154
  - test/activerecord_provider/models/dc_field.rb
155
+ - test/activerecord_provider/models/dc_lang.rb
149
156
  - test/activerecord_provider/models/dc_set.rb
150
157
  - test/activerecord_provider/models/exclusive_set_dc_field.rb
151
158
  - test/activerecord_provider/models/oai_token.rb
159
+ - test/activerecord_provider/tc_activerecord_wrapper.rb
152
160
  - test/activerecord_provider/tc_ar_provider.rb
153
161
  - test/activerecord_provider/tc_ar_sets_provider.rb
154
162
  - test/activerecord_provider/tc_caching_paging_provider.rb
@@ -169,6 +177,8 @@ files:
169
177
  - test/client/tc_utf8_escaping.rb
170
178
  - test/client/tc_xpath.rb
171
179
  - test/client/test_helper_client.rb
180
+ - test/harvester/tc_harvest.rb
181
+ - test/harvester/test_helper_harvester.rb
172
182
  - test/provider/models.rb
173
183
  - test/provider/tc_exceptions.rb
174
184
  - test/provider/tc_functional_tokens.rb
@@ -179,9 +189,10 @@ files:
179
189
  - test/provider/test_helper_provider.rb
180
190
  - test/test.xml
181
191
  homepage: http://github.com/code4lib/ruby-oai
182
- licenses: []
192
+ licenses:
193
+ - MIT
183
194
  metadata: {}
184
- post_install_message:
195
+ post_install_message:
185
196
  rdoc_options: []
186
197
  require_paths:
187
198
  - lib
@@ -196,8 +207,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
207
  - !ruby/object:Gem::Version
197
208
  version: '0'
198
209
  requirements: []
199
- rubygems_version: 3.1.2
200
- signing_key:
210
+ rubygems_version: 3.0.3
211
+ signing_key:
201
212
  specification_version: 4
202
213
  summary: A ruby library for working with the Open Archive Initiative Protocol for
203
214
  Metadata Harvesting (OAI-PMH)