oai 1.1.0 → 1.2.0

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.
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)