rif-cs 1.0.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.
@@ -0,0 +1,270 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "RIFCS::Collection" do
4
+ class CollectionExample
5
+ require 'date'
6
+ include RIFCS::Collection
7
+
8
+ attr_reader :collection_key
9
+
10
+ def initialize(key='a key')
11
+ @collection_key = key
12
+ end
13
+
14
+ def collection_date_accessioned
15
+ Time.new(2012, 6, 14).utc
16
+ end
17
+
18
+ def collection_group
19
+ 'test group'
20
+ end
21
+
22
+ def collection_originating_source
23
+ 'tomato'
24
+ end
25
+
26
+ def collection_type
27
+ 'dataset'
28
+ end
29
+
30
+ def collection_date_modified
31
+ Time.new(2012, 6, 14).utc
32
+ end
33
+
34
+ def collection_identifiers
35
+ [
36
+ { value: 'http://example.com', type: 'uri' },
37
+ { value: '123', type: 'local' }
38
+ ]
39
+ end
40
+
41
+ def collection_names
42
+ [
43
+ {
44
+ type: 'primary',
45
+ name_parts: [
46
+ { type: 'title', value: 'Dr' },
47
+ { type: 'given', value: 'John' },
48
+ { type: 'family', value: 'Doe' }
49
+ ]
50
+ },
51
+ ]
52
+ end
53
+
54
+ def collection_related_info
55
+ [
56
+ {
57
+ type: 'website',
58
+ identifier: {
59
+ value: 'http://example.com/personalsites/foo',
60
+ type: 'uri'
61
+ },
62
+ title: 'This person\'s blog',
63
+ notes: 'Another blog'
64
+ },
65
+ {
66
+ type: 'publication',
67
+ identifier: {
68
+ value: '111',
69
+ type: 'isbn'
70
+ },
71
+ title: 'The Ordering of Things',
72
+ notes: 'Not available'
73
+ }
74
+ ]
75
+ end
76
+
77
+ def collection_related_objects
78
+ {
79
+ has_association_with: [
80
+ {
81
+ key: 'b party',
82
+ relation: {
83
+ description: 'owner'
84
+ }
85
+ }
86
+ ],
87
+ is_member_of: [
88
+ {
89
+ key: 'some group'
90
+ }
91
+ ]
92
+ }
93
+ end
94
+
95
+ def collection_locations
96
+ [
97
+ {
98
+ date_from: Time.new(2012, 6, 14).utc,
99
+ addresses: [
100
+ {
101
+ electronic: [
102
+ {
103
+ type: 'email',
104
+ value: 'joe@example.com'
105
+ },
106
+ {
107
+ type: 'uri',
108
+ value: "http://example.com/people/#{@collection_key}",
109
+ args: [
110
+ { value: 'placeholder', required: 'false' }
111
+ ]
112
+ }
113
+ ],
114
+ physical: [
115
+ {
116
+ type: 'postalAddress',
117
+ address_parts: [
118
+ {
119
+ type: 'country',
120
+ value: 'Austrlia'
121
+ },
122
+ ]
123
+ },
124
+ {
125
+ address_parts: [
126
+ {
127
+ type: 'telephoneNumber',
128
+ value: '+61 2 9123 4567'
129
+ }
130
+ ]
131
+ }
132
+ ]
133
+ }
134
+ ]
135
+ }
136
+ ]
137
+ end
138
+
139
+ def collection_coverage
140
+ [
141
+ {
142
+ spatials: [
143
+ {
144
+ value: '<gmlPoint gmlid="p21" srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gmlcoordinates>45.67, 88.56</gmlcoordinates></gmlPoint>',
145
+ type: 'gml'
146
+ }
147
+ ],
148
+ temporals: [
149
+ {
150
+ dates: [
151
+ {
152
+ value: Time.new(2012, 6, 14).utc,
153
+ date_format: 'UTC',
154
+ type: 'dateFrom'
155
+ },
156
+ {
157
+ value: Time.new(2013, 6, 14).utc,
158
+ date_format: 'UTC',
159
+ type: 'dateTo'
160
+ },
161
+ ],
162
+ text: ['Self destructs in 1 year']
163
+ }
164
+ ]
165
+ }
166
+ ]
167
+ end
168
+
169
+ def collection_descriptions
170
+ [
171
+ {
172
+ value: 'A researcher',
173
+ type: 'brief',
174
+ 'xmllang' => nil
175
+ },
176
+ {
177
+ value: 'Not just any researcher',
178
+ type: 'full'
179
+ }
180
+ ]
181
+ end
182
+
183
+ def collection_existence_dates
184
+ [
185
+ {
186
+ start_date: {
187
+ value: Time.new(2012, 6, 14).utc,
188
+ date_format: 'UTC'
189
+ },
190
+ end_date: {
191
+ }
192
+ }
193
+ ]
194
+ end
195
+
196
+ def collection_rights
197
+ [
198
+ {
199
+ rights_statement: {
200
+ rights_uri: 'http://www.intersect.org.au/policies',
201
+ value: 'Copyright 2012 Intersect Australia Ltd.'
202
+ },
203
+ licence: {
204
+ value: 'Attribution (CC BY)',
205
+ rights_uri: 'http://creativecommons.org/licenses/by/3.0',
206
+ type: ''
207
+ },
208
+ access_rights: {
209
+ value: 'Available to all without restriction'
210
+ }
211
+ }
212
+ ]
213
+ end
214
+
215
+ def collection_subjects
216
+ [
217
+ {
218
+ value: '123456',
219
+ type: 'anzsrc-for'
220
+ }
221
+ ]
222
+ end
223
+
224
+ def collection_citation_info
225
+ [
226
+ {
227
+ full_citation: {
228
+ style: 'Harvard',
229
+ value: 'Australian Bureau of Agricultural and Resource Economics 2001, Aquaculture development in Australia: a review of key economic issues, ABARE, Canberra.'
230
+ },
231
+ citation_metadata: {
232
+ identifier: {
233
+ type: 'isbn',
234
+ value: '1234'
235
+ },
236
+ contributor: [
237
+ {
238
+ name_parts: [
239
+ { type: 'title', value: 'Dr' },
240
+ { type: 'given', value: 'Jane' },
241
+ { type: 'family', value: 'Doe' }
242
+ ]
243
+ }
244
+ ],
245
+ title: 'Aquaculture development in Australia: a review of key economic issues',
246
+ edition: '1st',
247
+ publisher: 'ABARE',
248
+ place_published: 'Canberra',
249
+ date: [
250
+ {
251
+ value: '2012-06-14',
252
+ type: 'publicationDate'
253
+ }
254
+ ],
255
+ url: 'http://example.com',
256
+ context: 'local'
257
+ }
258
+ }
259
+ ]
260
+ end
261
+
262
+ end
263
+
264
+ it "should give a RIF-CS XML Collection record for a model" do
265
+ expected = IO.read(File.join(File.dirname(__FILE__), 'files', 'collection.xml'))
266
+ collection = CollectionExample.new
267
+ collection.to_rifcs.to_xml.should eq(expected)
268
+ end
269
+
270
+ end
@@ -0,0 +1,228 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "RIFCS::Party" do
4
+ class PartyExample
5
+ require 'date'
6
+ include RIFCS::Party
7
+
8
+ attr_reader :party_key
9
+
10
+ def initialize(key='a key')
11
+ @party_key = key
12
+ end
13
+
14
+ def party_group
15
+ 'test group'
16
+ end
17
+
18
+ def party_originating_source
19
+ 'tomato'
20
+ end
21
+
22
+ def party_type
23
+ 'person'
24
+ end
25
+
26
+ def party_date_modified
27
+ Time.new(2012, 6, 14).utc
28
+ end
29
+
30
+ def party_identifiers
31
+ [
32
+ { value: 'http://example.com', type: 'uri' },
33
+ { value: '123', type: 'local' }
34
+ ]
35
+ end
36
+
37
+ def party_names
38
+ [
39
+ {
40
+ type: 'primary',
41
+ name_parts: [
42
+ { type: 'title', value: 'Dr' },
43
+ { type: 'given', value: 'John' },
44
+ { type: 'family', value: 'Doe' }
45
+ ]
46
+ },
47
+ ]
48
+ end
49
+
50
+ def party_related_info
51
+ [
52
+ {
53
+ type: 'website',
54
+ identifier: {
55
+ value: 'http://example.com/personalsites/foo',
56
+ type: 'uri'
57
+ },
58
+ title: 'This person\'s blog',
59
+ notes: 'Another blog'
60
+ },
61
+ {
62
+ type: 'publication',
63
+ identifier: {
64
+ value: '111',
65
+ type: 'isbn'
66
+ },
67
+ title: 'The Ordering of Things',
68
+ notes: 'Not available'
69
+ }
70
+ ]
71
+ end
72
+
73
+ def party_related_objects
74
+ {
75
+ has_association_with: [
76
+ {
77
+ key: 'b party',
78
+ relation: {
79
+ description: 'Supervisor'
80
+ }
81
+ }
82
+ ],
83
+ is_member_of: [
84
+ {
85
+ key: 'some group'
86
+ }
87
+ ]
88
+ }
89
+ end
90
+
91
+ def party_locations
92
+ [
93
+ {
94
+ date_from: Time.new(2012, 6, 14).utc,
95
+ addresses: [
96
+ {
97
+ electronic: [
98
+ {
99
+ type: 'email',
100
+ value: 'joe@example.com'
101
+ },
102
+ {
103
+ type: 'uri',
104
+ value: "http://example.com/people/#{@party_key}",
105
+ args: [
106
+ { value: 'placeholder', required: 'false' }
107
+ ]
108
+ }
109
+ ],
110
+ physical: [
111
+ {
112
+ type: 'postalAddress',
113
+ address_parts: [
114
+ {
115
+ type: 'country',
116
+ value: 'Austrlia'
117
+ },
118
+ ]
119
+ },
120
+ {
121
+ address_parts: [
122
+ {
123
+ type: 'telephoneNumber',
124
+ value: '+61 2 9123 4567'
125
+ }
126
+ ]
127
+ }
128
+ ]
129
+ }
130
+ ]
131
+ }
132
+ ]
133
+ end
134
+
135
+ def party_coverage
136
+ [
137
+ {
138
+ spatials: [
139
+ {
140
+ value: '<gmlPoint gmlid="p21" srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gmlcoordinates>45.67, 88.56</gmlcoordinates></gmlPoint>',
141
+ type: 'gml'
142
+ }
143
+ ],
144
+ temporals: [
145
+ {
146
+ dates: [
147
+ {
148
+ value: Time.new(2012, 6, 14).utc,
149
+ date_format: 'UTC',
150
+ type: 'dateFrom'
151
+ },
152
+ {
153
+ value: Time.new(2013, 6, 14).utc,
154
+ date_format: 'UTC',
155
+ type: 'dateTo'
156
+ },
157
+ ],
158
+ text: ['Self destructs in 1 year']
159
+ }
160
+ ]
161
+ }
162
+ ]
163
+ end
164
+
165
+ def party_descriptions
166
+ [
167
+ {
168
+ value: 'A researcher',
169
+ type: 'brief',
170
+ 'xmllang' => nil
171
+ },
172
+ {
173
+ value: 'Not just any researcher',
174
+ type: 'full'
175
+ }
176
+ ]
177
+ end
178
+
179
+ def party_existence_dates
180
+ [
181
+ {
182
+ start_date: {
183
+ value: Time.new(2012, 6, 14).utc,
184
+ date_format: 'UTC'
185
+ },
186
+ end_date: {
187
+ }
188
+ }
189
+ ]
190
+ end
191
+
192
+ def party_rights
193
+ [
194
+ {
195
+ rights_statement: {
196
+ rights_uri: 'http://www.intersect.org.au/policies',
197
+ value: 'Copyright 2012 Intersect Australia Ltd.'
198
+ },
199
+ licence: {
200
+ value: 'Attribution (CC BY)',
201
+ rights_uri: 'http://creativecommons.org/licenses/by/3.0',
202
+ type: ''
203
+ },
204
+ access_rights: {
205
+ value: 'Available to all without restriction'
206
+ }
207
+ }
208
+ ]
209
+ end
210
+
211
+ def party_subjects
212
+ [
213
+ {
214
+ value: '123456',
215
+ type: 'anzsrc-for'
216
+ }
217
+ ]
218
+ end
219
+
220
+ end
221
+
222
+ it "should give a RIF-CS XML Party record for a model" do
223
+ expected = IO.read(File.join(File.dirname(__FILE__), 'files', 'party.xml'))
224
+ party = PartyExample.new
225
+ party.to_rifcs.to_xml.should eq(expected)
226
+ end
227
+
228
+ end