elibri_onix_mocks 0.1.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.
- data/.gitignore +4 -0
- data/.travis.yml +10 -0
- data/Gemfile +4 -0
- data/README.md +32 -0
- data/Rakefile +8 -0
- data/elibri_onix_mocks.gemspec +32 -0
- data/lib/elibri_onix_mocks.rb +14 -0
- data/lib/elibri_onix_mocks/generators/xml_generator.rb +995 -0
- data/lib/elibri_onix_mocks/generators/xml_tags.yml +388 -0
- data/lib/elibri_onix_mocks/mocks/mock_method_missing.rb +91 -0
- data/lib/elibri_onix_mocks/mocks/xml_mocks.rb +801 -0
- data/lib/elibri_onix_mocks/onix_helpers.rb +160 -0
- data/lib/elibri_onix_mocks/version.rb +3 -0
- data/lib/elibri_onix_mocks/xml_variant.rb +122 -0
- data/spec/elibri_onix_mocks_spec.rb +33 -0
- data/spec/spec_helper.rb +12 -0
- metadata +179 -0
@@ -0,0 +1,801 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'mocha'
|
4
|
+
module Elibri
|
5
|
+
class XmlMocks
|
6
|
+
|
7
|
+
COVER_TYPES= [ 1 => 'gąbka',
|
8
|
+
2 => 'kartonowa',
|
9
|
+
3 => 'kartonowa foliowana',
|
10
|
+
4 => 'miękka',
|
11
|
+
5 => 'miękka ze skrzydełkami',
|
12
|
+
6 => 'plastikowa',
|
13
|
+
7 => 'skórzana',
|
14
|
+
8 => 'twarda',
|
15
|
+
9 => 'twarda z obwolutą',
|
16
|
+
10 => 'twarda lakierowana']
|
17
|
+
|
18
|
+
HARDBACK = 8
|
19
|
+
PLASTIC = 6
|
20
|
+
PAPERBACK = 4
|
21
|
+
|
22
|
+
# Przykładowe produkty dla generatora XML. Są to sztuczne twory (nie ma sensu tworzyć rekordów
|
23
|
+
# w bazie). Mają tylko służyć jako model, z którego można utworzyć jak najwięcej tagów z subsetu
|
24
|
+
# ONIX wykorzystywanego w Elibri.
|
25
|
+
# TODO: Czy to jest dobre miejsce na coś takiego?
|
26
|
+
module Examples
|
27
|
+
extend self
|
28
|
+
|
29
|
+
# Dla uproszczenia stub`ujemy większość funkcjonalności:
|
30
|
+
extend Mocha::API
|
31
|
+
|
32
|
+
|
33
|
+
# Najprostszy produkt, dla którego XML się waliduje przez RelaxNG
|
34
|
+
def basic_product(options = {})
|
35
|
+
opt = {:title => "Nielegalni",
|
36
|
+
:product_form_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductFormCode::BOOK,
|
37
|
+
:ean => nil,
|
38
|
+
:isbn_value => '9788324799992',
|
39
|
+
:record_reference => "fdb8fa072be774d97a97",
|
40
|
+
:facsimiles => [],
|
41
|
+
:similar_products => [],
|
42
|
+
:state => "published",
|
43
|
+
:public? => true}.merge(options)
|
44
|
+
mock("product") do |product|
|
45
|
+
product.stubs(
|
46
|
+
opt
|
47
|
+
)
|
48
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
def book_example(options = {})
|
53
|
+
opt = {
|
54
|
+
:state => "published",
|
55
|
+
:public? => true,
|
56
|
+
:product_form_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductFormCode::BOOK,
|
57
|
+
:cover_type_id => Elibri::XmlMocks::PAPERBACK,
|
58
|
+
:publishing_status_onix_code => Elibri::ONIX::Dict::Release_3_0::PublishingStatusCode::ACTIVE,
|
59
|
+
:publication_year => 2011,
|
60
|
+
:publication_month => 2,
|
61
|
+
:publication_day => 10,
|
62
|
+
:publisher_symbol => "W pustyni i w puszczy",
|
63
|
+
:record_reference => "fdb8fa072be774d97a97",
|
64
|
+
:imprint => stub('Imprint', :name => 'National Geographic'),
|
65
|
+
:publisher_name => 'GREG',
|
66
|
+
:publisher_id => 11,
|
67
|
+
:ean => '9788324788882',
|
68
|
+
:isbn_value => '9788324799992',
|
69
|
+
:pack_quantity => 7,
|
70
|
+
:price_printed_on_product_onix_code => Elibri::ONIX::Dict::Release_3_0::PricePrintedOnProduct::YES,
|
71
|
+
:width => 125,
|
72
|
+
:height => 195,
|
73
|
+
:thickness => 20,
|
74
|
+
:weight => 90,
|
75
|
+
:number_of_pages => 250,
|
76
|
+
:number_of_illustrations => 32,
|
77
|
+
:kind_of_book? => true,
|
78
|
+
:kind_of_ebook? => true,
|
79
|
+
:kind_of_audio? => true,
|
80
|
+
:kind_of_map? => true,
|
81
|
+
#:map_scale => '20000',
|
82
|
+
:elibri_product_category1_id => 1110,
|
83
|
+
:elibri_product_category2_id => 491,
|
84
|
+
:deletion_text => 'Rekord miał sporo błędów',
|
85
|
+
:sale_restricted? => true,
|
86
|
+
:sale_restricted_for => 'sklep.gildia.pl',
|
87
|
+
:sale_restricted_to => Date.new(2012, 7, 22),
|
88
|
+
:audience_age_from => 7,
|
89
|
+
:audience_age_to => 25,
|
90
|
+
# Trochę oszukujemy, żeby w XML`u pokazać wszystkie 3 opcje:
|
91
|
+
:authorship_kind => stub('AuthorshipKind', :user_given? => true, :collective? => false, :no_contributor? => false),
|
92
|
+
:contributors => [
|
93
|
+
stub('Contributor',
|
94
|
+
:artificial_id => 257,
|
95
|
+
:role_onix_code => Elibri::ONIX::Dict::Release_3_0::ContributorRole::TRANSLATOR,
|
96
|
+
:language_onix_code => 'pol',
|
97
|
+
:title => 'prof.',
|
98
|
+
:name => 'Henryk',
|
99
|
+
:last_name_prefix => 'von',
|
100
|
+
:last_name => 'Sienkiewicz',
|
101
|
+
:last_name_postfix => 'Ibrahim',
|
102
|
+
:biography => stub('OtherText', :text => 'Biografia Sienkiewicza', :exportable? => true, :is_a_review? => false, :resource_link => 'http://example').extend(MockMethodMissing),
|
103
|
+
:updated_at => Date.new(2011, 11, 04).to_time + 10.hours + 5.minutes + 27.seconds
|
104
|
+
).extend(MockMethodMissing)
|
105
|
+
],
|
106
|
+
:or_title => "Tytuł oryginalny",
|
107
|
+
:trade_title => "Tytuł handlowy",
|
108
|
+
:vat => 5,
|
109
|
+
:pkwiu => "58.11.1",
|
110
|
+
:price_amount => 12.99,
|
111
|
+
:collection_part => 'Tom 1',
|
112
|
+
:title => 'Tytuł',
|
113
|
+
:subtitle => 'Podtytuł',
|
114
|
+
:collection => stub('PublisherCollection', :name => 'Nazwa kolekcji'),
|
115
|
+
:edition_statement => 'wyd. 3, poprawione',
|
116
|
+
:languages => [stub('Language', :language_onix_code => 'pol', :role_onix_code => Elibri::ONIX::Dict::Release_3_0::LanguageRole::LANGUAGE_OF_TEXT)],
|
117
|
+
:other_texts => [
|
118
|
+
stub('OtherText',
|
119
|
+
:artificial_id => 137,
|
120
|
+
:type_onix_code => Elibri::ONIX::Dict::Release_3_0::OtherTextType::REVIEW,
|
121
|
+
:text => 'Recenzja książki',
|
122
|
+
:text_author => 'Jan Kowalski',
|
123
|
+
:updated_at => Date.new(2011, 12, 03).to_time + 19.hours + 5.minutes + 28.seconds,
|
124
|
+
:exportable? => true,
|
125
|
+
:is_a_review? => true,
|
126
|
+
:resource_link => 'http://example'
|
127
|
+
).extend(MockMethodMissing)
|
128
|
+
],
|
129
|
+
:series_membership_kind => stub('series_membership_kind', :user_given? => true),
|
130
|
+
:series_memberships => [
|
131
|
+
stub('SeriesMembership', :series_name => 'Lektury szkolne', :number_within_series => '2').extend(MockMethodMissing)
|
132
|
+
],
|
133
|
+
:facsimiles => [stub('Product', :publisher_name => 'PWN', :publisher_id => 12, :publisher_symbol => 'Tytuł dodruku', :isbn_value => '9788324705818')],
|
134
|
+
:similar_products => [stub('Product', :publisher_name => 'WNT', :publisher_id => 13, :publisher_symbol => 'Tytuł podobnej książki', :isbn_value => '9788324799992')],
|
135
|
+
:attachments => [
|
136
|
+
stub('ProductAttachment',
|
137
|
+
:id => 668,
|
138
|
+
:attachment_type_code => Elibri::ONIX::Dict::Release_3_0::ResourceContentType::FRONT_COVER,
|
139
|
+
:file_content_type => 'image/png',
|
140
|
+
:onix_resource_mode => Elibri::ONIX::Dict::Release_3_0::ResourceMode::IMAGE,
|
141
|
+
:file => stub('Paperclip::Attachment', :url => 'http://elibri.com.pl/sciezka/do/pliku.png'),
|
142
|
+
:updated_at => Date.new(2011, 12, 01).to_time + 19.hours + 5.minutes + 28.seconds
|
143
|
+
).extend(MockMethodMissing)
|
144
|
+
],
|
145
|
+
:product_availabilities => [
|
146
|
+
stub('ProductAvailability',
|
147
|
+
:supplier_identifier => 'GILD-123',
|
148
|
+
:supplier_role_onix_code => Elibri::ONIX::Dict::Release_3_0::SupplierRole::PUB_NON_EXL_DIST,
|
149
|
+
:product_availability_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductAvailabilityType::IN_STOCK,
|
150
|
+
:supplier => stub('Supplier',
|
151
|
+
:name => 'Gildia.pl',
|
152
|
+
:nip => '521-33-59-408',
|
153
|
+
:phone => '22 631 40 83',
|
154
|
+
:email => 'bok@gildia.pl',
|
155
|
+
:website => 'http://gildia.pl'
|
156
|
+
),
|
157
|
+
:stock_info => stub('stock_info', :exact_info? => true, :on_hand => '1000'),
|
158
|
+
:price_infos => [ stub('PriceInfo', :minimum_order_quantity => 20, :amount => 12.99, :vat => 7, :currency_code => 'PLN') ]
|
159
|
+
).extend(MockMethodMissing),
|
160
|
+
|
161
|
+
stub('ProductAvailability',
|
162
|
+
:supplier_identifier => 'pl.pwn.ksiegarnia.produkt.id.76734',
|
163
|
+
:supplier_role_onix_code => Elibri::ONIX::Dict::Release_3_0::SupplierRole::WHOLESALER,
|
164
|
+
:product_availability_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductAvailabilityType::IN_STOCK,
|
165
|
+
:supplier => stub('Supplier',
|
166
|
+
:name => 'PWN',
|
167
|
+
:nip => '521-33-59-408',
|
168
|
+
:phone => '22 631 40 83',
|
169
|
+
:email => 'bok@pwn.pl',
|
170
|
+
:website => 'http://pwn.pl'
|
171
|
+
).extend(MockMethodMissing),
|
172
|
+
:stock_info => stub('stock_info', :exact_info? => false, :quantity_code => 'mało'),
|
173
|
+
:price_infos => [ stub('PriceInfo', :minimum_order_quantity => 10, :amount => 14.99, :vat => 7, :currency_code => 'PLN') ]
|
174
|
+
).extend(MockMethodMissing)
|
175
|
+
]
|
176
|
+
}.merge(options)
|
177
|
+
mock("product").tap do |product|
|
178
|
+
product.stubs(
|
179
|
+
opt
|
180
|
+
)
|
181
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
182
|
+
end
|
183
|
+
|
184
|
+
def onix_record_identifiers_example(options = {})
|
185
|
+
opt = {
|
186
|
+
:state => "published",
|
187
|
+
:title => "Nielegalni",
|
188
|
+
:product_form_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductFormCode::BOOK,
|
189
|
+
:record_reference => "fdb8fa072be774d97a97",
|
190
|
+
:ean => '9788324788882',
|
191
|
+
:isbn_value => '9788324799992',
|
192
|
+
:public? => true,
|
193
|
+
:product_availabilities => [
|
194
|
+
stub('ProductAvailability', :supplier_identifier => '355006',
|
195
|
+
:product_availability_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductAvailabilityType::IN_STOCK,
|
196
|
+
:stock_info => stub('stock_info', :exact_info? => true, :on_hand => '1000'),
|
197
|
+
:price_infos => [ stub('PriceInfo', :minimum_order_quantity => 20, :amount => 12.99, :vat => 7, :currency_code => 'PLN') ],
|
198
|
+
:supplier => stub('Supplier', :name => "Olesiejuk",
|
199
|
+
:nip => "527-22-62-432", :phone => "22 721 70 07", :email => "", :website => "www.olesiejuk.pl"),
|
200
|
+
:supplier_role_onix_code => Elibri::ONIX::Dict::Release_3_0::SupplierRole::WHOLESALER).extend(MockMethodMissing)
|
201
|
+
]
|
202
|
+
}.merge(options)
|
203
|
+
mock("product").tap do |product|
|
204
|
+
product.stubs(
|
205
|
+
opt
|
206
|
+
)
|
207
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
208
|
+
end
|
209
|
+
|
210
|
+
|
211
|
+
def onix_product_form_example(options = {})
|
212
|
+
opt = {
|
213
|
+
:title => "Nielegalni",
|
214
|
+
:ean => nil,
|
215
|
+
:isbn_value => '9788324799992',
|
216
|
+
:record_reference => "fdb8fa072be774d97a97",
|
217
|
+
:product_form_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductFormCode::BOOK,
|
218
|
+
:cover_type_id => Elibri::XmlMocks::PAPERBACK,
|
219
|
+
:state => "published",
|
220
|
+
:public? => true,
|
221
|
+
:product_availabilities => []
|
222
|
+
}.merge(options)
|
223
|
+
mock("product").tap do |product|
|
224
|
+
product.stubs(
|
225
|
+
opt
|
226
|
+
)
|
227
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
228
|
+
end
|
229
|
+
|
230
|
+
|
231
|
+
def onix_epub_details_example(options = {})
|
232
|
+
opt = {
|
233
|
+
:title => "Nielegalni",
|
234
|
+
:ean => nil,
|
235
|
+
:isbn_value => '9788324799992',
|
236
|
+
:record_reference => "fdb8fa072be774d97a97",
|
237
|
+
:product_form_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductFormCode::EBOOK,
|
238
|
+
:epub_technical_protection_onix_code => Elibri::ONIX::Dict::Release_3_0::EpubTechnicalProtection::DRM,
|
239
|
+
:product_form_detail_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductFormDetail::EPUB,
|
240
|
+
:state => "published",
|
241
|
+
:public? => true,
|
242
|
+
:product_availabilities => []
|
243
|
+
}.merge(options)
|
244
|
+
mock("product").tap do |product|
|
245
|
+
product.stubs(
|
246
|
+
opt
|
247
|
+
)
|
248
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
249
|
+
end
|
250
|
+
|
251
|
+
|
252
|
+
def onix_categories_example(options = {})
|
253
|
+
opt = {
|
254
|
+
:publisher_name => "Buchmann",
|
255
|
+
:publisher_id => 15,
|
256
|
+
:publisher_product_categories => [
|
257
|
+
stub('PublisherProductCategory', :name => "Beletrystyka: Horror"),
|
258
|
+
stub('PublisherProductCategory', :name => "Beletrystyka: Sensacja")
|
259
|
+
]
|
260
|
+
}.merge(options)
|
261
|
+
basic_product.tap do |product|
|
262
|
+
product.stubs(
|
263
|
+
opt
|
264
|
+
)
|
265
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
266
|
+
end
|
267
|
+
|
268
|
+
def onix_languages_example(options = {})
|
269
|
+
opt = {
|
270
|
+
:languages => [
|
271
|
+
stub('Language', :language_onix_code => 'pol', :role_onix_code => Elibri::ONIX::Dict::Release_3_0::LanguageRole::LANGUAGE_OF_TEXT),
|
272
|
+
stub('Language', :language_onix_code => 'eng', :role_onix_code => Elibri::ONIX::Dict::Release_3_0::LanguageRole::LANGUAGE_OF_ABSTRACTS)
|
273
|
+
]
|
274
|
+
}.merge(options)
|
275
|
+
basic_product.tap do |product|
|
276
|
+
product.stubs(
|
277
|
+
opt
|
278
|
+
)
|
279
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
280
|
+
end
|
281
|
+
|
282
|
+
|
283
|
+
def onix_measurement_example(options = {})
|
284
|
+
opt = {
|
285
|
+
:title => "Katowice, mapa",
|
286
|
+
:ean => nil,
|
287
|
+
:isbn_value => '9788324799992',
|
288
|
+
:record_reference => "fdb8fa072be774d97a97",
|
289
|
+
:product_form_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductFormCode::SHEET_MAP,
|
290
|
+
:width => 125,
|
291
|
+
:height => 195,
|
292
|
+
:thickness => 20,
|
293
|
+
:weight => 90,
|
294
|
+
:map_scale => 50_000,
|
295
|
+
:state => "published",
|
296
|
+
:public? => true
|
297
|
+
}.merge(options)
|
298
|
+
mock("product").tap do |product|
|
299
|
+
product.stubs(
|
300
|
+
opt
|
301
|
+
)
|
302
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
303
|
+
end
|
304
|
+
|
305
|
+
|
306
|
+
def onix_sale_restrictions_example(options = {})
|
307
|
+
opt = {
|
308
|
+
:sale_restricted? => true,
|
309
|
+
:sale_restricted_for => 'Empik',
|
310
|
+
:sale_restricted_to => Date.new(2012, 7, 22),
|
311
|
+
:publication_year => 2012,
|
312
|
+
:publication_month => 7,
|
313
|
+
:publication_day => 12
|
314
|
+
}.merge(options)
|
315
|
+
basic_product.tap do |product|
|
316
|
+
product.stubs(
|
317
|
+
opt
|
318
|
+
)
|
319
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
320
|
+
end
|
321
|
+
|
322
|
+
|
323
|
+
def onix_audience_range_example(options = {})
|
324
|
+
opt = {
|
325
|
+
:audience_age_from => 7,
|
326
|
+
:audience_age_to => 10
|
327
|
+
}.merge(options)
|
328
|
+
basic_product.tap do |product|
|
329
|
+
product.stubs(
|
330
|
+
opt
|
331
|
+
)
|
332
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
333
|
+
end
|
334
|
+
|
335
|
+
|
336
|
+
def onix_publisher_info_example(options = {})
|
337
|
+
opt = {
|
338
|
+
:publisher_name => 'G+J Gruner+Jahr Polska',
|
339
|
+
:publisher_id => 14,
|
340
|
+
:imprint => stub('Imprint', :name => 'National Geographic')
|
341
|
+
}.merge(options)
|
342
|
+
basic_product.tap do |product|
|
343
|
+
product.stubs(
|
344
|
+
opt
|
345
|
+
)
|
346
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
347
|
+
end
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
def onix_subjects_example(options = {})
|
352
|
+
opt = {
|
353
|
+
:elibri_product_category1_id => 1110,
|
354
|
+
:elibri_product_category2_id => 491
|
355
|
+
}.merge(options)
|
356
|
+
basic_product.tap do |product|
|
357
|
+
product.stubs(
|
358
|
+
opt
|
359
|
+
)
|
360
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
361
|
+
end
|
362
|
+
|
363
|
+
|
364
|
+
def onix_edition_example(options = {})
|
365
|
+
opt = {
|
366
|
+
:edition_statement => 'wyd. 3, poprawione'
|
367
|
+
}.merge(options)
|
368
|
+
basic_product.tap do |product|
|
369
|
+
product.stubs(
|
370
|
+
opt
|
371
|
+
)
|
372
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
373
|
+
end
|
374
|
+
|
375
|
+
|
376
|
+
def onix_ebook_extent_example(options = {})
|
377
|
+
opt = {
|
378
|
+
:example_title => 'E-book (rozmiar pliku, ilość stron i obrazków)',
|
379
|
+
:product_form_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductFormCode::EBOOK,
|
380
|
+
:file_size => 1.22,
|
381
|
+
:number_of_pages => 150,
|
382
|
+
:number_of_illustrations => 12
|
383
|
+
}.merge(options)
|
384
|
+
basic_product.tap do |product|
|
385
|
+
product.stubs(
|
386
|
+
opt
|
387
|
+
)
|
388
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
389
|
+
end
|
390
|
+
|
391
|
+
def onix_audiobook_extent_example(options = {})
|
392
|
+
opt = {
|
393
|
+
:example_title => 'Audio CD z długością ścieżki',
|
394
|
+
:product_form_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductFormCode::AUDIO_CD,
|
395
|
+
:duration => 340
|
396
|
+
}.merge(options)
|
397
|
+
basic_product.tap do |product|
|
398
|
+
product.stubs(
|
399
|
+
opt
|
400
|
+
)
|
401
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
402
|
+
end
|
403
|
+
|
404
|
+
def onix_no_contributors_example(options = {})
|
405
|
+
opt = {
|
406
|
+
:example_title => 'Brak autorów',
|
407
|
+
:authorship_kind => ActiveSupport::StringInquirer.new("no_contributor")
|
408
|
+
}.merge(options)
|
409
|
+
basic_product.tap do |product|
|
410
|
+
product.stubs(
|
411
|
+
opt
|
412
|
+
)
|
413
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
414
|
+
end
|
415
|
+
|
416
|
+
def onix_collective_work_example(options = {})
|
417
|
+
opt = {
|
418
|
+
:example_title => 'Praca zbiorowa',
|
419
|
+
:authorship_kind => ActiveSupport::StringInquirer.new("collective")
|
420
|
+
}.merge(options)
|
421
|
+
basic_product.tap do |product|
|
422
|
+
product.stubs(
|
423
|
+
opt
|
424
|
+
)
|
425
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
426
|
+
end
|
427
|
+
|
428
|
+
def onix_contributors_example(options = {})
|
429
|
+
opt = {
|
430
|
+
:example_title => 'Wyszczególnieni autorzy',
|
431
|
+
:title => "Taka jest nasza wiara",
|
432
|
+
:authorship_kind => ActiveSupport::StringInquirer.new("user_given"),
|
433
|
+
:contributors => [
|
434
|
+
stub('Contributor',
|
435
|
+
:artificial_id => 255,
|
436
|
+
:role_onix_code => Elibri::ONIX::Dict::Release_3_0::ContributorRole::AUTHOR,
|
437
|
+
:missing_parts => true,
|
438
|
+
:full_name => 'Św. Tomasz z Akwinu',
|
439
|
+
:biography => stub('OtherText', :text => 'Tomasz z Akwinu, Akwinata, łac. Thoma de Aquino (ur. 1225, zm. 7 marca 1274) – filozof scholastyczny, teolog, członek zakonu dominikanów. Był jednym z najwybitniejszych myślicieli w dziejach chrześcijaństwa. Święty Kościoła katolickiego, jeden z doktorów Kościoła, który nauczając przekazywał owoce swej kontemplacji (łac. contemplata aliis tradere).'),
|
440
|
+
:updated_at => Date.new(2011, 11, 04).to_time + 10.hours + 5.minutes + 27.seconds
|
441
|
+
).extend(MockMethodMissing),
|
442
|
+
stub('Contributor',
|
443
|
+
:artificial_id => 256,
|
444
|
+
:role_onix_code => Elibri::ONIX::Dict::Release_3_0::ContributorRole::TRANSLATOR,
|
445
|
+
:language_onix_code => 'lat',
|
446
|
+
:title => 'prof. ks.',
|
447
|
+
:name => 'Henryk',
|
448
|
+
:last_name_prefix => 'von',
|
449
|
+
:last_name => 'Hausswolff',
|
450
|
+
:last_name_postfix => 'OP',
|
451
|
+
:updated_at => Date.new(2011, 11, 04).to_time + 10.hours + 5.minutes + 27.seconds
|
452
|
+
).extend(MockMethodMissing)
|
453
|
+
]
|
454
|
+
}.merge(options)
|
455
|
+
basic_product.tap do |product|
|
456
|
+
product.stubs(
|
457
|
+
opt
|
458
|
+
)
|
459
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
460
|
+
end
|
461
|
+
|
462
|
+
def onix_announced_product_example(options = {})
|
463
|
+
opt = {
|
464
|
+
:state => :announced,
|
465
|
+
:publisher_symbol => "Światu nie mamy czego zazdrościć.",
|
466
|
+
:or_title => "Nothing to Envy: Ordinary Lives in North Korea",
|
467
|
+
:collection_part => '33',
|
468
|
+
:title => 'Światu nie mamy czego zazdrościć.',
|
469
|
+
:subtitle => "Zwyczajne losy mieszkańców Korei Północnej.",
|
470
|
+
:publication_year => 2011
|
471
|
+
}.merge(options)
|
472
|
+
basic_product.tap do |product|
|
473
|
+
product.stubs(
|
474
|
+
opt
|
475
|
+
)
|
476
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
477
|
+
end
|
478
|
+
|
479
|
+
def onix_preorder_product_example(options = {})
|
480
|
+
opt = {
|
481
|
+
:state => :preorder,
|
482
|
+
:publication_year => 2011,
|
483
|
+
:publication_month => 2,
|
484
|
+
:publication_day => 10
|
485
|
+
}.merge(options)
|
486
|
+
basic_product.tap do |product|
|
487
|
+
product.stubs(
|
488
|
+
opt
|
489
|
+
)
|
490
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
491
|
+
end
|
492
|
+
|
493
|
+
def onix_published_product_example(options = {})
|
494
|
+
opt = {
|
495
|
+
:state => :published,
|
496
|
+
:publication_year => 2011,
|
497
|
+
:publication_month => 2
|
498
|
+
}.merge(options)
|
499
|
+
basic_product.tap do |product|
|
500
|
+
product.stubs(
|
501
|
+
opt
|
502
|
+
)
|
503
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
504
|
+
end
|
505
|
+
|
506
|
+
def onix_out_of_print_product_example(options = {})
|
507
|
+
opt = {
|
508
|
+
:state => :out_of_print
|
509
|
+
}.merge(options)
|
510
|
+
basic_product.tap do |product|
|
511
|
+
product.stubs(
|
512
|
+
opt
|
513
|
+
)
|
514
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
515
|
+
end
|
516
|
+
|
517
|
+
def onix_titles_example(options = {})
|
518
|
+
opt = {
|
519
|
+
:publisher_symbol => "Światu nie mamy czego zazdrościć.",
|
520
|
+
:or_title => "Nothing to Envy: Ordinary Lives in North Korea",
|
521
|
+
:collection_part => '33',
|
522
|
+
:title => 'Światu nie mamy czego zazdrościć.',
|
523
|
+
:subtitle => "Zwyczajne losy mieszkańców Korei Północnej."
|
524
|
+
}.merge(options)
|
525
|
+
basic_product.tap do |product|
|
526
|
+
product.stubs(
|
527
|
+
opt
|
528
|
+
)
|
529
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
530
|
+
end
|
531
|
+
|
532
|
+
def onix_title_with_collection_example(options = {})
|
533
|
+
opt = {
|
534
|
+
:publisher_symbol => "Thorgal 33 Statek-Miecz TWARDA",
|
535
|
+
:or_title => "Thorgal: Le Bateau-Sabre",
|
536
|
+
:collection_part => '33',
|
537
|
+
:title => 'Statek-Miecz',
|
538
|
+
:collection => stub('PublisherCollection', :name => 'Thorgal')
|
539
|
+
}.merge(options)
|
540
|
+
basic_product.tap do |product|
|
541
|
+
product.stubs(
|
542
|
+
opt
|
543
|
+
)
|
544
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
545
|
+
end
|
546
|
+
|
547
|
+
|
548
|
+
|
549
|
+
def onix_texts_example(options = {})
|
550
|
+
opt = {
|
551
|
+
:other_texts => [
|
552
|
+
stub('OtherText',
|
553
|
+
:artificial_id => 133,
|
554
|
+
:type_onix_code => Elibri::ONIX::Dict::Release_3_0::OtherTextType::TABLE_OF_CONTENTS,
|
555
|
+
:text => '1. Wprowadzenie<br/>2. Rozdział pierwszy<br/>[...]',
|
556
|
+
:updated_at => Date.new(2011, 12, 04).to_time + 13.hours + 15.minutes + 5.seconds
|
557
|
+
).extend(MockMethodMissing),
|
558
|
+
stub('OtherText',
|
559
|
+
:artificial_id => 134,
|
560
|
+
:exportable_review => true,
|
561
|
+
:type_onix_code => Elibri::ONIX::Dict::Release_3_0::OtherTextType::REVIEW,
|
562
|
+
:text => 'Recenzja książki<br/>[...]',
|
563
|
+
:resource_link => 'http://nakanapie.pl/books/420469/reviews/2892.odnalezc-swa-droge',
|
564
|
+
:source_title => 'nakanapie.pl',
|
565
|
+
:text_author => 'Jan Kowalski',
|
566
|
+
:updated_at => Date.new(2011, 12, 04).to_time + 13.hours + 18.minutes + 15.seconds
|
567
|
+
).extend(MockMethodMissing),
|
568
|
+
stub('OtherText',
|
569
|
+
:artificial_id => 135,
|
570
|
+
:type_onix_code => Elibri::ONIX::Dict::Release_3_0::OtherTextType::MAIN_DESCRIPTION,
|
571
|
+
:text => 'Opis książki<br/>[...]',
|
572
|
+
:updated_at => Date.new(2011, 12, 04).to_time + 13.hours + 25.minutes + 18.seconds
|
573
|
+
).extend(MockMethodMissing),
|
574
|
+
stub('OtherText',
|
575
|
+
:artificial_id => 136,
|
576
|
+
:type_onix_code => Elibri::ONIX::Dict::Release_3_0::OtherTextType::EXCERPT,
|
577
|
+
:text => 'Fragment książki<br/>[...]',
|
578
|
+
:updated_at => Date.new(2011, 12, 04).to_time + 13.hours + 35.minutes + 2.seconds
|
579
|
+
).extend(MockMethodMissing),
|
580
|
+
]
|
581
|
+
}.merge(options)
|
582
|
+
basic_product.tap do |product|
|
583
|
+
product.stubs(
|
584
|
+
opt
|
585
|
+
)
|
586
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
587
|
+
end
|
588
|
+
|
589
|
+
|
590
|
+
def onix_related_products_example(options = {})
|
591
|
+
opt = {
|
592
|
+
:facsimiles => [stub('Product', :publisher_name => 'PWN', :publisher_id => 11, :publisher_symbol => 'Tytuł dodruku', :isbn_value => '9788324705818')],
|
593
|
+
:similar_products => [stub('Product', :publisher_name => 'WNT', :publisher_id => 12, :publisher_symbol => 'Tytuł podobnej książki', :isbn_value => '9788324799992')]
|
594
|
+
}.merge(options)
|
595
|
+
basic_product.tap do |product|
|
596
|
+
product.stubs(
|
597
|
+
opt
|
598
|
+
)
|
599
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
600
|
+
end
|
601
|
+
|
602
|
+
|
603
|
+
def onix_supply_details_example(options = {})
|
604
|
+
opt = {
|
605
|
+
:product_availabilities => [
|
606
|
+
stub('ProductAvailability',
|
607
|
+
:supplier_identifier => 'GILD-123',
|
608
|
+
:supplier_role_onix_code => Elibri::ONIX::Dict::Release_3_0::SupplierRole::PUB_NON_EXL_DIST,
|
609
|
+
:product_availability_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductAvailabilityType::IN_STOCK,
|
610
|
+
:supplier => stub('Supplier',
|
611
|
+
:name => 'Gildia.pl',
|
612
|
+
:nip => '521-33-59-408',
|
613
|
+
:phone => '22 631 40 83',
|
614
|
+
:email => 'bok@gildia.pl',
|
615
|
+
:website => 'http://gildia.pl'
|
616
|
+
),
|
617
|
+
:stock_info => stub('stock_info', :exact_info? => true, :on_hand => '1000'),
|
618
|
+
:price_infos => [ stub('PriceInfo', :minimum_order_quantity => 20, :amount => 12.99, :vat => 7, :currency_code => 'PLN') ]
|
619
|
+
),
|
620
|
+
|
621
|
+
stub('ProductAvailability',
|
622
|
+
:supplier_identifier => 'pl.pwn.ksiegarnia.produkt.id.76734',
|
623
|
+
:supplier_role_onix_code => Elibri::ONIX::Dict::Release_3_0::SupplierRole::WHOLESALER,
|
624
|
+
:product_availability_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductAvailabilityType::IN_STOCK,
|
625
|
+
:supplier => stub('Supplier',
|
626
|
+
:name => 'PWN',
|
627
|
+
:nip => '521-33-59-408',
|
628
|
+
:phone => '22 631 40 83',
|
629
|
+
:email => 'bok@pwn.pl',
|
630
|
+
:website => 'http://www.pwn.pl'
|
631
|
+
),
|
632
|
+
:stock_info => stub('stock_info', :exact_info? => false, :quantity_code => 'mało'),
|
633
|
+
:price_infos => [ stub('PriceInfo', :minimum_order_quantity => 10, :amount => 14.99, :vat => 7, :currency_code => 'PLN') ]
|
634
|
+
)
|
635
|
+
]
|
636
|
+
}.merge(options)
|
637
|
+
basic_product.tap do |product|
|
638
|
+
product.stubs(
|
639
|
+
opt
|
640
|
+
)
|
641
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
642
|
+
end
|
643
|
+
|
644
|
+
|
645
|
+
def onix_series_memberships_example(options = {})
|
646
|
+
opt = {
|
647
|
+
:series_membership_kind => stub('series_membership_kind', :user_given? => true),
|
648
|
+
:series_memberships => [
|
649
|
+
stub('SeriesMembership', :series_name => 'Lektury szkolne', :number_within_series => '2'),
|
650
|
+
stub('SeriesMembership', :series_name => 'Dla Bystrzaków', :number_within_series => '1')
|
651
|
+
]
|
652
|
+
}.merge(options)
|
653
|
+
basic_product.tap do |product|
|
654
|
+
product.stubs(
|
655
|
+
opt
|
656
|
+
)
|
657
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
658
|
+
end
|
659
|
+
|
660
|
+
|
661
|
+
def onix_supporting_resources_example(options = {})
|
662
|
+
opt = {
|
663
|
+
:attachments => [
|
664
|
+
stub('ProductAttachment',
|
665
|
+
:id => 667,
|
666
|
+
:attachment_type_code => Elibri::ONIX::Dict::Release_3_0::ResourceContentType::FRONT_COVER,
|
667
|
+
:file_content_type => 'image/png',
|
668
|
+
:onix_resource_mode => Elibri::ONIX::Dict::Release_3_0::ResourceMode::IMAGE,
|
669
|
+
:file => stub('Paperclip::Attachment', :url => 'http://elibri.com.pl/sciezka/do/pliku.png'),
|
670
|
+
:updated_at => Date.new(2011, 12, 01).to_time + 18.hours + 5.minutes + 28.seconds
|
671
|
+
),
|
672
|
+
stub('ProductAttachment',
|
673
|
+
:id => 668,
|
674
|
+
:attachment_type_code => Elibri::ONIX::Dict::Release_3_0::ResourceContentType::SAMPLE_CONTENT,
|
675
|
+
:file_content_type => 'application/pdf',
|
676
|
+
:onix_resource_mode => Elibri::ONIX::Dict::Release_3_0::ResourceMode::TEXT,
|
677
|
+
:file => stub('Paperclip::Attachment', :url => 'http://elibri.com.pl/sciezka/do/pliku.pdf'),
|
678
|
+
:updated_at => Date.new(2011, 12, 01).to_time + 18.hours + 9.minutes + 18.seconds
|
679
|
+
)
|
680
|
+
]
|
681
|
+
}.merge(options)
|
682
|
+
basic_product.tap do |product|
|
683
|
+
product.stubs(
|
684
|
+
opt
|
685
|
+
)
|
686
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
687
|
+
end
|
688
|
+
|
689
|
+
|
690
|
+
def onix_elibri_extensions_example(options = {})
|
691
|
+
opt = {
|
692
|
+
:cover_type_id => Elibri::XmlMocks::PAPERBACK,
|
693
|
+
:vat => 5,
|
694
|
+
:pkwiu => "58.11.1",
|
695
|
+
:price_amount => 12.99,
|
696
|
+
:preview_exists? => true
|
697
|
+
}.merge(options)
|
698
|
+
basic_product.tap do |product|
|
699
|
+
product.stubs(
|
700
|
+
opt
|
701
|
+
)
|
702
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
703
|
+
end
|
704
|
+
|
705
|
+
|
706
|
+
def contributor_mock(options = {})
|
707
|
+
opt = {
|
708
|
+
:artificial_id => 240,
|
709
|
+
:role_onix_code => Elibri::ONIX::Dict::Release_3_0::ContributorRole::AUTHOR,
|
710
|
+
:language_onix_code => 'pol',
|
711
|
+
:title => 'prof.',
|
712
|
+
:name => 'Henryk',
|
713
|
+
:last_name_prefix => 'von',
|
714
|
+
:last_name => 'Sienkiewicz',
|
715
|
+
:last_name_postfix => 'Ibrahim',
|
716
|
+
:biography => stub('OtherText', :text => 'Biografia Sienkiewicza', :exportable? => true, :is_a_review? => false, :resource_link => 'http://example').extend(MockMethodMissing),
|
717
|
+
:updated_at => Date.new(2011, 11, 04).to_time + 10.hours + 5.minutes + 27.seconds
|
718
|
+
}.merge(options)
|
719
|
+
mock('Contributor').tap do |contributor|
|
720
|
+
contributor.stubs(
|
721
|
+
opt
|
722
|
+
)
|
723
|
+
end.extend(OnixHelpers::InstanceMethods).extend(MockMethodMissing)
|
724
|
+
end
|
725
|
+
|
726
|
+
def review_mock(options = {})
|
727
|
+
opt = {
|
728
|
+
:artificial_id => 137,
|
729
|
+
:type_onix_code => Elibri::ONIX::Dict::Release_3_0::OtherTextType::REVIEW,
|
730
|
+
:text => 'Recenzja książki',
|
731
|
+
:text_author => 'Jan Kowalski',
|
732
|
+
:updated_at => Date.new(2011, 12, 03).to_time + 19.hours + 5.minutes + 28.seconds,
|
733
|
+
:exportable? => true,
|
734
|
+
:is_a_review? => true,
|
735
|
+
:resource_link => 'http://example'
|
736
|
+
}.merge(options)
|
737
|
+
mock('OtherText').tap do |other_text|
|
738
|
+
other_text.stubs(
|
739
|
+
opt
|
740
|
+
)
|
741
|
+
end.extend(MockMethodMissing)
|
742
|
+
end
|
743
|
+
|
744
|
+
def supply_detail_mock(options = {})
|
745
|
+
opt =
|
746
|
+
{
|
747
|
+
:supplier_identifier => 'GILD-123',
|
748
|
+
:supplier_role_onix_code => Elibri::ONIX::Dict::Release_3_0::SupplierRole::PUB_NON_EXL_DIST,
|
749
|
+
:product_availability_onix_code => Elibri::ONIX::Dict::Release_3_0::ProductAvailabilityType::IN_STOCK,
|
750
|
+
:supplier => stub('Supplier',
|
751
|
+
:name => 'Gildia.pl',
|
752
|
+
:nip => '521-33-59-408',
|
753
|
+
:phone => '22 631 40 83',
|
754
|
+
:email => 'bok@gildia.pl',
|
755
|
+
:website => 'http://gildia.pl'
|
756
|
+
),
|
757
|
+
:stock_info => stub('stock_info', :exact_info? => true, :on_hand => '1000'),
|
758
|
+
:price_infos => [ stub('PriceInfo', :minimum_order_quantity => 20, :amount => 12.99, :vat => 7, :currency_code => 'PLN') ]
|
759
|
+
}.merge(options)
|
760
|
+
mock('ProductAvailability').tap do |aval|
|
761
|
+
aval.stubs(
|
762
|
+
opt
|
763
|
+
)
|
764
|
+
end.extend(MockMethodMissing)
|
765
|
+
end
|
766
|
+
|
767
|
+
def imprint_mock(options = {})
|
768
|
+
opt =
|
769
|
+
{
|
770
|
+
:name => 'National Geographic'
|
771
|
+
}.merge(options)
|
772
|
+
mock('Imprint').tap do |impr|
|
773
|
+
impr.stubs(
|
774
|
+
opt
|
775
|
+
)
|
776
|
+
end.extend(MockMethodMissing)
|
777
|
+
end
|
778
|
+
|
779
|
+
def description_mock(options = {})
|
780
|
+
opt =
|
781
|
+
{
|
782
|
+
:artificial_id => 137,
|
783
|
+
:type_onix_code => Elibri::ONIX::Dict::Release_3_0::OtherTextType::MAIN_DESCRIPTION,
|
784
|
+
:text => 'Recenzja książki',
|
785
|
+
:text_author => 'Jan Kowalski',
|
786
|
+
:updated_at => Date.new(2011, 12, 03).to_time + 19.hours + 5.minutes + 28.seconds,
|
787
|
+
:exportable? => true,
|
788
|
+
:is_a_review? => false,
|
789
|
+
:resource_link => 'http://example'
|
790
|
+
}.merge(options)
|
791
|
+
mock('OtherText').tap do |descr|
|
792
|
+
descr.stubs(
|
793
|
+
opt
|
794
|
+
)
|
795
|
+
end.extend(MockMethodMissing)
|
796
|
+
end
|
797
|
+
|
798
|
+
|
799
|
+
end
|
800
|
+
end
|
801
|
+
end
|