onix 0.8.3 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +4 -0
- data/README.markdown +1 -0
- data/lib/onix/code_list_extractor.rb +69 -0
- data/lib/onix/lists.rb +134 -0
- data/lib/onix/price.rb +1 -1
- data/lib/onix/product.rb +1 -0
- data/lib/onix.rb +4 -10
- data/spec/apa_product_spec.rb +2 -2
- data/spec/audience_range_spec.rb +2 -2
- data/spec/contributor_spec.rb +2 -2
- data/spec/header_spec.rb +2 -2
- data/spec/imprint_spec.rb +2 -2
- data/spec/language_spec.rb +2 -2
- data/spec/lists_spec.rb +33 -0
- data/spec/market_representation_spec.rb +2 -2
- data/spec/measure_spec.rb +2 -2
- data/spec/media_file_spec.rb +2 -2
- data/spec/other_text_spec.rb +2 -2
- data/spec/price_spec.rb +2 -2
- data/spec/product_identifier_spec.rb +2 -2
- data/spec/product_spec.rb +2 -2
- data/spec/publisher_spec.rb +2 -2
- data/spec/sales_restriction_spec.rb +2 -2
- data/spec/sender_identifier.rb +2 -2
- data/spec/series_identifier_spec.rb +2 -2
- data/spec/series_spec.rb +2 -2
- data/spec/stock_spec.rb +2 -2
- data/spec/subject_spec.rb +2 -2
- data/spec/supply_detail_spec.rb +2 -2
- data/spec/title_spec.rb +2 -2
- data/spec/website_spec.rb +2 -2
- data/support/codes/001.tsv +10 -0
- data/support/codes/002.tsv +5 -0
- data/support/codes/003.tsv +7 -0
- data/support/codes/005.tsv +13 -0
- data/support/codes/006.tsv +76 -0
- data/support/codes/007.tsv +123 -0
- data/support/codes/008.tsv +7 -0
- data/support/codes/009.tsv +7 -0
- data/support/codes/010.tsv +34 -0
- data/support/codes/011.tsv +11 -0
- data/support/codes/012.tsv +11 -0
- data/support/codes/013.tsv +7 -0
- data/support/codes/014.tsv +4 -0
- data/support/codes/015.tsv +13 -0
- data/support/codes/016.tsv +6 -0
- data/support/codes/017.tsv +90 -0
- data/support/codes/018.tsv +3 -0
- data/support/codes/019.tsv +7 -0
- data/support/codes/020.tsv +0 -0
- data/support/codes/021.tsv +31 -0
- data/support/codes/022.tsv +9 -0
- data/support/codes/023.tsv +9 -0
- data/support/codes/024.tsv +11 -0
- data/support/codes/025.tsv +29 -0
- data/support/codes/026.tsv +75 -0
- data/support/codes/027.tsv +75 -0
- data/support/codes/028.tsv +8 -0
- data/support/codes/029.tsv +16 -0
- data/support/codes/030.tsv +15 -0
- data/support/codes/031.tsv +3 -0
- data/support/codes/032.tsv +2 -0
- data/support/codes/033.tsv +36 -0
- data/support/codes/034.tsv +14 -0
- data/support/codes/035.tsv +6 -0
- data/support/codes/036.tsv +3 -0
- data/support/codes/037.tsv +6 -0
- data/support/codes/038.tsv +36 -0
- data/support/codes/039.tsv +8 -0
- data/support/codes/040.tsv +6 -0
- data/support/codes/041.tsv +6 -0
- data/support/codes/042.tsv +16 -0
- data/support/codes/043.tsv +4 -0
- data/support/codes/044.tsv +13 -0
- data/support/codes/045.tsv +12 -0
- data/support/codes/046.tsv +3 -0
- data/support/codes/047.tsv +4 -0
- data/support/codes/048.tsv +11 -0
- data/support/codes/049.tsv +84 -0
- data/support/codes/050.tsv +8 -0
- data/support/codes/051.tsv +27 -0
- data/support/codes/052.tsv +1 -0
- data/support/codes/053.tsv +3 -0
- data/support/codes/054.tsv +23 -0
- data/support/codes/055.tsv +13 -0
- data/support/codes/056.tsv +2 -0
- data/support/codes/057.tsv +5 -0
- data/support/codes/058.tsv +21 -0
- data/support/codes/059.tsv +4 -0
- data/support/codes/060.tsv +2 -0
- data/support/codes/061.tsv +3 -0
- data/support/codes/062.tsv +5 -0
- data/support/codes/063.tsv +0 -0
- data/support/codes/064.tsv +13 -0
- data/support/codes/065.tsv +25 -0
- data/support/codes/066.tsv +4 -0
- data/support/codes/067.tsv +2 -0
- data/support/codes/068.tsv +15 -0
- data/support/codes/069.tsv +4 -0
- data/support/codes/070.tsv +2 -0
- data/support/codes/071.tsv +9 -0
- data/support/codes/072.tsv +7 -0
- data/support/codes/073.tsv +36 -0
- data/support/codes/074.tsv +489 -0
- data/support/codes/075.tsv +2 -0
- data/support/codes/076.tsv +12 -0
- data/support/codes/077.tsv +19 -0
- data/support/codes/078.tsv +148 -0
- data/support/codes/079.tsv +17 -0
- data/support/codes/080.tsv +19 -0
- data/support/codes/081.tsv +11 -0
- data/support/codes/082.tsv +17 -0
- data/support/codes/083.tsv +68 -0
- data/support/codes/084.tsv +10 -0
- data/support/codes/085.tsv +23 -0
- data/support/codes/086.tsv +5 -0
- data/support/codes/087.tsv +6 -0
- data/support/codes/088.tsv +0 -0
- data/support/codes/089.tsv +1 -0
- data/support/codes/090.tsv +11 -0
- data/support/codes/091.tsv +248 -0
- data/support/codes/092.tsv +7 -0
- data/support/codes/093.tsv +13 -0
- data/support/codes/094.tsv +3 -0
- data/support/codes/095.tsv +3 -0
- data/support/codes/096.tsv +185 -0
- data/support/codes/097.tsv +1 -0
- data/support/codes/098.tsv +21 -0
- data/support/codes/099.tsv +24 -0
- data/support/codes/100.tsv +4 -0
- data/support/codes/101.tsv +2 -0
- data/support/codes/102.tsv +3 -0
- data/support/codes/121.tsv +127 -0
- data/support/codes/138.tsv +6 -0
- data/support/codes/139.tsv +70 -0
- data/support/codes/140.tsv +7 -0
- data/support/codes/141.tsv +10 -0
- data/support/codes/142.tsv +12 -0
- data/support/codes/143.tsv +7 -0
- data/support/codes/144.tsv +4 -0
- data/support/codes/145.tsv +5 -0
- data/support/codes/146.tsv +3 -0
- data/support/codes/147.tsv +7 -0
- data/support/codes/148.tsv +3 -0
- data/support/codes/149.tsv +4 -0
- data/support/codes/150.tsv +124 -0
- data/support/codes/151.tsv +7 -0
- data/support/codes/152.tsv +2 -0
- data/support/codes/153.tsv +14 -0
- data/support/codes/154.tsv +9 -0
- data/support/codes/155.tsv +5 -0
- data/support/codes/156.tsv +4 -0
- data/support/codes/157.tsv +4 -0
- data/support/codes/158.tsv +24 -0
- data/support/codes/159.tsv +6 -0
- data/support/codes/160.tsv +0 -0
- data/support/codes/161.tsv +3 -0
- data/support/codes/162.tsv +3 -0
- data/support/codes/163.tsv +7 -0
- data/support/codes/164.tsv +2 -0
- data/support/codes/165.tsv +2 -0
- data/support/codes/166.tsv +2 -0
- data/support/codes/167.tsv +3 -0
- data/support/codes/168.tsv +2 -0
- data/support/codes/169.tsv +3 -0
- data/support/codes/170.tsv +0 -0
- data/support/codes/171.tsv +2 -0
- data/support/codes/172.tsv +1 -0
- data/support/codes/173.tsv +2 -0
- data/support/codes/174.tsv +2 -0
- data/support/codes/175.tsv +175 -0
- data/support/codes/176.tsv +12 -0
- data/support/codes/177.tsv +2 -0
- data/support/codes/178.tsv +17 -0
- metadata +151 -13
- data/lib/onix/lists/audience_code.rb +0 -17
- data/lib/onix/lists/contributor_role.rb +0 -99
- data/lib/onix/lists/country_code.rb +0 -257
- data/lib/onix/lists/language_code.rb +0 -498
- data/lib/onix/lists/language_role.rb +0 -18
- data/lib/onix/lists/notification_type.rb +0 -19
- data/lib/onix/lists/product_availability.rb +0 -32
- data/lib/onix/lists/product_form.rb +0 -99
- data/lib/onix/lists/product_form_detail.rb +0 -157
data/CHANGELOG
CHANGED
data/README.markdown
CHANGED
@@ -45,6 +45,7 @@ view the comments to the following classes:
|
|
45
45
|
* ONIX::Reader - For reading ONIX files
|
46
46
|
* ONIX::Writer - For writing ONIX files
|
47
47
|
* ONIX::Normaliser - For normalising ONIX files before reading them. Fixes encoding issues, etc
|
48
|
+
* ONIX::Lists - For building hashes of code lists from the ONIX spec
|
48
49
|
|
49
50
|
## Licensing
|
50
51
|
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module ONIX
|
4
|
+
|
5
|
+
# A utility class that processes the code list XSD from the ONIX spec and
|
6
|
+
# creates a set of TSV files. The generated files are used by this library
|
7
|
+
# to make hashes of the code lists available to users.
|
8
|
+
#
|
9
|
+
class CodeListExtractor
|
10
|
+
|
11
|
+
# Creates a new extractor. Expects the path to a copy of the code lists
|
12
|
+
# file from the spec (called ONIX_BookProduct_CodeLists.xsd on my system).
|
13
|
+
#
|
14
|
+
def initialize(filename)
|
15
|
+
raise ArgumentError, "#{filename} not found" unless File.file?(filename)
|
16
|
+
|
17
|
+
@filename = filename
|
18
|
+
end
|
19
|
+
|
20
|
+
# generate a set of TSV files in the given directory. Creates the directory
|
21
|
+
# if it doesn't exist and will overwrite existing files.
|
22
|
+
#
|
23
|
+
def run(dir)
|
24
|
+
FileUtils.mkdir_p(dir) unless File.directory?(dir)
|
25
|
+
|
26
|
+
each_list do |number, data|
|
27
|
+
#puts number
|
28
|
+
file = number.to_s.rjust(3, "0") + ".tsv"
|
29
|
+
path = File.join(dir, file)
|
30
|
+
File.open(path, "w") { |f| f.write data}
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def data
|
37
|
+
@data ||= File.open(@filename) { |f| f.read }
|
38
|
+
end
|
39
|
+
|
40
|
+
def document
|
41
|
+
@document ||= Nokogiri::XML(data)
|
42
|
+
@document.remove_namespaces! if @document.namespaces.size > 0
|
43
|
+
@document
|
44
|
+
end
|
45
|
+
|
46
|
+
def each_list(&block)
|
47
|
+
document.xpath("//simpleType").each do |node|
|
48
|
+
list_name = node.xpath("./@name").first.value
|
49
|
+
list_number = list_name[/List(\d+)/,1].to_i
|
50
|
+
if list_number > 0
|
51
|
+
yield list_number, list_data(list_number)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def list_data(num)
|
57
|
+
str = ""
|
58
|
+
nodes = document.xpath("//simpleType[@name='List#{num}']/restriction/enumeration")
|
59
|
+
nodes.each do |node|
|
60
|
+
code = node.xpath("./@value").first.value
|
61
|
+
desc = node.xpath("./annotation/documentation").first.text
|
62
|
+
ldesc = node.xpath("./annotation/documentation").last.text
|
63
|
+
str += "#{code}\t#{desc}\t#{ldesc}\n"
|
64
|
+
end
|
65
|
+
str
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
data/lib/onix/lists.rb
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module ONIX
|
4
|
+
|
5
|
+
# Builds hashes for all code lists in the ONIX spec.
|
6
|
+
#
|
7
|
+
# Use like so:
|
8
|
+
#
|
9
|
+
# ONIX::Lists.list(7)
|
10
|
+
# => { "BB" => "Hardback", ... }
|
11
|
+
#
|
12
|
+
# There are also some constants for commonly used lists:
|
13
|
+
#
|
14
|
+
# ONIX::Lists::PRODUCT_FORM
|
15
|
+
# => { "BB" => "Hardback", ... }
|
16
|
+
#
|
17
|
+
class Lists
|
18
|
+
include Singleton
|
19
|
+
|
20
|
+
# retrieve a hash with the specified code list
|
21
|
+
#
|
22
|
+
# ONIX::Lists.list(7)
|
23
|
+
# => { "BB" => "Hardback", ... }
|
24
|
+
#
|
25
|
+
def self.list(number)
|
26
|
+
self.instance.list(number)
|
27
|
+
end
|
28
|
+
|
29
|
+
# Shortcut to retrieve a common code list
|
30
|
+
#
|
31
|
+
def self.audience_code
|
32
|
+
self.instance.list(28)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Shortcut to retrieve a common code list
|
36
|
+
#
|
37
|
+
def self.contributor_role
|
38
|
+
self.instance.list(17)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Shortcut to retrieve a common code list
|
42
|
+
#
|
43
|
+
def self.country_code
|
44
|
+
self.instance.list(91)
|
45
|
+
end
|
46
|
+
|
47
|
+
# Shortcut to retrieve a common code list
|
48
|
+
#
|
49
|
+
def self.language_code
|
50
|
+
self.instance.list(74)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Shortcut to retrieve a common code list
|
54
|
+
#
|
55
|
+
def self.language_role
|
56
|
+
self.instance.list(22)
|
57
|
+
end
|
58
|
+
|
59
|
+
# Shortcut to retrieve a common code list
|
60
|
+
#
|
61
|
+
def self.notification_type
|
62
|
+
self.instance.list(1)
|
63
|
+
end
|
64
|
+
|
65
|
+
# Shortcut to retrieve a common code list
|
66
|
+
#
|
67
|
+
def self.product_availability
|
68
|
+
self.instance.list(65)
|
69
|
+
end
|
70
|
+
|
71
|
+
# Shortcut to retrieve a common code list
|
72
|
+
#
|
73
|
+
def self.product_form
|
74
|
+
self.instance.list(7)
|
75
|
+
end
|
76
|
+
|
77
|
+
# Shortcut to retrieve a common code list
|
78
|
+
#
|
79
|
+
def self.product_form_detail
|
80
|
+
self.instance.list(78)
|
81
|
+
end
|
82
|
+
|
83
|
+
# return a hash with the data for a single code list.
|
84
|
+
#
|
85
|
+
# number should be a fixnum specifying the list to retrieve
|
86
|
+
#
|
87
|
+
# ONIX::Lists.instance.list(7)
|
88
|
+
# => { "BB" => "Hardback", ... }
|
89
|
+
#
|
90
|
+
def list(number)
|
91
|
+
cache[number] ||= build_hash(number)
|
92
|
+
end
|
93
|
+
|
94
|
+
private
|
95
|
+
|
96
|
+
def build_hash(number)
|
97
|
+
val = {}
|
98
|
+
data(number).each_line do |line|
|
99
|
+
code, desc, ldesc = *line.split("\t")
|
100
|
+
code = code.to_i if code.to_s.match(/\d+/)
|
101
|
+
val[code] = desc
|
102
|
+
end
|
103
|
+
val
|
104
|
+
end
|
105
|
+
|
106
|
+
def cache
|
107
|
+
@cache ||= {}
|
108
|
+
end
|
109
|
+
|
110
|
+
def path(number)
|
111
|
+
code_dir = File.dirname(__FILE__) + "/../../support/codes"
|
112
|
+
filename = number.to_s.rjust(3, "0") + ".tsv"
|
113
|
+
File.join(code_dir, filename)
|
114
|
+
end
|
115
|
+
|
116
|
+
def data(number)
|
117
|
+
File.open(path(number)) { |f| f.read }
|
118
|
+
end
|
119
|
+
|
120
|
+
public
|
121
|
+
|
122
|
+
# These are here for backwards compatability with the onix gem <= 0.8.3
|
123
|
+
AUDIENCE_CODE = ONIX::Lists.audience_code
|
124
|
+
CONTRIBUTOR_ROLE = ONIX::Lists.contributor_role
|
125
|
+
COUNTRY_CODE = ONIX::Lists.country_code
|
126
|
+
LANGUAGE_CODE = ONIX::Lists.language_code
|
127
|
+
LANGUAGE_ROLE = ONIX::Lists.language_role
|
128
|
+
NOTIFICATION_TYPE = ONIX::Lists.notification_type
|
129
|
+
PRODUCT_AVAILABILITY = ONIX::Lists.product_availability
|
130
|
+
PRODUCT_FORM = ONIX::Lists.product_form
|
131
|
+
PRODUCT_FORM_DETAIL = ONIX::Lists.product_form_detail
|
132
|
+
|
133
|
+
end
|
134
|
+
end
|
data/lib/onix/price.rb
CHANGED
@@ -7,7 +7,7 @@ module ONIX
|
|
7
7
|
xml_name "Price"
|
8
8
|
|
9
9
|
xml_accessor :price_type_code, :from => "PriceTypeCode", :as => Fixnum, :to_xml => ONIX::Formatters.two_digit
|
10
|
-
xml_accessor :price_type_qualifier, :from => "
|
10
|
+
xml_accessor :price_type_qualifier, :from => "PriceQualifier", :as => Fixnum, :to_xml => ONIX::Formatters.two_digit
|
11
11
|
xml_accessor :price_type_description, :from => "PriceTypeDescription"
|
12
12
|
xml_accessor :price_per, :from => "PricePer", :as => Fixnum, :to_xml => ONIX::Formatters.two_digit
|
13
13
|
xml_accessor :minimum_order_qty, :from => "MinimumOrderQuantity", :as => Fixnum
|
data/lib/onix/product.rb
CHANGED
@@ -18,6 +18,7 @@ module ONIX
|
|
18
18
|
xml_accessor :edition_number, :from => "EditionNumber", :as => Fixnum
|
19
19
|
xml_accessor :languages, :from => "Language", :as => [ONIX::Language]
|
20
20
|
xml_accessor :number_of_pages, :from => "NumberOfPages", :as => Fixnum
|
21
|
+
xml_accessor :basic_main_subject, :from => "BASICMainSubject"
|
21
22
|
xml_accessor :bic_main_subject, :from => "BICMainSubject"
|
22
23
|
xml_accessor :subjects, :from => "Subject", :as => [ONIX::Subject]
|
23
24
|
xml_accessor :audience_code, :from => "AudienceCode", :to_xml => ONIX::Formatters.two_digit
|
data/lib/onix.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'bigdecimal'
|
4
4
|
require 'cgi'
|
5
|
+
require 'singleton'
|
5
6
|
require 'roxml'
|
6
7
|
require 'andand'
|
7
8
|
|
@@ -9,7 +10,7 @@ module ONIX
|
|
9
10
|
module Version #:nodoc:
|
10
11
|
Major = 0
|
11
12
|
Minor = 8
|
12
|
-
Tiny =
|
13
|
+
Tiny = 4
|
13
14
|
|
14
15
|
String = [Major, Minor, Tiny].join('.')
|
15
16
|
end
|
@@ -82,18 +83,11 @@ require File.join(File.dirname(__FILE__), "onix", "product")
|
|
82
83
|
require File.join(File.dirname(__FILE__), "onix", "reader")
|
83
84
|
require File.join(File.dirname(__FILE__), "onix", "writer")
|
84
85
|
|
85
|
-
# lists
|
86
|
-
require File.join(File.dirname(__FILE__), "onix", "lists", "product_form")
|
87
|
-
require File.join(File.dirname(__FILE__), "onix", "lists", "product_availability")
|
88
|
-
require File.join(File.dirname(__FILE__), "onix", "lists", "country_code")
|
89
|
-
require File.join(File.dirname(__FILE__), "onix", "lists", "language_code")
|
90
|
-
require File.join(File.dirname(__FILE__), "onix", "lists", "language_role")
|
91
|
-
require File.join(File.dirname(__FILE__), "onix", "lists", "notification_type")
|
92
|
-
require File.join(File.dirname(__FILE__), "onix", "lists", "product_form_detail")
|
93
|
-
|
94
86
|
# product wrappers
|
95
87
|
require File.join(File.dirname(__FILE__), "onix", "simple_product")
|
96
88
|
require File.join(File.dirname(__FILE__), "onix", "apa_product")
|
97
89
|
|
98
90
|
# misc
|
91
|
+
require File.join(File.dirname(__FILE__), "onix", "lists")
|
99
92
|
require File.join(File.dirname(__FILE__), "onix", "normaliser")
|
93
|
+
require File.join(File.dirname(__FILE__), "onix", "code_list_extractor")
|
data/spec/apa_product_spec.rb
CHANGED
@@ -12,7 +12,7 @@ context "ONIX::APAProduct" do
|
|
12
12
|
@product_node = @doc.root
|
13
13
|
end
|
14
14
|
|
15
|
-
specify "should provide read access to
|
15
|
+
specify "should provide read access to attributes" do
|
16
16
|
@product = ONIX::Product.from_xml(@product_node.to_s)
|
17
17
|
@apa = ONIX::APAProduct.new(@product)
|
18
18
|
|
@@ -26,7 +26,7 @@ context "ONIX::APAProduct" do
|
|
26
26
|
@apa.pack_quantity.should eql(12)
|
27
27
|
end
|
28
28
|
|
29
|
-
specify "should provide write access to
|
29
|
+
specify "should provide write access to attributes" do
|
30
30
|
apa = ONIX::APAProduct.new
|
31
31
|
|
32
32
|
apa.notification_type = 3
|
data/spec/audience_range_spec.rb
CHANGED
@@ -16,7 +16,7 @@ context "ONIX::AudienceRange" do
|
|
16
16
|
aud.to_xml.to_s[0,15].should eql("<AudienceRange>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
aud = ONIX::AudienceRange.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
aud.audience_range_qualifier.should eql(11)
|
@@ -28,7 +28,7 @@ context "ONIX::AudienceRange" do
|
|
28
28
|
aud.audience_range_values[1].should eql(5)
|
29
29
|
end
|
30
30
|
|
31
|
-
specify "should provide write access to first level
|
31
|
+
specify "should provide write access to first level attributes" do
|
32
32
|
aud = ONIX::AudienceRange.new
|
33
33
|
|
34
34
|
aud.audience_range_qualifier = 12
|
data/spec/contributor_spec.rb
CHANGED
@@ -16,7 +16,7 @@ context "ONIX::Contributor" do
|
|
16
16
|
header.to_xml.to_s[0,13].should eql("<Contributor>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
contrib = ONIX::Contributor.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
contrib.contributor_role.should eql("A01")
|
@@ -24,7 +24,7 @@ context "ONIX::Contributor" do
|
|
24
24
|
contrib.sequence_number.should eql(1)
|
25
25
|
end
|
26
26
|
|
27
|
-
specify "should provide write access to first level
|
27
|
+
specify "should provide write access to first level attributes" do
|
28
28
|
contrib = ONIX::Contributor.new
|
29
29
|
|
30
30
|
contrib.contributor_role = "A02"
|
data/spec/header_spec.rb
CHANGED
@@ -16,7 +16,7 @@ context "ONIX::Header" do
|
|
16
16
|
header.to_xml.to_s[0,8].should eql("<Header>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
header = ONIX::Header.from_xml(@header_node.to_s)
|
21
21
|
|
22
22
|
header.from_ean_number.should eql("1111111111111")
|
@@ -42,7 +42,7 @@ context "ONIX::Header" do
|
|
42
42
|
header.default_class_of_trade.should eql("f")
|
43
43
|
end
|
44
44
|
|
45
|
-
specify "should provide write access to first level
|
45
|
+
specify "should provide write access to first level attributes" do
|
46
46
|
header = ONIX::Header.new
|
47
47
|
|
48
48
|
header.from_ean_number = "1111111111111"
|
data/spec/imprint_spec.rb
CHANGED
@@ -16,13 +16,13 @@ context "ONIX::Imprint" do
|
|
16
16
|
imp.to_xml.to_s[0,9].should eql("<Imprint>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
imp = ONIX::Imprint.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
imp.imprint_name.should eql("Oxford University Press UK")
|
23
23
|
end
|
24
24
|
|
25
|
-
specify "should provide write access to first level
|
25
|
+
specify "should provide write access to first level attributes" do
|
26
26
|
imp = ONIX::Imprint.new
|
27
27
|
|
28
28
|
imp.imprint_name = "Paulist Press"
|
data/spec/language_spec.rb
CHANGED
@@ -16,7 +16,7 @@ context "ONIX::Language" do
|
|
16
16
|
lan.to_xml.to_s[0,10].should eql("<Language>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
lan = ONIX::Language.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
lan.language_role.should eql(1)
|
@@ -24,7 +24,7 @@ context "ONIX::Language" do
|
|
24
24
|
lan.country_code.should eql("US")
|
25
25
|
end
|
26
26
|
|
27
|
-
specify "should provide write access to first level
|
27
|
+
specify "should provide write access to first level attributes" do
|
28
28
|
lan = ONIX::Language.new
|
29
29
|
|
30
30
|
lan.language_role = 2
|
data/spec/lists_spec.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/spec_helper.rb'
|
4
|
+
|
5
|
+
context ONIX::Lists, "list method" do
|
6
|
+
|
7
|
+
it "should return a hash containing the ProductForm code list" do
|
8
|
+
forms = ONIX::Lists.list(7)
|
9
|
+
forms.should be_a(Hash)
|
10
|
+
forms["BB"].should eql("Hardback")
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
context ONIX::Lists, "product_form shortcut method" do
|
16
|
+
|
17
|
+
it "should return a hash containing the ProductForm code list" do
|
18
|
+
forms = ONIX::Lists.product_form
|
19
|
+
forms.should be_a(Hash)
|
20
|
+
forms["BB"].should eql("Hardback")
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
context ONIX::Lists, "PRODUCT_FORM shortcut constant" do
|
26
|
+
|
27
|
+
it "should return a hash containing the ProductForm code list" do
|
28
|
+
forms = ONIX::Lists::PRODUCT_FORM
|
29
|
+
forms.should be_a(Hash)
|
30
|
+
forms["BB"].should eql("Hardback")
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -16,14 +16,14 @@ context "ONIX::MarketRepresentation" do
|
|
16
16
|
rep.to_xml.to_s[0,22].should eql("<MarketRepresentation>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
rep = ONIX::MarketRepresentation.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
rep.agent_name.should eql("Allen & Unwin")
|
23
23
|
rep.agent_role.should eql(7)
|
24
24
|
end
|
25
25
|
|
26
|
-
specify "should provide write access to first level
|
26
|
+
specify "should provide write access to first level attributes" do
|
27
27
|
rep = ONIX::MarketRepresentation.new
|
28
28
|
|
29
29
|
rep.agent_name = "Rainbow Book Agencies"
|
data/spec/measure_spec.rb
CHANGED
@@ -16,7 +16,7 @@ context "ONIX::Measure" do
|
|
16
16
|
m.to_xml.to_s[0,9].should eql("<Measure>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
m = ONIX::Measure.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
m.measure_type_code.should eql(1)
|
@@ -24,7 +24,7 @@ context "ONIX::Measure" do
|
|
24
24
|
m.measure_unit_code.should eql("mm")
|
25
25
|
end
|
26
26
|
|
27
|
-
specify "should provide write access to first level
|
27
|
+
specify "should provide write access to first level attributes" do
|
28
28
|
m = ONIX::Measure.new
|
29
29
|
|
30
30
|
m.measure_type_code = 1
|
data/spec/media_file_spec.rb
CHANGED
@@ -16,14 +16,14 @@ context "ONIX::MediaFile" do
|
|
16
16
|
mf.to_xml.to_s[0,11].should eql("<MediaFile>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
mf = ONIX::MediaFile.from_xml(@root.to_s)
|
21
21
|
mf.media_file_type_code.should eql(4)
|
22
22
|
mf.media_file_link_type_code.should eql(1)
|
23
23
|
mf.media_file_link.should eql("http://www.allenandunwin.com/BookCovers/resized_9788888028729_224_297_FitSquare.jpg")
|
24
24
|
end
|
25
25
|
|
26
|
-
specify "should provide write access to first level
|
26
|
+
specify "should provide write access to first level attributes" do
|
27
27
|
mf = ONIX::MediaFile.new
|
28
28
|
|
29
29
|
mf.media_file_type_code = 2
|
data/spec/other_text_spec.rb
CHANGED
@@ -16,14 +16,14 @@ context "ONIX::OtherText" do
|
|
16
16
|
ot.to_xml.to_s[0,11].should eql("<OtherText>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
ot = ONIX::OtherText.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
ot.text_type_code.should eql(2)
|
23
23
|
ot.text[0,7].should eql("A woman")
|
24
24
|
end
|
25
25
|
|
26
|
-
specify "should provide write access to first level
|
26
|
+
specify "should provide write access to first level attributes" do
|
27
27
|
ot = ONIX::OtherText.new
|
28
28
|
|
29
29
|
ot.text_type_code = 2
|
data/spec/price_spec.rb
CHANGED
@@ -16,14 +16,14 @@ context "ONIX::Price" do
|
|
16
16
|
p.to_xml.to_s[0,7].should eql("<Price>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
p = ONIX::Price.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
p.price_type_code.should eql(2)
|
23
23
|
p.price_amount.should eql(BigDecimal.new("7.5"))
|
24
24
|
end
|
25
25
|
|
26
|
-
specify "should provide write access to first level
|
26
|
+
specify "should provide write access to first level attributes" do
|
27
27
|
p = ONIX::Price.new
|
28
28
|
|
29
29
|
p.price_type_code = 1
|
@@ -16,14 +16,14 @@ context "ONIX::ProductIdentifier" do
|
|
16
16
|
id.to_xml.to_s[0,19].should eql("<ProductIdentifier>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
id = ONIX::ProductIdentifier.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
id.product_id_type.should eql(2)
|
23
23
|
id.id_value.should eql("0858198363")
|
24
24
|
end
|
25
25
|
|
26
|
-
specify "should provide write access to first level
|
26
|
+
specify "should provide write access to first level attributes" do
|
27
27
|
id = ONIX::ProductIdentifier.new
|
28
28
|
|
29
29
|
id.product_id_type = 2
|
data/spec/product_spec.rb
CHANGED
@@ -11,7 +11,7 @@ context "ONIX::Product" do
|
|
11
11
|
@product_node = @doc.root
|
12
12
|
end
|
13
13
|
|
14
|
-
specify "should provide read access to first level
|
14
|
+
specify "should provide read access to first level attributes" do
|
15
15
|
product = ONIX::Product.from_xml(@product_node.to_s)
|
16
16
|
|
17
17
|
product.record_reference.should eql("365-9780194351898")
|
@@ -52,7 +52,7 @@ context "ONIX::Product" do
|
|
52
52
|
product.measurements.size.should eql(1)
|
53
53
|
end
|
54
54
|
|
55
|
-
specify "should provide write access to first level
|
55
|
+
specify "should provide write access to first level attributes" do
|
56
56
|
product = ONIX::Product.new
|
57
57
|
|
58
58
|
product.notification_type = 3
|
data/spec/publisher_spec.rb
CHANGED
@@ -16,13 +16,13 @@ context "ONIX::Publisher" do
|
|
16
16
|
pub.to_xml.to_s[0,11].should eql("<Publisher>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
pub = ONIX::Publisher.from_xml(@root.to_s)
|
21
21
|
pub.publishing_role.should eql(1)
|
22
22
|
pub.publisher_name.should eql("Desbooks Publishing")
|
23
23
|
end
|
24
24
|
|
25
|
-
specify "should provide write access to first level
|
25
|
+
specify "should provide write access to first level attributes" do
|
26
26
|
pub = ONIX::Publisher.new
|
27
27
|
|
28
28
|
pub.publisher_name = "Paulist Press"
|
@@ -16,13 +16,13 @@ context "ONIX::SalesRestriction" do
|
|
16
16
|
sr.to_xml.to_s[0,18].should eql("<SalesRestriction>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
sr = ONIX::SalesRestriction.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
sr.sales_restriction_type.should eql(0)
|
23
23
|
end
|
24
24
|
|
25
|
-
specify "should provide write access to first level
|
25
|
+
specify "should provide write access to first level attributes" do
|
26
26
|
sr = ONIX::SalesRestriction.new
|
27
27
|
|
28
28
|
sr.sales_restriction_type = 1
|
data/spec/sender_identifier.rb
CHANGED
@@ -16,14 +16,14 @@ context "ONIX::SenderIdentifier" do
|
|
16
16
|
id.to_xml.to_s[0,18].should eql("<SenderIdentifier>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
id = ONIX::SenderIdentifier.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
id.sender_id_type.should eql(1)
|
23
23
|
id.id_value.should eql("123456")
|
24
24
|
end
|
25
25
|
|
26
|
-
specify "should provide write access to first level
|
26
|
+
specify "should provide write access to first level attributes" do
|
27
27
|
id = ONIX::SenderIdentifier.new
|
28
28
|
|
29
29
|
id.sender_id_type = 1
|
@@ -16,14 +16,14 @@ context "ONIX::SeriesIdentifier" do
|
|
16
16
|
series.to_xml.to_s[0,18].should eql("<SeriesIdentifier>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
series = ONIX::SeriesIdentifier.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
series.series_id_type.should eql(1)
|
23
23
|
series.id_value.should eql("10001")
|
24
24
|
end
|
25
25
|
|
26
|
-
specify "should provide write access to first level
|
26
|
+
specify "should provide write access to first level attributes" do
|
27
27
|
series = ONIX::SeriesIdentifier.new
|
28
28
|
|
29
29
|
series.series_id_type = 9
|
data/spec/series_spec.rb
CHANGED
@@ -16,13 +16,13 @@ context "ONIX::Series" do
|
|
16
16
|
series.to_xml.to_s[0,8].should eql("<Series>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
series = ONIX::Series.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
series.title_of_series.should eql("Citizens and Their Governments")
|
23
23
|
end
|
24
24
|
|
25
|
-
specify "should provide write access to first level
|
25
|
+
specify "should provide write access to first level attributes" do
|
26
26
|
series = ONIX::Series.new
|
27
27
|
|
28
28
|
series.title_of_series = "Cool Science Careers"
|
data/spec/stock_spec.rb
CHANGED
@@ -16,7 +16,7 @@ context "ONIX::Stock" do
|
|
16
16
|
s.to_xml.to_s[0,7].should eql("<Stock>")
|
17
17
|
end
|
18
18
|
|
19
|
-
specify "should provide read access to first level
|
19
|
+
specify "should provide read access to first level attributes" do
|
20
20
|
s = ONIX::Stock.from_xml(@root.to_s)
|
21
21
|
|
22
22
|
# note that these fields *should* be numeric according to the ONIX spec,
|
@@ -25,7 +25,7 @@ context "ONIX::Stock" do
|
|
25
25
|
s.on_order.should eql("0")
|
26
26
|
end
|
27
27
|
|
28
|
-
specify "should provide write access to first level
|
28
|
+
specify "should provide write access to first level attributes" do
|
29
29
|
s = ONIX::Stock.new
|
30
30
|
|
31
31
|
s.on_hand = "123"
|