puree 2.2.0 → 2.3.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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +8 -0
- data/README.md +11 -0
- data/lib/puree/extractor/dataset.rb +7 -5
- data/lib/puree/extractor/event.rb +7 -5
- data/lib/puree/extractor/external_organisation.rb +7 -5
- data/lib/puree/extractor/journal.rb +7 -5
- data/lib/puree/extractor/journal_article.rb +3 -2
- data/lib/puree/extractor/organisational_unit.rb +7 -5
- data/lib/puree/extractor/person.rb +7 -5
- data/lib/puree/extractor/project.rb +7 -5
- data/lib/puree/extractor/publisher.rb +7 -5
- data/lib/puree/extractor/research_output.rb +10 -6
- data/lib/puree/extractor/resource.rb +8 -5
- data/lib/puree/model/file.rb +1 -1
- data/lib/puree/model/journal_article.rb +3 -3
- data/lib/puree/model/paper.rb +1 -1
- data/lib/puree/model/research_output.rb +1 -1
- data/lib/puree/model/research_output_scopus_metric.rb +4 -4
- data/lib/puree/model/thesis.rb +1 -1
- data/lib/puree/rest/base.rb +26 -2
- data/lib/puree/version.rb +1 -1
- data/lib/puree/xml_extractor/collection.rb +2 -0
- data/lib/puree/xml_extractor/journal_article.rb +2 -2
- data/lib/puree/xml_extractor/mixins/pages_mixin.rb +1 -1
- data/lib/puree/xml_extractor/research_output.rb +1 -1
- data/test/extractor/resource_count_test.rb +9 -9
- data/test/integration/research_output_types_test.rb +56 -0
- data/test/rest/base_test.rb +29 -2
- data/test/rest/common_test.rb +15 -0
- data/test/test_helper.rb +1 -1
- data/test/xml_extractor/xml_extractor_conference_paper_test.rb +1 -1
- data/test/xml_extractor/xml_extractor_journal_article_test.rb +3 -3
- data/test/xml_extractor/xml_extractor_research_output_test.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: dd7631adf7f39b6d041f3ae46b0b6648b6220a37d74313c86293df1a6b2b938f
|
4
|
+
data.tar.gz: b19e093582fb9e14d2c0bad8898c6c63a9cc3afc501282566194e23b1d12e0a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09784067f174ca5f1e310d35c6bbe7132148bc64b13623c12ed94920a5f8c934b7de19992ef117efbfbdea00803f3b19786675c7784ee1bb521d02a00ed9d50c'
|
7
|
+
data.tar.gz: 9a2a672ae92da3c02ccba9dd92010b7d865d8792f2e2bb2218dd85ebe3b2cfda7215e4207fc530921b4035bb169e828550d690d9a8a1f2270f7aa78360e4ad14
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
|
5
|
+
### 2.3.0 2018-10-09
|
6
|
+
### Added
|
7
|
+
- POST for REST module.
|
8
|
+
- Count and random in extractor extended with GET and POST parameters.
|
9
|
+
|
10
|
+
### Fixed
|
11
|
+
- Subcollection url building.
|
12
|
+
|
5
13
|
## 2.2.0 2018-04-20
|
6
14
|
### Added
|
7
15
|
- Count, random for resource extractors.
|
data/README.md
CHANGED
@@ -156,6 +156,17 @@ client.persons.all params: {size: 5}, accept: :json
|
|
156
156
|
#=> #<HTTP::Response:0x00c0ffee>
|
157
157
|
```
|
158
158
|
|
159
|
+
```ruby
|
160
|
+
# Find three active academics
|
161
|
+
params = {
|
162
|
+
size: 3,
|
163
|
+
employmentTypeUri: ['/dk/atira/pure/person/employmenttypes/academic'],
|
164
|
+
employmentStatus: 'ACTIVE'
|
165
|
+
}
|
166
|
+
client.persons.all_complex params: params
|
167
|
+
#=> #<HTTP::Response:0x00c0ffee>
|
168
|
+
```
|
169
|
+
|
159
170
|
```ruby
|
160
171
|
# Find research outputs for a person
|
161
172
|
client.persons.research_outputs id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
|
@@ -16,16 +16,18 @@ module Puree
|
|
16
16
|
|
17
17
|
# Count of records available.
|
18
18
|
#
|
19
|
-
# @
|
20
|
-
|
21
|
-
|
19
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
20
|
+
# @return [Integer]
|
21
|
+
def count(params = {})
|
22
|
+
record_count :dataset, params
|
22
23
|
end
|
23
24
|
|
24
25
|
# Random record.
|
25
26
|
#
|
27
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
26
28
|
# @return [Puree::Model::Dataset, nil]
|
27
|
-
def random
|
28
|
-
super :dataset
|
29
|
+
def random(params = {})
|
30
|
+
super :dataset, params
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -16,16 +16,18 @@ module Puree
|
|
16
16
|
|
17
17
|
# Count of records available.
|
18
18
|
#
|
19
|
-
# @
|
20
|
-
|
21
|
-
|
19
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
20
|
+
# @return [Integer]
|
21
|
+
def count(params = {})
|
22
|
+
record_count :event, params
|
22
23
|
end
|
23
24
|
|
24
25
|
# Random record.
|
25
26
|
#
|
27
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
26
28
|
# @return [Puree::Model::Event, nil]
|
27
|
-
def random
|
28
|
-
super :event
|
29
|
+
def random(params = {})
|
30
|
+
super :event, params
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -16,16 +16,18 @@ module Puree
|
|
16
16
|
|
17
17
|
# Count of records available.
|
18
18
|
#
|
19
|
-
# @
|
20
|
-
|
21
|
-
|
19
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
20
|
+
# @return [Integer]
|
21
|
+
def count(params = {})
|
22
|
+
record_count :external_organisation, params
|
22
23
|
end
|
23
24
|
|
24
25
|
# Random record.
|
25
26
|
#
|
27
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
26
28
|
# @return [Puree::Model::ExternalOrganisation, nil]
|
27
|
-
def random
|
28
|
-
super :external_organisation
|
29
|
+
def random(params = {})
|
30
|
+
super :external_organisation, params
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -16,16 +16,18 @@ module Puree
|
|
16
16
|
|
17
17
|
# Count of records available.
|
18
18
|
#
|
19
|
-
# @
|
20
|
-
|
21
|
-
|
19
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
20
|
+
# @return [Integer]
|
21
|
+
def count(params = {})
|
22
|
+
record_count :journal, params
|
22
23
|
end
|
23
24
|
|
24
25
|
# Random record.
|
25
26
|
#
|
27
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
26
28
|
# @return [Puree::Model::Journal, nil]
|
27
|
-
def random
|
28
|
-
super :journal
|
29
|
+
def random(params = {})
|
30
|
+
super :journal, params
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -15,9 +15,10 @@ module Puree
|
|
15
15
|
|
16
16
|
# Random record.
|
17
17
|
#
|
18
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
18
19
|
# @return [Puree::Model::JournalArticle, nil]
|
19
|
-
def random
|
20
|
-
record_count :journal_article
|
20
|
+
def random(params = {})
|
21
|
+
record_count :journal_article, params
|
21
22
|
end
|
22
23
|
|
23
24
|
end
|
@@ -16,16 +16,18 @@ module Puree
|
|
16
16
|
|
17
17
|
# Count of records available.
|
18
18
|
#
|
19
|
-
# @
|
20
|
-
|
21
|
-
|
19
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
20
|
+
# @return [Integer]
|
21
|
+
def count(params = {})
|
22
|
+
record_count :organisational_unit, params
|
22
23
|
end
|
23
24
|
|
24
25
|
# Random record.
|
25
26
|
#
|
27
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
26
28
|
# @return [Puree::Model::OrganisationalUnit, nil]
|
27
|
-
def random
|
28
|
-
super :organisational_unit
|
29
|
+
def random(params = {})
|
30
|
+
super :organisational_unit, params
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -16,16 +16,18 @@ module Puree
|
|
16
16
|
|
17
17
|
# Count of records available.
|
18
18
|
#
|
19
|
-
# @
|
20
|
-
|
21
|
-
|
19
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
20
|
+
# @return [Integer]
|
21
|
+
def count(params = {})
|
22
|
+
record_count :person, params
|
22
23
|
end
|
23
24
|
|
24
25
|
# Random record.
|
25
26
|
#
|
27
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
26
28
|
# @return [Puree::Model::Person, nil]
|
27
|
-
def random
|
28
|
-
super :person
|
29
|
+
def random(params = {})
|
30
|
+
super :person, params
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -16,16 +16,18 @@ module Puree
|
|
16
16
|
|
17
17
|
# Count of records available.
|
18
18
|
#
|
19
|
-
# @
|
20
|
-
|
21
|
-
|
19
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
20
|
+
# @return [Integer]
|
21
|
+
def count(params = {})
|
22
|
+
record_count :project, params
|
22
23
|
end
|
23
24
|
|
24
25
|
# Random record.
|
25
26
|
#
|
27
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
26
28
|
# @return [Puree::Model::Project, nil]
|
27
|
-
def random
|
28
|
-
super :project
|
29
|
+
def random(params = {})
|
30
|
+
super :project, params
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -16,16 +16,18 @@ module Puree
|
|
16
16
|
|
17
17
|
# Count of records available.
|
18
18
|
#
|
19
|
-
# @
|
20
|
-
|
21
|
-
|
19
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
20
|
+
# @return [Integer]
|
21
|
+
def count(params = {})
|
22
|
+
record_count :publisher, params
|
22
23
|
end
|
23
24
|
|
24
25
|
# Random record.
|
25
26
|
#
|
27
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
26
28
|
# @return [Puree::Model::Publisher, nil]
|
27
|
-
def random
|
28
|
-
super :publisher
|
29
|
+
def random(params = {})
|
30
|
+
super :publisher, params
|
29
31
|
end
|
30
32
|
|
31
33
|
end
|
@@ -16,18 +16,22 @@ module Puree
|
|
16
16
|
|
17
17
|
# Count of records available.
|
18
18
|
#
|
19
|
-
# @
|
20
|
-
|
21
|
-
|
19
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
20
|
+
# @return [Integer]
|
21
|
+
def count(params = {})
|
22
|
+
record_count :research_output, params
|
22
23
|
end
|
23
24
|
|
24
25
|
# Random record. Includes the metadata from Puree::Model::ResearchOutput as a minimum.
|
25
26
|
#
|
27
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
26
28
|
# @return [Puree::Model::ResearchOutput or subclass, nil]
|
27
|
-
def random
|
29
|
+
def random(params = {})
|
28
30
|
client = Puree::REST::Client.new @config
|
29
|
-
offset = rand(0..count-1)
|
30
|
-
|
31
|
+
offset = rand(0..count(params)-1)
|
32
|
+
params[:size] = 1
|
33
|
+
params[:offset] = offset
|
34
|
+
response = client.research_outputs.all_complex params: params
|
31
35
|
research_outputs_hash = Puree::XMLExtractor::Collection.research_outputs response.to_s
|
32
36
|
research_outputs_array = []
|
33
37
|
research_outputs_hash.each do |k, v|
|
@@ -38,17 +38,20 @@ module Puree
|
|
38
38
|
Object.const_get(resource_class).new xml
|
39
39
|
end
|
40
40
|
|
41
|
-
def record_count(api_resource_type)
|
41
|
+
def record_count(api_resource_type, params = {})
|
42
42
|
api_resource = make_api_resource api_resource_type
|
43
|
-
|
43
|
+
params[:size] = 0
|
44
|
+
response = api_resource.all_complex params: params
|
44
45
|
return unless response.code === 200
|
45
46
|
Puree::XMLExtractor::Collection.count response.to_s
|
46
47
|
end
|
47
48
|
|
48
|
-
def random(api_resource_type)
|
49
|
-
offset = rand(0..record_count(api_resource_type)-1)
|
49
|
+
def random(api_resource_type, params = {})
|
50
|
+
offset = rand(0..record_count(api_resource_type, params)-1)
|
50
51
|
api_resource = make_api_resource api_resource_type
|
51
|
-
|
52
|
+
params[:size] = 1
|
53
|
+
params[:offset] = offset
|
54
|
+
response = api_resource.all_complex params: params
|
52
55
|
models = Puree::XMLExtractor::Collection.send "#{api_resource_type}s", response.to_s
|
53
56
|
return nil if models.empty?
|
54
57
|
models[0]
|
data/lib/puree/model/file.rb
CHANGED
@@ -8,10 +8,10 @@ module Puree
|
|
8
8
|
# @return [Puree::Model::JournalHeader, nil]
|
9
9
|
attr_accessor :journal
|
10
10
|
|
11
|
-
# @return [
|
11
|
+
# @return [Integer, nil]
|
12
12
|
attr_accessor :issue
|
13
13
|
|
14
|
-
# @return [
|
14
|
+
# @return [Integer, nil]
|
15
15
|
attr_accessor :pages
|
16
16
|
|
17
17
|
# @return [String, nil]
|
@@ -20,7 +20,7 @@ module Puree
|
|
20
20
|
# @return [Boolean, nil]
|
21
21
|
attr_accessor :peer_reviewed
|
22
22
|
|
23
|
-
# @return [
|
23
|
+
# @return [Integer, nil]
|
24
24
|
attr_accessor :volume
|
25
25
|
|
26
26
|
end
|
data/lib/puree/model/paper.rb
CHANGED
@@ -5,18 +5,18 @@ module Puree
|
|
5
5
|
#
|
6
6
|
class ResearchOutputScopusMetric < Puree::Model::Structure
|
7
7
|
|
8
|
-
# @return [
|
8
|
+
# @return [Integer, nil]
|
9
9
|
attr_reader :value
|
10
10
|
|
11
|
-
# @return [
|
11
|
+
# @return [Integer, nil]
|
12
12
|
attr_reader :year
|
13
13
|
|
14
|
-
# @param v [
|
14
|
+
# @param v [Integer]
|
15
15
|
def value=(v)
|
16
16
|
@value = v if v && !v.empty?
|
17
17
|
end
|
18
18
|
|
19
|
-
# @param v [
|
19
|
+
# @param v [Integer]
|
20
20
|
def year=(v)
|
21
21
|
@year = v if v && !v.empty?
|
22
22
|
end
|
data/lib/puree/model/thesis.rb
CHANGED
data/lib/puree/rest/base.rb
CHANGED
@@ -25,7 +25,15 @@ module Puree
|
|
25
25
|
@url = config[:url]
|
26
26
|
end
|
27
27
|
|
28
|
-
# @param params [Hash]
|
28
|
+
# @param params [Hash] Combined GET and POST parameters for all records
|
29
|
+
# @param accept [Symbol]
|
30
|
+
# @return [HTTP::Response]
|
31
|
+
def all_complex(params: {}, accept: :xml)
|
32
|
+
post_request_collection params: params,
|
33
|
+
accept: accept
|
34
|
+
end
|
35
|
+
|
36
|
+
# @param params [Hash] GET parameters for all records
|
29
37
|
# @param accept [Symbol]
|
30
38
|
# @return [HTTP::Response]
|
31
39
|
def all(params: {}, accept: :xml)
|
@@ -68,6 +76,15 @@ module Puree
|
|
68
76
|
end
|
69
77
|
end
|
70
78
|
|
79
|
+
def content_type_header(content_type)
|
80
|
+
case content_type
|
81
|
+
when :json
|
82
|
+
return { 'Content-Type' => 'application/json' }
|
83
|
+
when :xml
|
84
|
+
return { 'Content-Type' => 'application/xml' }
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
71
88
|
def api_key_header(key)
|
72
89
|
msg = 'API key incomplete in configuration'
|
73
90
|
raise msg if !key
|
@@ -94,6 +111,13 @@ module Puree
|
|
94
111
|
File.join "#{url_collection}-meta", type
|
95
112
|
end
|
96
113
|
|
114
|
+
# @return (see Puree::REST::Base#all_complex)
|
115
|
+
def post_request_collection(params: {}, accept: :xml)
|
116
|
+
@http_client = @http_client.headers(accept_header(accept))
|
117
|
+
@http_client = @http_client.headers(content_type_header(:json))
|
118
|
+
@http_client.post url_collection, json: params
|
119
|
+
end
|
120
|
+
|
97
121
|
# @return (see Puree::REST::Base#all)
|
98
122
|
def get_request_collection(params: {}, accept: :xml)
|
99
123
|
@http_client = @http_client.headers(accept_header(accept))
|
@@ -103,7 +127,7 @@ module Puree
|
|
103
127
|
# @return (see Puree::REST::Base#all)
|
104
128
|
def get_request_collection_subcollection(subcollection:, params: {}, accept: :xml)
|
105
129
|
@http_client = @http_client.headers(accept_header(accept))
|
106
|
-
@http_client.get
|
130
|
+
@http_client.get url_collection_subcollection(subcollection), params: params
|
107
131
|
end
|
108
132
|
|
109
133
|
# @return (see Puree::REST::Base#all)
|
data/lib/puree/version.rb
CHANGED
@@ -13,7 +13,7 @@ module Puree
|
|
13
13
|
setup_model :journal_article
|
14
14
|
end
|
15
15
|
|
16
|
-
# @return [
|
16
|
+
# @return [Integer, nil]
|
17
17
|
def issue
|
18
18
|
xpath_result = xpath_query_for_single_value('/journalNumber')
|
19
19
|
xpath_result ? xpath_result.to_i : nil
|
@@ -32,7 +32,7 @@ module Puree
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
# @return [
|
35
|
+
# @return [Integer, nil]
|
36
36
|
def volume
|
37
37
|
xpath_result = xpath_query_for_single_value('/volume')
|
38
38
|
xpath_result ? xpath_result.to_i : nil
|
@@ -114,7 +114,7 @@ module Puree
|
|
114
114
|
data.uniq { |d| d.stage }
|
115
115
|
end
|
116
116
|
|
117
|
-
# @return [
|
117
|
+
# @return [Integer, nil]
|
118
118
|
def scopus_citations_count
|
119
119
|
xpath_result = xpath_query_for_single_value '/totalScopusCitations'
|
120
120
|
xpath_result ? xpath_result.to_i : nil
|
@@ -6,63 +6,63 @@ class TestResourceCount < Minitest::Test
|
|
6
6
|
extractor = Puree::Extractor::Dataset.new config
|
7
7
|
count = extractor.count
|
8
8
|
|
9
|
-
assert_instance_of
|
9
|
+
assert_instance_of Integer, count
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_external_organisation_count
|
13
13
|
extractor = Puree::Extractor::ExternalOrganisation.new config
|
14
14
|
count = extractor.count
|
15
15
|
|
16
|
-
assert_instance_of
|
16
|
+
assert_instance_of Integer, count
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_event_count
|
20
20
|
extractor = Puree::Extractor::Event.new config
|
21
21
|
count = extractor.count
|
22
22
|
|
23
|
-
assert_instance_of
|
23
|
+
assert_instance_of Integer, count
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_journal_count
|
27
27
|
extractor = Puree::Extractor::Journal.new config
|
28
28
|
count = extractor.count
|
29
29
|
|
30
|
-
assert_instance_of
|
30
|
+
assert_instance_of Integer, count
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_organisational_unit_count
|
34
34
|
extractor = Puree::Extractor::OrganisationalUnit.new config
|
35
35
|
count = extractor.count
|
36
36
|
|
37
|
-
assert_instance_of
|
37
|
+
assert_instance_of Integer, count
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_person_count
|
41
41
|
extractor = Puree::Extractor::Person.new config
|
42
42
|
count = extractor.count
|
43
43
|
|
44
|
-
assert_instance_of
|
44
|
+
assert_instance_of Integer, count
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_project_count
|
48
48
|
extractor = Puree::Extractor::Project.new config
|
49
49
|
count = extractor.count
|
50
50
|
|
51
|
-
assert_instance_of
|
51
|
+
assert_instance_of Integer, count
|
52
52
|
end
|
53
53
|
|
54
54
|
def test_publisher_count
|
55
55
|
extractor = Puree::Extractor::Publisher.new config
|
56
56
|
count = extractor.count
|
57
57
|
|
58
|
-
assert_instance_of
|
58
|
+
assert_instance_of Integer, count
|
59
59
|
end
|
60
60
|
|
61
61
|
def test_research_output_count
|
62
62
|
extractor = Puree::Extractor::ResearchOutput.new config
|
63
63
|
count = extractor.count
|
64
64
|
|
65
|
-
assert_instance_of
|
65
|
+
assert_instance_of Integer, count
|
66
66
|
end
|
67
67
|
|
68
68
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'test_rest_helper'
|
2
|
+
|
3
|
+
class TestResearchOutputTypes < Minitest::Test
|
4
|
+
|
5
|
+
def types
|
6
|
+
[
|
7
|
+
{
|
8
|
+
uri: '/dk/atira/pure/researchoutput/researchoutputtypes/contributiontojournal/article',
|
9
|
+
text: 'Journal article',
|
10
|
+
xml_extractor_key: :journal_articles
|
11
|
+
},
|
12
|
+
{
|
13
|
+
uri: '/dk/atira/pure/researchoutput/researchoutputtypes/contributiontoconference/paper',
|
14
|
+
text: 'Conference paper',
|
15
|
+
xml_extractor_key: :conference_papers
|
16
|
+
}
|
17
|
+
]
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_types
|
21
|
+
size = 10
|
22
|
+
|
23
|
+
types.each do |type|
|
24
|
+
params = {
|
25
|
+
size: size,
|
26
|
+
typeUri: [type[:uri]]
|
27
|
+
}
|
28
|
+
response = client.research_outputs.all_complex params: params
|
29
|
+
# puts response
|
30
|
+
|
31
|
+
assert_equal response.code, 200
|
32
|
+
assert_instance_of HTTP::Response, response
|
33
|
+
|
34
|
+
typed_model_hash = Puree::XMLExtractor::Collection.research_outputs response.to_s
|
35
|
+
type_key = type[:xml_extractor_key]
|
36
|
+
|
37
|
+
# Number of models should not be more than expected for specific type
|
38
|
+
assert typed_model_hash[type_key].size <= size
|
39
|
+
|
40
|
+
# Number of models should not be more than expected across all types
|
41
|
+
model_total = 0
|
42
|
+
typed_model_hash.each do |k, v|
|
43
|
+
model_total += v.size
|
44
|
+
end
|
45
|
+
assert model_total <= size
|
46
|
+
|
47
|
+
# Model placed in correct hash key
|
48
|
+
typed_model_hash.each do |k, v|
|
49
|
+
v.each do |model|
|
50
|
+
assert_equal type[:text], model.type
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
data/test/rest/base_test.rb
CHANGED
@@ -7,12 +7,35 @@ class TestResourceBase < Minitest::Test
|
|
7
7
|
assert_instance_of Puree::REST::Base, base
|
8
8
|
end
|
9
9
|
|
10
|
-
# Private
|
10
|
+
# Private request methods (used by all resources) tested via Client
|
11
11
|
# public interface. Exemplar resource is Person.
|
12
|
+
#
|
13
|
+
def test_post_request_collection
|
14
|
+
params = {
|
15
|
+
size: 3,
|
16
|
+
employmentTypeUri: ['/dk/atira/pure/person/employmenttypes/academic'],
|
17
|
+
employmentStatus: 'ACTIVE'
|
18
|
+
}
|
19
|
+
response = client.persons.all_complex params: params
|
20
|
+
# puts response
|
21
|
+
assert_equal response.code, 200
|
22
|
+
assert_instance_of HTTP::Response, response
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_collection_count
|
26
|
+
params = {
|
27
|
+
employmentTypeUri: ['/dk/atira/pure/person/employmenttypes/academic'],
|
28
|
+
employmentStatus: 'ACTIVE'
|
29
|
+
}
|
30
|
+
extractor = Puree::Extractor::Person.new config
|
31
|
+
count = extractor.count(params)
|
32
|
+
assert_instance_of Integer, count
|
33
|
+
end
|
12
34
|
|
13
35
|
def test_get_request_collection
|
14
|
-
response = client.persons.all
|
36
|
+
response = client.persons.all params: {size: 5}, accept: :json
|
15
37
|
# puts response
|
38
|
+
assert_equal response.code, 200
|
16
39
|
assert_instance_of HTTP::Response, response
|
17
40
|
end
|
18
41
|
|
@@ -20,18 +43,21 @@ class TestResourceBase < Minitest::Test
|
|
20
43
|
uuid = random_singleton_uuid :person
|
21
44
|
response = client.persons.find id: uuid
|
22
45
|
# puts response
|
46
|
+
assert_equal response.code, 200
|
23
47
|
assert_instance_of HTTP::Response, response
|
24
48
|
end
|
25
49
|
|
26
50
|
def test_get_request_meta
|
27
51
|
response = client.persons.renderings
|
28
52
|
# puts response
|
53
|
+
assert_equal response.code, 200
|
29
54
|
assert_instance_of HTTP::Response, response
|
30
55
|
end
|
31
56
|
|
32
57
|
def test_get_request_collection_subcollection
|
33
58
|
response = client.persons.active
|
34
59
|
# puts response
|
60
|
+
assert_equal response.code, 200
|
35
61
|
assert_instance_of HTTP::Response, response
|
36
62
|
end
|
37
63
|
|
@@ -39,6 +65,7 @@ class TestResourceBase < Minitest::Test
|
|
39
65
|
uuid = random_singleton_uuid :person
|
40
66
|
response = client.persons.projects id: uuid
|
41
67
|
# puts response
|
68
|
+
assert_equal response.code, 200
|
42
69
|
assert_instance_of HTTP::Response, response
|
43
70
|
end
|
44
71
|
|
data/test/rest/common_test.rb
CHANGED
@@ -9,6 +9,19 @@ class TestResourceCommon < Minitest::Test
|
|
9
9
|
# puts test_name
|
10
10
|
response = resource_instance(resource).all
|
11
11
|
# puts response
|
12
|
+
assert_equal response.code, 200
|
13
|
+
assert_instance_of HTTP::Response, response
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# all_complex
|
18
|
+
resources.each do |resource|
|
19
|
+
test_name = "test_#{resource}_all_complex"
|
20
|
+
define_method(test_name) do
|
21
|
+
# puts test_name
|
22
|
+
response = resource_instance(resource).all_complex
|
23
|
+
# puts response
|
24
|
+
assert_equal response.code, 200
|
12
25
|
assert_instance_of HTTP::Response, response
|
13
26
|
end
|
14
27
|
end
|
@@ -23,6 +36,7 @@ class TestResourceCommon < Minitest::Test
|
|
23
36
|
resource_instance = resource_instance(resource)
|
24
37
|
response = resource_instance.find id: uuid
|
25
38
|
# puts response
|
39
|
+
assert_equal response.code, 200
|
26
40
|
assert_instance_of HTTP::Response, response
|
27
41
|
end
|
28
42
|
end
|
@@ -36,6 +50,7 @@ class TestResourceCommon < Minitest::Test
|
|
36
50
|
resource_instance = resource_instance(resource)
|
37
51
|
response = resource_instance.send meta_type
|
38
52
|
# puts response
|
53
|
+
assert_equal response.code, 200
|
39
54
|
assert_instance_of HTTP::Response, response
|
40
55
|
end
|
41
56
|
end
|
data/test/test_helper.rb
CHANGED
@@ -22,7 +22,7 @@ class TestXMLExtractorJournalArticle < Minitest::Test
|
|
22
22
|
|
23
23
|
asserts_resource x
|
24
24
|
|
25
|
-
assert_instance_of
|
25
|
+
assert_instance_of Integer, x.issue
|
26
26
|
|
27
27
|
assert_instance_of Puree::Model::JournalHeader, x.journal
|
28
28
|
assert_equal true, x.journal.data?
|
@@ -30,11 +30,11 @@ class TestXMLExtractorJournalArticle < Minitest::Test
|
|
30
30
|
assert_instance_of String, x.page_range
|
31
31
|
refute_empty x.page_range
|
32
32
|
|
33
|
-
assert_instance_of
|
33
|
+
assert_instance_of Integer, x.pages
|
34
34
|
|
35
35
|
assert_includes [true, false], x.peer_reviewed
|
36
36
|
|
37
|
-
assert_instance_of
|
37
|
+
assert_instance_of Integer, x.volume
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_absence
|
@@ -113,7 +113,7 @@ class TestXMLExtractorResearchOutput < Minitest::Test
|
|
113
113
|
id = 'ce76dbda-8b22-422b-9bb6-8143820171b8'
|
114
114
|
x = xml_extractor_from_id id
|
115
115
|
|
116
|
-
assert_instance_of
|
116
|
+
assert_instance_of Integer, x.scopus_citations_count
|
117
117
|
end
|
118
118
|
|
119
119
|
def test_scopus_id
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrian Albin-Clark
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -202,6 +202,7 @@ files:
|
|
202
202
|
- test/extractor/resource_count_test.rb
|
203
203
|
- test/extractor/resource_find_test.rb
|
204
204
|
- test/extractor/resource_random_test.rb
|
205
|
+
- test/integration/research_output_types_test.rb
|
205
206
|
- test/rest/base_test.rb
|
206
207
|
- test/rest/common_test.rb
|
207
208
|
- test/test_extractor_helper.rb
|
@@ -241,7 +242,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
241
242
|
version: '0'
|
242
243
|
requirements: []
|
243
244
|
rubyforge_project:
|
244
|
-
rubygems_version: 2.
|
245
|
+
rubygems_version: 2.7.3
|
245
246
|
signing_key:
|
246
247
|
specification_version: 4
|
247
248
|
summary: Metadata extraction from the Pure Research Information System.
|
@@ -249,6 +250,7 @@ test_files:
|
|
249
250
|
- test/extractor/resource_count_test.rb
|
250
251
|
- test/extractor/resource_find_test.rb
|
251
252
|
- test/extractor/resource_random_test.rb
|
253
|
+
- test/integration/research_output_types_test.rb
|
252
254
|
- test/rest/base_test.rb
|
253
255
|
- test/rest/common_test.rb
|
254
256
|
- test/test_extractor_helper.rb
|