puree 1.9.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -12
- data/Gemfile +1 -1
- data/README.md +106 -75
- data/lib/puree/extractor/conference_paper.rb +6 -14
- data/lib/puree/extractor/dataset.rb +5 -41
- data/lib/puree/extractor/doctoral_thesis.rb +5 -6
- data/lib/puree/extractor/event.rb +6 -14
- data/lib/puree/extractor/external_organisation.rb +5 -8
- data/lib/puree/extractor/extractor.rb +19 -0
- data/lib/puree/extractor/journal.rb +5 -9
- data/lib/puree/extractor/journal_article.rb +6 -15
- data/lib/puree/extractor/masters_thesis.rb +5 -6
- data/lib/puree/extractor/organisational_unit.rb +25 -0
- data/lib/puree/extractor/paper.rb +6 -11
- data/lib/puree/extractor/person.rb +4 -53
- data/lib/puree/extractor/project.rb +5 -28
- data/lib/puree/extractor/publisher.rb +5 -12
- data/lib/puree/extractor/research_output.rb +20 -0
- data/lib/puree/extractor/resource.rb +22 -58
- data/lib/puree/extractor/thesis.rb +6 -17
- data/lib/puree/model/conference_paper.rb +1 -1
- data/lib/puree/model/dataset.rb +8 -25
- data/lib/puree/model/event.rb +0 -9
- data/lib/puree/model/external_organisation.rb +1 -1
- data/lib/puree/model/external_organisation_header.rb +2 -19
- data/lib/puree/model/identifier.rb +26 -0
- data/lib/puree/model/journal.rb +1 -1
- data/lib/puree/model/journal_article.rb +1 -4
- data/lib/puree/model/model.rb +43 -0
- data/lib/puree/model/{organisation_header.rb → organisation_header_base.rb} +2 -2
- data/lib/puree/model/{organisation.rb → organisational_unit.rb} +3 -6
- data/lib/puree/model/organisational_unit_header.rb +9 -0
- data/lib/puree/model/paper.rb +10 -1
- data/lib/puree/model/person.rb +3 -9
- data/lib/puree/model/project.rb +7 -14
- data/lib/puree/model/publication_status.rb +1 -1
- data/lib/puree/model/publisher.rb +3 -0
- data/lib/puree/model/publisher_header.rb +9 -0
- data/lib/puree/model/{publication.rb → research_output.rb} +18 -20
- data/lib/puree/model/research_output_scopus_metric.rb +26 -0
- data/lib/puree/model/resource.rb +19 -11
- data/lib/puree/model/thesis.rb +6 -3
- data/lib/puree/rest/activity.rb +24 -0
- data/lib/puree/rest/application.rb +24 -0
- data/lib/puree/rest/base.rb +131 -0
- data/lib/puree/rest/classification_scheme.rb +24 -0
- data/lib/puree/rest/client.rb +105 -0
- data/lib/puree/rest/curricula_vitae.rb +24 -0
- data/lib/puree/rest/dataset.rb +24 -0
- data/lib/puree/rest/equipment.rb +24 -0
- data/lib/puree/rest/event.rb +24 -0
- data/lib/puree/rest/external_organisation.rb +24 -0
- data/lib/puree/rest/external_person.rb +24 -0
- data/lib/puree/rest/impact.rb +24 -0
- data/lib/puree/rest/journal.rb +24 -0
- data/lib/puree/rest/mixins/active_mixin.rb +14 -0
- data/lib/puree/rest/mixins/activity_mixin.rb +14 -0
- data/lib/puree/rest/mixins/application_mixin.rb +15 -0
- data/lib/puree/rest/mixins/award_mixin.rb +15 -0
- data/lib/puree/rest/mixins/dataset_mixin.rb +15 -0
- data/lib/puree/rest/mixins/former_mixin.rb +14 -0
- data/lib/puree/rest/mixins/impact_mixin.rb +15 -0
- data/lib/puree/rest/mixins/person_mixin.rb +15 -0
- data/lib/puree/rest/mixins/press_media_mixin.rb +15 -0
- data/lib/puree/rest/mixins/prize_mixin.rb +15 -0
- data/lib/puree/rest/mixins/project_mixin.rb +15 -0
- data/lib/puree/rest/mixins/research_output_mixin.rb +15 -0
- data/lib/puree/rest/mixins/student_thesis_mixin.rb +15 -0
- data/lib/puree/rest/organisational_unit.rb +51 -0
- data/lib/puree/rest/person.rb +58 -0
- data/lib/puree/rest/press_media.rb +24 -0
- data/lib/puree/rest/prize.rb +24 -0
- data/lib/puree/rest/project.rb +27 -0
- data/lib/puree/rest/publisher.rb +31 -0
- data/lib/puree/rest/research_output.rb +24 -0
- data/lib/puree/rest/rest.rb +30 -0
- data/lib/puree/util/util.rb +3 -0
- data/lib/puree/version.rb +1 -1
- data/lib/puree/xml_extractor/base.rb +6 -6
- data/lib/puree/xml_extractor/collection.rb +112 -19
- data/lib/puree/xml_extractor/conference_paper.rb +9 -2
- data/lib/puree/xml_extractor/dataset.rb +56 -166
- data/lib/puree/xml_extractor/doctoral_thesis.rb +1 -1
- data/lib/puree/xml_extractor/event.rb +16 -19
- data/lib/puree/xml_extractor/external_organisation.rb +14 -5
- data/lib/puree/xml_extractor/journal.rb +18 -8
- data/lib/puree/xml_extractor/journal_article.rb +24 -11
- data/lib/puree/xml_extractor/masters_thesis.rb +1 -1
- data/lib/puree/xml_extractor/mixins/abstract_mixin.rb +17 -0
- data/lib/puree/xml_extractor/mixins/description_mixin.rb +17 -0
- data/lib/puree/xml_extractor/mixins/{external_organisations_mixin.rb → external_organisation_mixin.rb} +2 -2
- data/lib/puree/xml_extractor/mixins/identifier_mixin.rb +25 -0
- data/lib/puree/xml_extractor/mixins/keyword_mixin.rb +21 -0
- data/lib/puree/xml_extractor/mixins/organisational_unit_mixin.rb +18 -0
- data/lib/puree/xml_extractor/mixins/owner_mixin.rb +18 -0
- data/lib/puree/xml_extractor/mixins/peer_reviewed_mixin.rb +1 -1
- data/lib/puree/xml_extractor/mixins/person_mixin.rb +45 -0
- data/lib/puree/xml_extractor/mixins/publisher_mixin.rb +22 -0
- data/lib/puree/xml_extractor/mixins/{associated_mixin.rb → research_output_mixin.rb} +7 -7
- data/lib/puree/xml_extractor/mixins/title_mixin.rb +17 -0
- data/lib/puree/xml_extractor/mixins/type_mixin.rb +17 -0
- data/lib/puree/xml_extractor/mixins/workflow_mixin.rb +17 -0
- data/lib/puree/xml_extractor/organisational_unit.rb +82 -0
- data/lib/puree/xml_extractor/paper.rb +17 -3
- data/lib/puree/xml_extractor/person.rb +30 -35
- data/lib/puree/xml_extractor/project.rb +39 -75
- data/lib/puree/xml_extractor/publisher.rb +15 -6
- data/lib/puree/xml_extractor/research_output.rb +189 -0
- data/lib/puree/xml_extractor/resource.rb +28 -36
- data/lib/puree/xml_extractor/shared.rb +12 -9
- data/lib/puree/xml_extractor/thesis.rb +29 -15
- data/lib/puree/xml_extractor/xml_extractor.rb +43 -0
- data/lib/puree.rb +5 -114
- data/puree.gemspec +1 -1
- data/test/extractor/resource_test.rb +103 -0
- data/test/rest/base_test.rb +45 -0
- data/test/rest/common_test.rb +44 -0
- data/test/test_extractor_helper.rb +1 -0
- data/test/test_helper.rb +17 -0
- data/test/test_rest_helper.rb +82 -0
- data/test/test_xml_extractor_helper.rb +17 -0
- data/test/xml_extractor/xml_extractor_collection_test.rb +120 -0
- data/test/xml_extractor/xml_extractor_conference_paper_test.rb +69 -0
- data/test/xml_extractor/xml_extractor_dataset_test.rb +156 -0
- data/test/xml_extractor/xml_extractor_event_test.rb +58 -0
- data/test/xml_extractor/xml_extractor_external_organisation_test.rb +49 -0
- data/test/xml_extractor/xml_extractor_journal_article_test.rb +66 -0
- data/test/xml_extractor/xml_extractor_journal_test.rb +53 -0
- data/test/xml_extractor/xml_extractor_organisation_test.rb +80 -0
- data/test/xml_extractor/xml_extractor_person_test.rb +88 -0
- data/test/xml_extractor/xml_extractor_project_test.rb +136 -0
- data/test/xml_extractor/xml_extractor_publisher_test.rb +49 -0
- data/test/xml_extractor/xml_extractor_research_output_test.rb +214 -0
- data/test/xml_extractor/xml_extractor_thesis_test.rb +80 -0
- metadata +105 -68
- data/lib/puree/api/api.rb +0 -9
- data/lib/puree/api/authentication.rb +0 -33
- data/lib/puree/api/configuration.rb +0 -43
- data/lib/puree/api/map.rb +0 -80
- data/lib/puree/api/person_request.rb +0 -64
- data/lib/puree/api/request.rb +0 -119
- data/lib/puree/extractor/collection.rb +0 -131
- data/lib/puree/extractor/download.rb +0 -71
- data/lib/puree/extractor/organisation.rb +0 -34
- data/lib/puree/extractor/paper_base.rb +0 -28
- data/lib/puree/extractor/publication.rb +0 -53
- data/lib/puree/extractor/server.rb +0 -56
- data/lib/puree/model/download_header.rb +0 -21
- data/lib/puree/model/paper_base.rb +0 -19
- data/lib/puree/model/server.rb +0 -13
- data/lib/puree/query/funding.rb +0 -54
- data/lib/puree/query/person.rb +0 -121
- data/lib/puree/query/query.rb +0 -6
- data/lib/puree/xml_extractor/download.rb +0 -42
- data/lib/puree/xml_extractor/mixins/workflow_state_mixin.rb +0 -18
- data/lib/puree/xml_extractor/organisation.rb +0 -75
- data/lib/puree/xml_extractor/paper_base.rb +0 -17
- data/lib/puree/xml_extractor/publication.rb +0 -257
- data/lib/puree/xml_extractor/server.rb +0 -32
- data/spec/download_http_spec.rb +0 -31
- data/spec/open_api_dataset_http_spec.rb +0 -15
- data/spec/query/funding_http_spec.rb +0 -29
- data/spec/query/person_http_spec.rb +0 -52
- data/spec/resource/collection_all_http_spec.rb +0 -77
- data/spec/resource/collection_http_spec.rb +0 -65
- data/spec/resource/dataset_http_spec.rb +0 -112
- data/spec/resource/event_http_spec.rb +0 -52
- data/spec/resource/journal_http_spec.rb +0 -36
- data/spec/resource/organisation_http_spec.rb +0 -52
- data/spec/resource/person_http_spec.rb +0 -60
- data/spec/resource/project_http_spec.rb +0 -89
- data/spec/resource/publication_http_spec.rb +0 -126
- data/spec/resource/publisher_http_spec.rb +0 -26
- data/spec/server_http_spec.rb +0 -26
- data/spec/spec_helper.rb +0 -159
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'test_rest_helper'
|
2
|
+
|
3
|
+
class TestResourceBase < Minitest::Test
|
4
|
+
|
5
|
+
def test_instance
|
6
|
+
base = Puree::REST::Base.new config
|
7
|
+
assert_instance_of Puree::REST::Base, base
|
8
|
+
end
|
9
|
+
|
10
|
+
# Private get_request_X methods (used by all resources) tested via Client
|
11
|
+
# public interface. Exemplar resource is Person.
|
12
|
+
|
13
|
+
def test_get_request_collection
|
14
|
+
response = client.persons.all
|
15
|
+
# puts response
|
16
|
+
assert_instance_of HTTP::Response, response
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_get_request_singleton
|
20
|
+
uuid = random_singleton_uuid :person
|
21
|
+
response = client.persons.find id: uuid
|
22
|
+
# puts response
|
23
|
+
assert_instance_of HTTP::Response, response
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_get_request_meta
|
27
|
+
response = client.persons.renderings
|
28
|
+
# puts response
|
29
|
+
assert_instance_of HTTP::Response, response
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_get_request_collection_subcollection
|
33
|
+
response = client.persons.active
|
34
|
+
# puts response
|
35
|
+
assert_instance_of HTTP::Response, response
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_get_request_singleton_subcollection
|
39
|
+
uuid = random_singleton_uuid :person
|
40
|
+
response = client.persons.projects id: uuid
|
41
|
+
# puts response
|
42
|
+
assert_instance_of HTTP::Response, response
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'test_rest_helper'
|
2
|
+
|
3
|
+
class TestResourceCommon < Minitest::Test
|
4
|
+
|
5
|
+
# all
|
6
|
+
resources.each do |resource|
|
7
|
+
test_name = "test_#{resource}_all"
|
8
|
+
define_method(test_name) do
|
9
|
+
# puts test_name
|
10
|
+
response = resource_instance(resource).all
|
11
|
+
# puts response
|
12
|
+
assert_instance_of HTTP::Response, response
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# find
|
17
|
+
resources.each do |resource|
|
18
|
+
uuid = random_singleton_uuid resource
|
19
|
+
next unless uuid
|
20
|
+
test_name = "test_#{resource}_#{uuid}_find"
|
21
|
+
define_method(test_name) do
|
22
|
+
# puts test_name
|
23
|
+
resource_instance = resource_instance(resource)
|
24
|
+
response = resource_instance.find id: uuid
|
25
|
+
# puts response
|
26
|
+
assert_instance_of HTTP::Response, response
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# meta
|
31
|
+
resources.each do |resource|
|
32
|
+
meta_methods.each do |meta_type|
|
33
|
+
test_name = "test_#{resource}_meta_#{meta_type}"
|
34
|
+
define_method(test_name) do
|
35
|
+
# puts test_name
|
36
|
+
resource_instance = resource_instance(resource)
|
37
|
+
response = resource_instance.send meta_type
|
38
|
+
# puts response
|
39
|
+
assert_instance_of HTTP::Response, response
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'test_helper'
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minitest/reporters'
|
3
|
+
Minitest::Reporters.use!
|
4
|
+
|
5
|
+
lib = File.expand_path('../../lib', __FILE__)
|
6
|
+
$LOAD_PATH.unshift(lib)
|
7
|
+
|
8
|
+
require 'puree'
|
9
|
+
|
10
|
+
def config
|
11
|
+
{
|
12
|
+
url: ENV['PURE_URL_TEST_59'],
|
13
|
+
username: ENV['PURE_USERNAME'],
|
14
|
+
password: ENV['PURE_PASSWORD'],
|
15
|
+
api_key: ENV['PURE_API_KEY']
|
16
|
+
}
|
17
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
def client
|
4
|
+
Puree::REST::Client.new config
|
5
|
+
end
|
6
|
+
|
7
|
+
def instance(klass)
|
8
|
+
Object.const_get(klass).new config
|
9
|
+
end
|
10
|
+
|
11
|
+
def resource_klass(resource)
|
12
|
+
"Puree::REST::#{titleize(resource)}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def resource_instance(resource)
|
16
|
+
klass = resource_klass resource
|
17
|
+
Object.const_get(klass).new config
|
18
|
+
end
|
19
|
+
|
20
|
+
def resource_count(resource)
|
21
|
+
r = resource_instance resource
|
22
|
+
response = r.all params: { size: 0 }, accept: :json
|
23
|
+
hash = JSON.parse response
|
24
|
+
hash['count']
|
25
|
+
end
|
26
|
+
|
27
|
+
def random_singleton(resource)
|
28
|
+
count = resource_count resource
|
29
|
+
return unless count > 0
|
30
|
+
# get random offset
|
31
|
+
offset = rand(0..count - 1)
|
32
|
+
# get random record
|
33
|
+
r = resource_instance resource
|
34
|
+
response = r.all params: { size: 1, offset: offset }, accept: :json
|
35
|
+
hash = JSON.parse response
|
36
|
+
hash['items'][0]
|
37
|
+
end
|
38
|
+
|
39
|
+
def random_singleton_uuid(resource)
|
40
|
+
hash = random_singleton resource
|
41
|
+
return unless hash
|
42
|
+
hash['uuid']
|
43
|
+
end
|
44
|
+
|
45
|
+
# Assumes underscore as separator.
|
46
|
+
# e.g. foo_bar becomes FooBar
|
47
|
+
#
|
48
|
+
def titleize(x)
|
49
|
+
arr = "#{x}".split('_')
|
50
|
+
caps = arr.map { |i| i.capitalize }
|
51
|
+
caps.join
|
52
|
+
end
|
53
|
+
|
54
|
+
def resources
|
55
|
+
%i(
|
56
|
+
activity
|
57
|
+
application
|
58
|
+
classification_scheme
|
59
|
+
curricula_vitae
|
60
|
+
dataset
|
61
|
+
equipment
|
62
|
+
event
|
63
|
+
external_organisation
|
64
|
+
external_person
|
65
|
+
impact
|
66
|
+
journal
|
67
|
+
organisational_unit
|
68
|
+
person
|
69
|
+
press_media
|
70
|
+
prize
|
71
|
+
project
|
72
|
+
publisher
|
73
|
+
research_output
|
74
|
+
)
|
75
|
+
end
|
76
|
+
|
77
|
+
def meta_methods
|
78
|
+
%i(
|
79
|
+
orderings
|
80
|
+
renderings
|
81
|
+
)
|
82
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
def asserts_resource(x)
|
4
|
+
assert_instance_of Time, x.created_at
|
5
|
+
|
6
|
+
assert_instance_of String, x.created_by
|
7
|
+
|
8
|
+
assert_instance_of Time, x.modified_at
|
9
|
+
|
10
|
+
assert_instance_of String, x.modified_by
|
11
|
+
|
12
|
+
assert_instance_of String, x.uuid
|
13
|
+
end
|
14
|
+
|
15
|
+
def collection_size
|
16
|
+
3
|
17
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'test_xml_extractor_helper'
|
2
|
+
|
3
|
+
class TestXMLExtractorCollection < Minitest::Test
|
4
|
+
|
5
|
+
def test_datasets
|
6
|
+
client = Puree::REST::Client.new config
|
7
|
+
response = client.datasets.all params: { size: collection_size }
|
8
|
+
data = Puree::XMLExtractor::Collection.datasets response.to_s
|
9
|
+
# puts data
|
10
|
+
assert_instance_of Array, data
|
11
|
+
assert_instance_of Puree::Model::Dataset, data.first if !data.empty?
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_events
|
15
|
+
client = Puree::REST::Client.new config
|
16
|
+
response = client.events.all params: { size: collection_size }
|
17
|
+
data = Puree::XMLExtractor::Collection.events response.to_s
|
18
|
+
# puts data
|
19
|
+
assert_instance_of Array, data
|
20
|
+
assert_instance_of Puree::Model::Event, data.first if !data.empty?
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_external_organisations
|
24
|
+
client = Puree::REST::Client.new config
|
25
|
+
response = client.external_organisations.all params: { size: collection_size }
|
26
|
+
data = Puree::XMLExtractor::Collection.external_organisations response.to_s
|
27
|
+
# puts data
|
28
|
+
assert_instance_of Array, data
|
29
|
+
assert_instance_of Puree::Model::ExternalOrganisation, data.first if !data.empty?
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_journals
|
33
|
+
client = Puree::REST::Client.new config
|
34
|
+
response = client.journals.all params: { size: collection_size }
|
35
|
+
data = Puree::XMLExtractor::Collection.journals response.to_s
|
36
|
+
# puts data
|
37
|
+
assert_instance_of Array, data
|
38
|
+
assert_instance_of Puree::Model::Journal, data.first if !data.empty?
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_organisations
|
42
|
+
client = Puree::REST::Client.new config
|
43
|
+
response = client.organisational_units.all params: { size: collection_size }
|
44
|
+
data = Puree::XMLExtractor::Collection.organisational_units response.to_s
|
45
|
+
# puts data
|
46
|
+
assert_instance_of Array, data
|
47
|
+
assert_instance_of Puree::Model::OrganisationalUnit, data.first if !data.empty?
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_persons
|
51
|
+
client = Puree::REST::Client.new config
|
52
|
+
response = client.persons.all params: { size: collection_size }
|
53
|
+
data = Puree::XMLExtractor::Collection.persons response.to_s
|
54
|
+
# puts data
|
55
|
+
assert_instance_of Array, data
|
56
|
+
assert_instance_of Puree::Model::Person, data.first if !data.empty?
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_projects
|
60
|
+
client = Puree::REST::Client.new config
|
61
|
+
response = client.projects.all params: { size: collection_size }
|
62
|
+
data = Puree::XMLExtractor::Collection.projects response.to_s
|
63
|
+
# puts data
|
64
|
+
assert_instance_of Array, data
|
65
|
+
assert_instance_of Puree::Model::Project, data.first if !data.empty?
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_research_outputs
|
69
|
+
client = Puree::REST::Client.new config
|
70
|
+
response = client.research_outputs.all params: { size: collection_size }
|
71
|
+
data = Puree::XMLExtractor::Collection.research_outputs response.to_s
|
72
|
+
|
73
|
+
# puts data
|
74
|
+
|
75
|
+
assert_instance_of Hash, data
|
76
|
+
|
77
|
+
journal_articles = data[:journal_articles]
|
78
|
+
assert_instance_of Array, journal_articles
|
79
|
+
assert_instance_of Puree::Model::JournalArticle, journal_articles.first if !journal_articles.empty?
|
80
|
+
assert_equal 'Journal article', journal_articles.first.type if !journal_articles.empty?
|
81
|
+
|
82
|
+
conference_papers = data[:conference_papers]
|
83
|
+
assert_instance_of Array, conference_papers
|
84
|
+
assert_instance_of Puree::Model::ConferencePaper, conference_papers.first if !conference_papers.empty?
|
85
|
+
assert_equal 'Conference paper', conference_papers.first.type if !conference_papers.empty?
|
86
|
+
|
87
|
+
theses = data[:theses]
|
88
|
+
assert_instance_of Array, theses
|
89
|
+
assert_instance_of Puree::Model::Thesis, theses.first if !theses.empty?
|
90
|
+
assert_equal 'Thesis', theses.first.type if !theses.empty?
|
91
|
+
|
92
|
+
others = data[:other]
|
93
|
+
assert_instance_of Array, others
|
94
|
+
assert_instance_of Puree::Model::ResearchOutput, others.first if !others.empty?
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_research_outputs_absence
|
99
|
+
xml = '<foo/>'
|
100
|
+
data = Puree::XMLExtractor::Collection.research_outputs xml
|
101
|
+
|
102
|
+
assert_instance_of Hash, data
|
103
|
+
|
104
|
+
journal_articles = data[:journal_articles]
|
105
|
+
assert_instance_of Array, journal_articles
|
106
|
+
assert_empty journal_articles
|
107
|
+
|
108
|
+
conference_papers = data[:conference_papers]
|
109
|
+
assert_instance_of Array, conference_papers
|
110
|
+
assert_empty conference_papers
|
111
|
+
|
112
|
+
theses = data[:theses]
|
113
|
+
assert_instance_of Array, theses
|
114
|
+
assert_empty theses
|
115
|
+
|
116
|
+
others = data[:other]
|
117
|
+
assert_instance_of Array, others
|
118
|
+
assert_empty others
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'test_xml_extractor_helper'
|
2
|
+
|
3
|
+
class TestXMLExtractorPaper < Minitest::Test
|
4
|
+
|
5
|
+
def xml_extractor_from_id(id)
|
6
|
+
client = Puree::REST::Client.new config
|
7
|
+
response = client.research_outputs.find id: id
|
8
|
+
Puree::XMLExtractor::ConferencePaper.new response.to_s
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initialize
|
12
|
+
xml = '<foo/>'
|
13
|
+
xml_extractor = Puree::XMLExtractor::ConferencePaper.new xml
|
14
|
+
|
15
|
+
assert_instance_of Puree::XMLExtractor::ConferencePaper, xml_extractor
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_core
|
19
|
+
# A Negative Effect of Evaluation Upon Analogical Problem Solving
|
20
|
+
id = '96e1495e-70a2-4529-9721-33b2cb62df8d'
|
21
|
+
x = xml_extractor_from_id id
|
22
|
+
|
23
|
+
asserts_resource x
|
24
|
+
|
25
|
+
assert_instance_of Puree::Model::EventHeader, x.event
|
26
|
+
assert_equal true, x.event.data?
|
27
|
+
|
28
|
+
assert_instance_of Fixnum, x.pages
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_page_range
|
32
|
+
# Development of a Motion Tracking 3D CAD Input System
|
33
|
+
id = 'db2193b7-5cc7-496d-9bd5-35192c6d7ece'
|
34
|
+
x = xml_extractor_from_id id
|
35
|
+
|
36
|
+
assert_instance_of String, x.page_range
|
37
|
+
refute_empty x.page_range
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_peer_reviewed
|
41
|
+
# Development of a Motion Tracking 3D CAD Input System
|
42
|
+
id = 'db2193b7-5cc7-496d-9bd5-35192c6d7ece'
|
43
|
+
x = xml_extractor_from_id id
|
44
|
+
|
45
|
+
assert_equal true, x.peer_reviewed
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_absence
|
49
|
+
xml = '<foo/>'
|
50
|
+
x = Puree::XMLExtractor::ConferencePaper.new xml
|
51
|
+
|
52
|
+
assert_nil x.event
|
53
|
+
|
54
|
+
assert_nil x.pages
|
55
|
+
|
56
|
+
assert_nil x.page_range
|
57
|
+
|
58
|
+
assert_nil x.peer_reviewed
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_model
|
62
|
+
# A Negative Effect of Evaluation Upon Analogical Problem Solving
|
63
|
+
id = '96e1495e-70a2-4529-9721-33b2cb62df8d'
|
64
|
+
x = xml_extractor_from_id id
|
65
|
+
|
66
|
+
assert_instance_of Puree::Model::ConferencePaper, x.model
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,156 @@
|
|
1
|
+
require 'test_xml_extractor_helper'
|
2
|
+
|
3
|
+
class TestXMLExtractorDataset < Minitest::Test
|
4
|
+
|
5
|
+
def xml_extractor_from_id(id)
|
6
|
+
client = Puree::REST::Client.new config
|
7
|
+
response = client.datasets.find id: id
|
8
|
+
Puree::XMLExtractor::Dataset.new response.to_s
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initialize
|
12
|
+
xml = '<foo/>'
|
13
|
+
x = Puree::XMLExtractor::Dataset.new xml
|
14
|
+
|
15
|
+
assert_instance_of Puree::XMLExtractor::Dataset, x
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_core
|
19
|
+
# The 2014 Ebola virus disease outbreak in West Africa
|
20
|
+
id = 'b050f4b5-e272-4914-8cac-3bdc1e673c58'
|
21
|
+
x = xml_extractor_from_id id
|
22
|
+
|
23
|
+
asserts_resource x
|
24
|
+
|
25
|
+
assert_instance_of Time, x.available
|
26
|
+
|
27
|
+
assert_instance_of String, x.description
|
28
|
+
refute_empty x.description
|
29
|
+
|
30
|
+
assert_instance_of String, x.doi
|
31
|
+
refute_empty x.doi
|
32
|
+
|
33
|
+
assert_instance_of Array, x.files
|
34
|
+
assert_instance_of Puree::Model::File, x.files.first
|
35
|
+
assert_equal true, x.files.first.data?
|
36
|
+
|
37
|
+
assert_instance_of Array, x.keywords
|
38
|
+
assert_instance_of String, x.keywords.first
|
39
|
+
refute_empty x.keywords.first
|
40
|
+
|
41
|
+
assert_instance_of Array, x.organisational_units
|
42
|
+
assert_instance_of Puree::Model::OrganisationalUnitHeader, x.organisational_units.first
|
43
|
+
assert_equal true, x.organisational_units.first.data?
|
44
|
+
|
45
|
+
assert_instance_of Puree::Model::OrganisationalUnitHeader, x.owner
|
46
|
+
assert_equal true, x.owner.data?
|
47
|
+
|
48
|
+
assert_instance_of Array, x.persons_internal
|
49
|
+
assert_instance_of Puree::Model::EndeavourPerson, x.persons_internal.first
|
50
|
+
assert_equal true, x.persons_internal.first.data?
|
51
|
+
|
52
|
+
assert_instance_of Array, x.persons_external
|
53
|
+
assert_instance_of Puree::Model::EndeavourPerson, x.persons_external.first
|
54
|
+
assert_equal true, x.persons_external.first.data?
|
55
|
+
|
56
|
+
assert_instance_of Puree::Model::TemporalRange, x.production
|
57
|
+
assert_equal true, x.production.data?
|
58
|
+
|
59
|
+
assert_instance_of Array, x.research_outputs
|
60
|
+
assert_instance_of Puree::Model::RelatedContentHeader, x.research_outputs.first
|
61
|
+
assert_equal true, x.research_outputs.first.data?
|
62
|
+
|
63
|
+
assert_instance_of Puree::Model::PublisherHeader, x.publisher
|
64
|
+
assert_equal true, x.publisher.data?
|
65
|
+
|
66
|
+
assert_instance_of Array, x.spatial_places
|
67
|
+
assert_instance_of String, x.spatial_places.first
|
68
|
+
refute_empty x.spatial_places.first
|
69
|
+
|
70
|
+
assert_instance_of Puree::Model::TemporalRange, x.temporal
|
71
|
+
assert_equal true, x.temporal.data?
|
72
|
+
|
73
|
+
assert_instance_of String, x.title
|
74
|
+
refute_empty x.title
|
75
|
+
|
76
|
+
assert_instance_of String, x.workflow
|
77
|
+
refute_empty x.workflow
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_persons_other
|
81
|
+
# Plant diversity and root traits influence soil physical properties
|
82
|
+
id = '18cb8b7c-c3dd-43b8-ac65-bdf76910a6cc'
|
83
|
+
x = xml_extractor_from_id id
|
84
|
+
|
85
|
+
assert_instance_of Array, x.persons_other
|
86
|
+
assert_instance_of Puree::Model::EndeavourPerson, x.persons_other.first
|
87
|
+
assert_equal true, x.persons_other.first.data?
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_spatial_point
|
91
|
+
# Influenza C in Lancaster, winter 2014-2015
|
92
|
+
id = 'a762a8a2-a9ed-4abb-ba91-a67752b1c54d'
|
93
|
+
x = xml_extractor_from_id id
|
94
|
+
|
95
|
+
assert_instance_of Puree::Model::SpatialPoint, x.spatial_point
|
96
|
+
assert_equal true, x.spatial_point.data?
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_absence
|
100
|
+
xml = '<foo/>'
|
101
|
+
x = Puree::XMLExtractor::Dataset.new xml
|
102
|
+
|
103
|
+
assert_nil x.available
|
104
|
+
|
105
|
+
assert_nil x.description
|
106
|
+
|
107
|
+
assert_nil x.doi
|
108
|
+
|
109
|
+
assert_instance_of Array, x.files
|
110
|
+
assert_empty x.files
|
111
|
+
|
112
|
+
assert_instance_of Array, x.keywords
|
113
|
+
assert_empty x.keywords
|
114
|
+
|
115
|
+
assert_instance_of Array, x.organisational_units
|
116
|
+
assert_empty x.organisational_units
|
117
|
+
|
118
|
+
assert_nil x.owner
|
119
|
+
|
120
|
+
assert_instance_of Array, x.persons_internal
|
121
|
+
assert_empty x.persons_internal
|
122
|
+
|
123
|
+
assert_instance_of Array, x.persons_external
|
124
|
+
assert_empty x.persons_external
|
125
|
+
|
126
|
+
assert_instance_of Array, x.persons_other
|
127
|
+
assert_empty x.persons_other
|
128
|
+
|
129
|
+
assert_nil x.production
|
130
|
+
|
131
|
+
assert_instance_of Array, x.research_outputs
|
132
|
+
assert_empty x.research_outputs
|
133
|
+
|
134
|
+
assert_nil x.publisher
|
135
|
+
|
136
|
+
assert_instance_of Array, x.spatial_places
|
137
|
+
assert_empty x.spatial_places
|
138
|
+
|
139
|
+
assert_nil x.spatial_point
|
140
|
+
|
141
|
+
assert_nil x.temporal
|
142
|
+
|
143
|
+
assert_nil x.title
|
144
|
+
|
145
|
+
assert_nil x.workflow
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_model
|
149
|
+
# The 2014 Ebola virus disease outbreak in West Africa
|
150
|
+
id = 'b050f4b5-e272-4914-8cac-3bdc1e673c58'
|
151
|
+
x = xml_extractor_from_id id
|
152
|
+
|
153
|
+
assert_instance_of Puree::Model::Dataset, x.model
|
154
|
+
end
|
155
|
+
|
156
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'test_xml_extractor_helper'
|
2
|
+
|
3
|
+
class TestXMLEventJournal < Minitest::Test
|
4
|
+
|
5
|
+
def xml_extractor_from_id(id)
|
6
|
+
client = Puree::REST::Client.new config
|
7
|
+
response = client.events.find id: id
|
8
|
+
Puree::XMLExtractor::Event.new response.to_s
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initialize
|
12
|
+
xml = '<foo/>'
|
13
|
+
xml_extractor = Puree::XMLExtractor::Event.new xml
|
14
|
+
|
15
|
+
assert_instance_of Puree::XMLExtractor::Event, xml_extractor
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_core
|
19
|
+
# 31st Annual European Meeting on Atmospheric Studies by Optical Methods and 1st International Riometer Workshop
|
20
|
+
id = 'cd2bf302-4629-4f71-9c02-2dfe50a384bf'
|
21
|
+
x = xml_extractor_from_id id
|
22
|
+
|
23
|
+
asserts_resource x
|
24
|
+
|
25
|
+
assert_instance_of String, x.city
|
26
|
+
refute_empty x.city
|
27
|
+
|
28
|
+
assert_instance_of Puree::Model::TemporalRange, x.date
|
29
|
+
assert_equal true, x.date.data?
|
30
|
+
|
31
|
+
assert_instance_of String, x.title
|
32
|
+
refute_empty x.title
|
33
|
+
|
34
|
+
assert_instance_of String, x.type
|
35
|
+
refute_empty x.type
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_absence
|
39
|
+
xml = '<foo/>'
|
40
|
+
x = Puree::XMLExtractor::Event.new xml
|
41
|
+
|
42
|
+
assert_nil x.city
|
43
|
+
|
44
|
+
assert_nil x.date
|
45
|
+
|
46
|
+
assert_nil x.title
|
47
|
+
|
48
|
+
assert_nil x.type
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_model
|
52
|
+
# 31st Annual European Meeting on Atmospheric Studies by Optical Methods and 1st International Riometer Workshop
|
53
|
+
id = 'cd2bf302-4629-4f71-9c02-2dfe50a384bf'
|
54
|
+
x = xml_extractor_from_id id
|
55
|
+
|
56
|
+
assert_instance_of Puree::Model::Event, x.model
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test_xml_extractor_helper'
|
2
|
+
|
3
|
+
class TestXMLExtractorExternalOrganisation < Minitest::Test
|
4
|
+
|
5
|
+
def xml_extractor_from_id(id)
|
6
|
+
client = Puree::REST::Client.new config
|
7
|
+
response = client.external_organisations.find id: id
|
8
|
+
Puree::XMLExtractor::ExternalOrganisation.new response.to_s
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initialize
|
12
|
+
xml = '<foo/>'
|
13
|
+
xml_extractor = Puree::XMLExtractor::ExternalOrganisation.new xml
|
14
|
+
|
15
|
+
assert_instance_of Puree::XMLExtractor::ExternalOrganisation, xml_extractor
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_core
|
19
|
+
# STFC
|
20
|
+
id = '2ea6bbc4-c957-4a07-a1e7-604a2d944c20'
|
21
|
+
x = xml_extractor_from_id id
|
22
|
+
|
23
|
+
asserts_resource x
|
24
|
+
|
25
|
+
assert_instance_of String, x.name
|
26
|
+
refute_empty x.name
|
27
|
+
|
28
|
+
assert_instance_of String, x.type
|
29
|
+
refute_empty x.type
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_absence
|
33
|
+
xml = '<foo/>'
|
34
|
+
x = Puree::XMLExtractor::ExternalOrganisation.new xml
|
35
|
+
|
36
|
+
assert_nil x.name
|
37
|
+
|
38
|
+
assert_nil x.type
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_model
|
42
|
+
# STFC
|
43
|
+
id = '2ea6bbc4-c957-4a07-a1e7-604a2d944c20'
|
44
|
+
x = xml_extractor_from_id id
|
45
|
+
|
46
|
+
assert_instance_of Puree::Model::ExternalOrganisation, x.model
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|