puree 1.9.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -12
  3. data/Gemfile +1 -1
  4. data/README.md +106 -75
  5. data/lib/puree/extractor/conference_paper.rb +6 -14
  6. data/lib/puree/extractor/dataset.rb +5 -41
  7. data/lib/puree/extractor/doctoral_thesis.rb +5 -6
  8. data/lib/puree/extractor/event.rb +6 -14
  9. data/lib/puree/extractor/external_organisation.rb +5 -8
  10. data/lib/puree/extractor/extractor.rb +19 -0
  11. data/lib/puree/extractor/journal.rb +5 -9
  12. data/lib/puree/extractor/journal_article.rb +6 -15
  13. data/lib/puree/extractor/masters_thesis.rb +5 -6
  14. data/lib/puree/extractor/organisational_unit.rb +25 -0
  15. data/lib/puree/extractor/paper.rb +6 -11
  16. data/lib/puree/extractor/person.rb +4 -53
  17. data/lib/puree/extractor/project.rb +5 -28
  18. data/lib/puree/extractor/publisher.rb +5 -12
  19. data/lib/puree/extractor/research_output.rb +20 -0
  20. data/lib/puree/extractor/resource.rb +22 -58
  21. data/lib/puree/extractor/thesis.rb +6 -17
  22. data/lib/puree/model/conference_paper.rb +1 -1
  23. data/lib/puree/model/dataset.rb +8 -25
  24. data/lib/puree/model/event.rb +0 -9
  25. data/lib/puree/model/external_organisation.rb +1 -1
  26. data/lib/puree/model/external_organisation_header.rb +2 -19
  27. data/lib/puree/model/identifier.rb +26 -0
  28. data/lib/puree/model/journal.rb +1 -1
  29. data/lib/puree/model/journal_article.rb +1 -4
  30. data/lib/puree/model/model.rb +43 -0
  31. data/lib/puree/model/{organisation_header.rb → organisation_header_base.rb} +2 -2
  32. data/lib/puree/model/{organisation.rb → organisational_unit.rb} +3 -6
  33. data/lib/puree/model/organisational_unit_header.rb +9 -0
  34. data/lib/puree/model/paper.rb +10 -1
  35. data/lib/puree/model/person.rb +3 -9
  36. data/lib/puree/model/project.rb +7 -14
  37. data/lib/puree/model/publication_status.rb +1 -1
  38. data/lib/puree/model/publisher.rb +3 -0
  39. data/lib/puree/model/publisher_header.rb +9 -0
  40. data/lib/puree/model/{publication.rb → research_output.rb} +18 -20
  41. data/lib/puree/model/research_output_scopus_metric.rb +26 -0
  42. data/lib/puree/model/resource.rb +19 -11
  43. data/lib/puree/model/thesis.rb +6 -3
  44. data/lib/puree/rest/activity.rb +24 -0
  45. data/lib/puree/rest/application.rb +24 -0
  46. data/lib/puree/rest/base.rb +131 -0
  47. data/lib/puree/rest/classification_scheme.rb +24 -0
  48. data/lib/puree/rest/client.rb +105 -0
  49. data/lib/puree/rest/curricula_vitae.rb +24 -0
  50. data/lib/puree/rest/dataset.rb +24 -0
  51. data/lib/puree/rest/equipment.rb +24 -0
  52. data/lib/puree/rest/event.rb +24 -0
  53. data/lib/puree/rest/external_organisation.rb +24 -0
  54. data/lib/puree/rest/external_person.rb +24 -0
  55. data/lib/puree/rest/impact.rb +24 -0
  56. data/lib/puree/rest/journal.rb +24 -0
  57. data/lib/puree/rest/mixins/active_mixin.rb +14 -0
  58. data/lib/puree/rest/mixins/activity_mixin.rb +14 -0
  59. data/lib/puree/rest/mixins/application_mixin.rb +15 -0
  60. data/lib/puree/rest/mixins/award_mixin.rb +15 -0
  61. data/lib/puree/rest/mixins/dataset_mixin.rb +15 -0
  62. data/lib/puree/rest/mixins/former_mixin.rb +14 -0
  63. data/lib/puree/rest/mixins/impact_mixin.rb +15 -0
  64. data/lib/puree/rest/mixins/person_mixin.rb +15 -0
  65. data/lib/puree/rest/mixins/press_media_mixin.rb +15 -0
  66. data/lib/puree/rest/mixins/prize_mixin.rb +15 -0
  67. data/lib/puree/rest/mixins/project_mixin.rb +15 -0
  68. data/lib/puree/rest/mixins/research_output_mixin.rb +15 -0
  69. data/lib/puree/rest/mixins/student_thesis_mixin.rb +15 -0
  70. data/lib/puree/rest/organisational_unit.rb +51 -0
  71. data/lib/puree/rest/person.rb +58 -0
  72. data/lib/puree/rest/press_media.rb +24 -0
  73. data/lib/puree/rest/prize.rb +24 -0
  74. data/lib/puree/rest/project.rb +27 -0
  75. data/lib/puree/rest/publisher.rb +31 -0
  76. data/lib/puree/rest/research_output.rb +24 -0
  77. data/lib/puree/rest/rest.rb +30 -0
  78. data/lib/puree/util/util.rb +3 -0
  79. data/lib/puree/version.rb +1 -1
  80. data/lib/puree/xml_extractor/base.rb +6 -6
  81. data/lib/puree/xml_extractor/collection.rb +112 -19
  82. data/lib/puree/xml_extractor/conference_paper.rb +9 -2
  83. data/lib/puree/xml_extractor/dataset.rb +56 -166
  84. data/lib/puree/xml_extractor/doctoral_thesis.rb +1 -1
  85. data/lib/puree/xml_extractor/event.rb +16 -19
  86. data/lib/puree/xml_extractor/external_organisation.rb +14 -5
  87. data/lib/puree/xml_extractor/journal.rb +18 -8
  88. data/lib/puree/xml_extractor/journal_article.rb +24 -11
  89. data/lib/puree/xml_extractor/masters_thesis.rb +1 -1
  90. data/lib/puree/xml_extractor/mixins/abstract_mixin.rb +17 -0
  91. data/lib/puree/xml_extractor/mixins/description_mixin.rb +17 -0
  92. data/lib/puree/xml_extractor/mixins/{external_organisations_mixin.rb → external_organisation_mixin.rb} +2 -2
  93. data/lib/puree/xml_extractor/mixins/identifier_mixin.rb +25 -0
  94. data/lib/puree/xml_extractor/mixins/keyword_mixin.rb +21 -0
  95. data/lib/puree/xml_extractor/mixins/organisational_unit_mixin.rb +18 -0
  96. data/lib/puree/xml_extractor/mixins/owner_mixin.rb +18 -0
  97. data/lib/puree/xml_extractor/mixins/peer_reviewed_mixin.rb +1 -1
  98. data/lib/puree/xml_extractor/mixins/person_mixin.rb +45 -0
  99. data/lib/puree/xml_extractor/mixins/publisher_mixin.rb +22 -0
  100. data/lib/puree/xml_extractor/mixins/{associated_mixin.rb → research_output_mixin.rb} +7 -7
  101. data/lib/puree/xml_extractor/mixins/title_mixin.rb +17 -0
  102. data/lib/puree/xml_extractor/mixins/type_mixin.rb +17 -0
  103. data/lib/puree/xml_extractor/mixins/workflow_mixin.rb +17 -0
  104. data/lib/puree/xml_extractor/organisational_unit.rb +82 -0
  105. data/lib/puree/xml_extractor/paper.rb +17 -3
  106. data/lib/puree/xml_extractor/person.rb +30 -35
  107. data/lib/puree/xml_extractor/project.rb +39 -75
  108. data/lib/puree/xml_extractor/publisher.rb +15 -6
  109. data/lib/puree/xml_extractor/research_output.rb +189 -0
  110. data/lib/puree/xml_extractor/resource.rb +28 -36
  111. data/lib/puree/xml_extractor/shared.rb +12 -9
  112. data/lib/puree/xml_extractor/thesis.rb +29 -15
  113. data/lib/puree/xml_extractor/xml_extractor.rb +43 -0
  114. data/lib/puree.rb +5 -114
  115. data/puree.gemspec +1 -1
  116. data/test/extractor/resource_test.rb +103 -0
  117. data/test/rest/base_test.rb +45 -0
  118. data/test/rest/common_test.rb +44 -0
  119. data/test/test_extractor_helper.rb +1 -0
  120. data/test/test_helper.rb +17 -0
  121. data/test/test_rest_helper.rb +82 -0
  122. data/test/test_xml_extractor_helper.rb +17 -0
  123. data/test/xml_extractor/xml_extractor_collection_test.rb +120 -0
  124. data/test/xml_extractor/xml_extractor_conference_paper_test.rb +69 -0
  125. data/test/xml_extractor/xml_extractor_dataset_test.rb +156 -0
  126. data/test/xml_extractor/xml_extractor_event_test.rb +58 -0
  127. data/test/xml_extractor/xml_extractor_external_organisation_test.rb +49 -0
  128. data/test/xml_extractor/xml_extractor_journal_article_test.rb +66 -0
  129. data/test/xml_extractor/xml_extractor_journal_test.rb +53 -0
  130. data/test/xml_extractor/xml_extractor_organisation_test.rb +80 -0
  131. data/test/xml_extractor/xml_extractor_person_test.rb +88 -0
  132. data/test/xml_extractor/xml_extractor_project_test.rb +136 -0
  133. data/test/xml_extractor/xml_extractor_publisher_test.rb +49 -0
  134. data/test/xml_extractor/xml_extractor_research_output_test.rb +214 -0
  135. data/test/xml_extractor/xml_extractor_thesis_test.rb +80 -0
  136. metadata +105 -68
  137. data/lib/puree/api/api.rb +0 -9
  138. data/lib/puree/api/authentication.rb +0 -33
  139. data/lib/puree/api/configuration.rb +0 -43
  140. data/lib/puree/api/map.rb +0 -80
  141. data/lib/puree/api/person_request.rb +0 -64
  142. data/lib/puree/api/request.rb +0 -119
  143. data/lib/puree/extractor/collection.rb +0 -131
  144. data/lib/puree/extractor/download.rb +0 -71
  145. data/lib/puree/extractor/organisation.rb +0 -34
  146. data/lib/puree/extractor/paper_base.rb +0 -28
  147. data/lib/puree/extractor/publication.rb +0 -53
  148. data/lib/puree/extractor/server.rb +0 -56
  149. data/lib/puree/model/download_header.rb +0 -21
  150. data/lib/puree/model/paper_base.rb +0 -19
  151. data/lib/puree/model/server.rb +0 -13
  152. data/lib/puree/query/funding.rb +0 -54
  153. data/lib/puree/query/person.rb +0 -121
  154. data/lib/puree/query/query.rb +0 -6
  155. data/lib/puree/xml_extractor/download.rb +0 -42
  156. data/lib/puree/xml_extractor/mixins/workflow_state_mixin.rb +0 -18
  157. data/lib/puree/xml_extractor/organisation.rb +0 -75
  158. data/lib/puree/xml_extractor/paper_base.rb +0 -17
  159. data/lib/puree/xml_extractor/publication.rb +0 -257
  160. data/lib/puree/xml_extractor/server.rb +0 -32
  161. data/spec/download_http_spec.rb +0 -31
  162. data/spec/open_api_dataset_http_spec.rb +0 -15
  163. data/spec/query/funding_http_spec.rb +0 -29
  164. data/spec/query/person_http_spec.rb +0 -52
  165. data/spec/resource/collection_all_http_spec.rb +0 -77
  166. data/spec/resource/collection_http_spec.rb +0 -65
  167. data/spec/resource/dataset_http_spec.rb +0 -112
  168. data/spec/resource/event_http_spec.rb +0 -52
  169. data/spec/resource/journal_http_spec.rb +0 -36
  170. data/spec/resource/organisation_http_spec.rb +0 -52
  171. data/spec/resource/person_http_spec.rb +0 -60
  172. data/spec/resource/project_http_spec.rb +0 -89
  173. data/spec/resource/publication_http_spec.rb +0 -126
  174. data/spec/resource/publisher_http_spec.rb +0 -26
  175. data/spec/server_http_spec.rb +0 -26
  176. 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'
@@ -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