milkfarm-onix 0.7.7 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/CHANGELOG +31 -1
  2. data/README.markdown +24 -2
  3. data/lib/onix.rb +3 -16
  4. data/lib/onix/addressee_identifier.rb +0 -1
  5. data/lib/onix/apa_product.rb +19 -2
  6. data/lib/onix/audience_range.rb +6 -7
  7. data/lib/onix/contributor.rb +0 -1
  8. data/lib/onix/header.rb +0 -1
  9. data/lib/onix/imprint.rb +0 -1
  10. data/lib/onix/language.rb +0 -1
  11. data/lib/onix/lists/contributor_role.rb +99 -0
  12. data/lib/onix/market_representation.rb +0 -1
  13. data/lib/onix/measure.rb +0 -1
  14. data/lib/onix/media_file.rb +0 -1
  15. data/lib/onix/normaliser.rb +0 -77
  16. data/lib/onix/other_text.rb +0 -1
  17. data/lib/onix/price.rb +0 -1
  18. data/lib/onix/product.rb +3 -2
  19. data/lib/onix/product_identifier.rb +0 -1
  20. data/lib/onix/publisher.rb +0 -1
  21. data/lib/onix/reader.rb +39 -96
  22. data/lib/onix/sales_restriction.rb +0 -1
  23. data/lib/onix/sender_identifier.rb +0 -1
  24. data/lib/onix/series.rb +8 -8
  25. data/lib/onix/series_identifier.rb +0 -1
  26. data/lib/onix/set.rb +76 -0
  27. data/lib/onix/sl_product.rb +32 -45
  28. data/lib/onix/stock.rb +0 -1
  29. data/lib/onix/subject.rb +0 -1
  30. data/lib/onix/supply_detail.rb +0 -1
  31. data/lib/onix/title.rb +0 -1
  32. data/lib/onix/website.rb +0 -1
  33. data/lib/onix/writer.rb +1 -1
  34. data/spec/apa_product_spec.rb +44 -4
  35. data/spec/audience_range_spec.rb +5 -7
  36. data/spec/contributor_spec.rb +2 -4
  37. data/spec/header_spec.rb +2 -4
  38. data/spec/imprint_spec.rb +4 -6
  39. data/spec/language_spec.rb +5 -7
  40. data/spec/market_representation_spec.rb +2 -4
  41. data/spec/measure_spec.rb +2 -4
  42. data/spec/media_file_spec.rb +2 -4
  43. data/spec/normaliser_spec.rb +1 -78
  44. data/spec/other_text_spec.rb +2 -4
  45. data/spec/price_spec.rb +2 -4
  46. data/spec/product_identifier_spec.rb +2 -4
  47. data/spec/product_spec.rb +2 -5
  48. data/spec/publisher_spec.rb +2 -4
  49. data/spec/reader_spec.rb +15 -22
  50. data/spec/sales_restriction_spec.rb +2 -4
  51. data/spec/sender_identifier.rb +2 -4
  52. data/spec/series_identifier_spec.rb +5 -7
  53. data/spec/series_spec.rb +4 -6
  54. data/spec/set_spec.rb +32 -0
  55. data/spec/sl_product_spec.rb +76 -24
  56. data/spec/spec_helper.rb +8 -0
  57. data/spec/stock_spec.rb +2 -4
  58. data/spec/subject_spec.rb +2 -4
  59. data/spec/supply_detail_spec.rb +2 -4
  60. data/spec/title_spec.rb +2 -4
  61. data/spec/website_spec.rb +2 -4
  62. data/spec/writer_spec.rb +1 -4
  63. metadata +64 -28
  64. data/lib/onix/common.rb +0 -26
@@ -1,15 +1,13 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
6
4
 
7
5
  context "ONIX::ProductIdentifier" do
8
6
 
9
7
  before(:each) do
10
8
  data_path = File.join(File.dirname(__FILE__),"..","data")
11
9
  file1 = File.join(data_path, "product_identifier.xml")
12
- @doc = LibXML::XML::Document.file(file1)
10
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
13
11
  @root = @doc.root
14
12
  end
15
13
 
data/spec/product_spec.rb CHANGED
@@ -1,16 +1,13 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
6
- require 'date'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
7
4
 
8
5
  context "ONIX::Product" do
9
6
 
10
7
  before(:each) do
11
8
  @data_path = File.join(File.dirname(__FILE__),"..","data")
12
9
  file1 = File.join(@data_path, "product.xml")
13
- @doc = LibXML::XML::Document.file(file1)
10
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
14
11
  @product_node = @doc.root
15
12
  end
16
13
 
@@ -1,15 +1,13 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
6
4
 
7
5
  context "ONIX::Publisher" do
8
6
 
9
7
  before(:each) do
10
8
  data_path = File.join(File.dirname(__FILE__),"..","data")
11
9
  file1 = File.join(data_path, "publisher.xml")
12
- @doc = LibXML::XML::Document.file(file1)
10
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
13
11
  @root = @doc.root
14
12
  end
15
13
 
data/spec/reader_spec.rb CHANGED
@@ -1,43 +1,36 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
6
4
 
7
5
  context "ONIX::Reader" do
8
6
 
9
7
  before(:each) do
10
- data_path = File.join(File.dirname(__FILE__),"..","data")
11
- @file1 = File.join(data_path, "9780194351898.xml")
12
- @file2 = File.join(data_path, "two_products.xml")
13
- @long_file = File.join(data_path, "Bookwise_July_2008.xml")
14
- @entity_file = File.join(data_path, "entities.xml")
15
- @utf_16_file = File.join(data_path, "utf_16.xml")
16
- @iso_8859_1_file = File.join(data_path, "iso_8859_1.xml")
8
+ @data_path = File.join(File.dirname(__FILE__),"..","data")
9
+ @file1 = File.join(@data_path, "9780194351898.xml")
10
+ @file2 = File.join(@data_path, "two_products.xml")
11
+ @long_file = File.join(@data_path, "Bookwise_July_2008.xml")
12
+ @entity_file = File.join(@data_path, "entities.xml")
13
+ @utf_16_file = File.join(@data_path, "utf_16.xml")
14
+ @iso_8859_1_file = File.join(@data_path, "iso_8859_1.xml")
17
15
  end
18
16
 
19
17
  specify "should initialize with a filename" do
20
18
  reader = ONIX::Reader.new(@file1)
21
- reader.instance_variable_get("@reader").should be_a_kind_of(LibXML::XML::Reader)
19
+ reader.instance_variable_get("@reader").should be_a_kind_of(Nokogiri::XML::Reader)
22
20
  end
23
21
 
24
22
  specify "should initialize with an IO object" do
25
23
  File.open(@file1,"rb") do |f|
26
24
  reader = ONIX::Reader.new(f)
27
- reader.instance_variable_get("@reader").should be_a_kind_of(LibXML::XML::Reader)
25
+ reader.instance_variable_get("@reader").should be_a_kind_of(Nokogiri::XML::Reader)
28
26
  end
29
27
  end
30
28
 
31
- # This is commented out as the code that I was using to read the ONIX version from the
32
- # input was causing segfaults and other stability issues
33
- specify "should provide access to various XML metadata from file"
34
- #do
35
- # reader = ONIX::Reader.new(@file1)
36
- # reader.encoding.should eql("utf-8")
37
- # reader.xml_lang.should eql(nil)
38
- # reader.xml_version.should eql(1.0)
39
- # reader.version.should eql([2,1,0])
40
- #end
29
+ specify "should provide access to various XML metadata from file" do
30
+ filename = File.join(@data_path, "reference_with_release_attrib.xml")
31
+ reader = ONIX::Reader.new(filename)
32
+ reader.release.should eql(BigDecimal.new("2.1"))
33
+ end
41
34
 
42
35
  specify "should provide access to the header in an ONIX file" do
43
36
  reader = ONIX::Reader.new(@file1)
@@ -1,15 +1,13 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
6
4
 
7
5
  context "ONIX::SalesRestriction" do
8
6
 
9
7
  before(:each) do
10
8
  data_path = File.join(File.dirname(__FILE__),"..","data")
11
9
  file1 = File.join(data_path, "sales_restriction.xml")
12
- @doc = LibXML::XML::Document.file(file1)
10
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
13
11
  @root = @doc.root
14
12
  end
15
13
 
@@ -1,15 +1,13 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
6
4
 
7
5
  context "ONIX::SenderIdentifier" do
8
6
 
9
7
  before(:each) do
10
8
  data_path = File.join(File.dirname(__FILE__),"..","data")
11
9
  file1 = File.join(data_path, "sender_identifier.xml")
12
- @doc = LibXML::XML::Document.file(file1)
10
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
13
11
  @root = @doc.root
14
12
  end
15
13
 
@@ -1,15 +1,13 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
6
4
 
7
5
  context "ONIX::SeriesIdentifier" do
8
6
 
9
7
  before(:each) do
10
8
  data_path = File.join(File.dirname(__FILE__),"..","data")
11
9
  file1 = File.join(data_path, "series_identifier.xml")
12
- @doc = LibXML::XML::Document.file(file1)
10
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
13
11
  @root = @doc.root
14
12
  end
15
13
 
@@ -20,17 +18,17 @@ context "ONIX::SeriesIdentifier" do
20
18
 
21
19
  specify "should provide read access to first level attibutes" do
22
20
  series = ONIX::SeriesIdentifier.from_xml(@root.to_s)
23
-
21
+
24
22
  series.series_id_type.should eql(1)
25
23
  series.id_value.should eql("10001")
26
24
  end
27
25
 
28
26
  specify "should provide write access to first level attibutes" do
29
27
  series = ONIX::SeriesIdentifier.new
30
-
28
+
31
29
  series.series_id_type = 9
32
30
  series.to_xml.to_s.include?("<SeriesIDType>09</SeriesIDType>").should be_true
33
-
31
+
34
32
  series.id_value = 999
35
33
  series.to_xml.to_s.include?("<IDValue>999</IDValue>").should be_true
36
34
  end
data/spec/series_spec.rb CHANGED
@@ -1,15 +1,13 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
6
4
 
7
5
  context "ONIX::Series" do
8
6
 
9
7
  before(:each) do
10
8
  data_path = File.join(File.dirname(__FILE__),"..","data")
11
9
  file1 = File.join(data_path, "series.xml")
12
- @doc = LibXML::XML::Document.file(file1)
10
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
13
11
  @root = @doc.root
14
12
  end
15
13
 
@@ -20,13 +18,13 @@ context "ONIX::Series" do
20
18
 
21
19
  specify "should provide read access to first level attibutes" do
22
20
  series = ONIX::Series.from_xml(@root.to_s)
23
-
21
+
24
22
  series.title_of_series.should eql("Citizens and Their Governments")
25
23
  end
26
24
 
27
25
  specify "should provide write access to first level attibutes" do
28
26
  series = ONIX::Series.new
29
-
27
+
30
28
  series.title_of_series = "Cool Science Careers"
31
29
  series.to_xml.to_s.include?("<TitleOfSeries>Cool Science Careers</TitleOfSeries>").should be_true
32
30
  end
data/spec/set_spec.rb ADDED
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
4
+
5
+ context "ONIX::Set" do
6
+
7
+ before(:each) do
8
+ data_path = File.join(File.dirname(__FILE__),"..","data")
9
+ file1 = File.join(data_path, "set.xml")
10
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
11
+ @root = @doc.root
12
+ end
13
+
14
+ specify "should correctly convert to a string" do
15
+ set = ONIX::Set.from_xml(@root.to_s)
16
+ set.to_xml.to_s[0,5].should eql("<Set>")
17
+ end
18
+
19
+ specify "should provide read access to first level attibutes" do
20
+ set = ONIX::Set.from_xml(@root.to_s)
21
+
22
+ set.title_of_set.should eql("Citizens and Their Governments")
23
+ end
24
+
25
+ specify "should provide write access to first level attibutes" do
26
+ set = ONIX::Set.new
27
+
28
+ set.title_of_set = "Cool Science Careers"
29
+ set.to_xml.to_s.include?("<TitleOfSet>Cool Science Careers</TitleOfSet>").should be_true
30
+ end
31
+
32
+ end
@@ -1,48 +1,100 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
6
4
  require 'date'
7
5
 
8
6
  context "ONIX::SLProduct" do
9
7
 
10
8
  before(:each) do
11
9
  @data_path = File.join(File.dirname(__FILE__),"..","data")
12
- file1 = File.join(@data_path, "sl_product.xml")
13
- @doc = LibXML::XML::Document.file(file1)
10
+ file1 = File.join(@data_path, "product.xml")
11
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
14
12
  @product_node = @doc.root
15
13
  end
16
14
 
17
- specify "should provide read access to attibrutes" do
15
+ specify "should provide read access to attibutes" do
18
16
  @product = ONIX::Product.from_xml(@product_node.to_s)
19
- @sl = ONIX::SLProduct.new(@product)
17
+ @sl = ONIX::SLProduct.new(@product)
20
18
 
21
- @sl.record_reference.should eql("10001")
22
- @sl.notification_type.should eql(2)
23
- @sl.number_of_pages.should eql(32)
24
- @sl.publishing_status.should eql(2)
25
- @sl.publication_date.should eql(Date.civil(2009,12,1))
26
- @sl.copyright_year.should eql(2008)
19
+ @sl.record_reference.should eql("365-9780194351898")
20
+ @sl.notification_type.should eql(3)
21
+ @sl.product_form.should eql("BC")
22
+ @sl.number_of_pages.should eql(100)
23
+ @sl.bic_main_subject.should eql("EB")
24
+ @sl.publishing_status.should eql(4)
25
+ @sl.publication_date.should eql(Date.civil(1998,9,1))
26
+ @sl.pack_quantity.should eql(12)
27
27
  end
28
28
 
29
29
  specify "should provide write access to attibutes" do
30
- apa = ONIX::SLProduct.new
30
+ sl = ONIX::SLProduct.new
31
+
32
+ sl.notification_type = 3
33
+ sl.to_xml.to_s.include?("<NotificationType>03</NotificationType>").should be_true
34
+
35
+ sl.record_reference = "365-9780194351898"
36
+ sl.to_xml.to_s.include?("<RecordReference>365-9780194351898</RecordReference>").should be_true
37
+
38
+ sl.product_form = "BC"
39
+ sl.to_xml.to_s.include?("<ProductForm>BC</ProductForm>").should be_true
40
+
41
+ sl.number_of_pages = 100
42
+ sl.to_xml.to_s.include?("<NumberOfPages>100</NumberOfPages>").should be_true
43
+
44
+ sl.bic_main_subject = "EB"
45
+ sl.to_xml.to_s.include?("<BICMainSubject>EB</BICMainSubject>").should be_true
46
+
47
+ sl.publishing_status = 4
48
+ sl.to_xml.to_s.include?("<PublishingStatus>04</PublishingStatus>").should be_true
31
49
 
32
- apa.notification_type = 3
33
- apa.to_xml.to_s.include?("<NotificationType>03</NotificationType>").should be_true
50
+ sl.publication_date = Date.civil(1998,9,1)
51
+ sl.to_xml.to_s.include?("<PublicationDate>19980901</PublicationDate>").should be_true
52
+
53
+ sl.pack_quantity = 12
54
+ sl.to_xml.to_s.include?("<PackQuantity>12</PackQuantity>").should be_true
55
+ end
56
+
57
+ end
58
+
59
+ context ONIX::SLProduct, "series method" do
60
+ specify "should set the nested series value on the underlying product class" do
61
+ sl = ONIX::SLProduct.new
62
+
63
+ sl.series = "Harry Potter"
64
+ sl.series = "Lemony Snicket"
65
+ sl.to_xml.to_s.include?("<TitleOfSeries>Harry Potter</TitleOfSeries>").should be_true
66
+ sl.to_xml.to_s.include?("<TitleOfSeries>Lemony Snicket</TitleOfSeries>").should be_true
67
+ end
68
+ end
34
69
 
35
- apa.record_reference = "999"
36
- apa.to_xml.to_s.include?("<RecordReference>999</RecordReference>").should be_true
70
+ context ONIX::SLProduct, "price method" do
71
+ before(:each) do
72
+ @data_path = File.join(File.dirname(__FILE__),"..","data")
73
+ file1 = File.join(@data_path, "usd.xml")
74
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
75
+ @product_node = @doc.root
76
+ end
37
77
 
38
- apa.number_of_pages = 100
39
- apa.to_xml.to_s.include?("<NumberOfPages>100</NumberOfPages>").should be_true
78
+ specify "should return the first price in the file, regardless of type" do
79
+ @product = ONIX::Product.from_xml(@product_node.to_s)
80
+ @sl = ONIX::SLProduct.new(@product)
40
81
 
41
- apa.publishing_status = 4
42
- apa.to_xml.to_s.include?("<PublishingStatus>04</PublishingStatus>").should be_true
82
+ @sl.price.should eql(BigDecimal.new("99.95"))
83
+ end
84
+ end
43
85
 
44
- apa.publication_date = Date.civil(1998,9,1)
45
- apa.to_xml.to_s.include?("<PublicationDate>19980901</PublicationDate>").should be_true
86
+ context ONIX::SLProduct, "rrp_exc_sales_tax method" do
87
+ before(:each) do
88
+ @data_path = File.join(File.dirname(__FILE__),"..","data")
89
+ file1 = File.join(@data_path, "usd.xml")
90
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
91
+ @product_node = @doc.root
46
92
  end
47
93
 
94
+ specify "should return the first price in the file of type 1" do
95
+ @product = ONIX::Product.from_xml(@product_node.to_s)
96
+ @sl = ONIX::SLProduct.new(@product)
97
+
98
+ @sl.rrp_exc_sales_tax.should eql(BigDecimal.new("99.95"))
99
+ end
48
100
  end
@@ -0,0 +1,8 @@
1
+ # coding: utf-8
2
+
3
+ require 'date'
4
+ require 'stringio'
5
+ require 'rubygems'
6
+ gem "activesupport", "<= 2.9.9"
7
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
8
+ require 'onix'
data/spec/stock_spec.rb CHANGED
@@ -1,15 +1,13 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
6
4
 
7
5
  context "ONIX::Stock" do
8
6
 
9
7
  before(:each) do
10
8
  data_path = File.join(File.dirname(__FILE__),"..","data")
11
9
  file1 = File.join(data_path, "stock.xml")
12
- @doc = LibXML::XML::Document.file(file1)
10
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
13
11
  @root = @doc.root
14
12
  end
15
13
 
data/spec/subject_spec.rb CHANGED
@@ -1,15 +1,13 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
6
4
 
7
5
  context "ONIX::Subject" do
8
6
 
9
7
  before(:each) do
10
8
  data_path = File.join(File.dirname(__FILE__),"..","data")
11
9
  file1 = File.join(data_path, "subject.xml")
12
- @doc = LibXML::XML::Document.file(file1)
10
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
13
11
  @root = @doc.root
14
12
  end
15
13
 
@@ -1,15 +1,13 @@
1
1
  # coding: utf-8
2
2
 
3
- $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'onix'
3
+ require File.dirname(__FILE__) + '/spec_helper.rb'
6
4
 
7
5
  context "ONIX::SupplyDetail" do
8
6
 
9
7
  before(:each) do
10
8
  data_path = File.join(File.dirname(__FILE__),"..","data")
11
9
  file1 = File.join(data_path, "supply_detail.xml")
12
- @doc = LibXML::XML::Document.file(file1)
10
+ @doc = Nokogiri::XML::Document.parse(File.read(file1))
13
11
  @root = @doc.root
14
12
  end
15
13