rbook-bisac 0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,68 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
2
+
3
+ require 'rbook/bisac'
4
+ include RBook
5
+
6
+ context "A new bisac object" do
7
+
8
+ setup do
9
+ @valid_item1 = RBook::Bisac::Product.new("0743285689")
10
+ @valid_item1.title = "Enemy Combatant"
11
+ @valid_item1.author = "Begg, Moazzam"
12
+ @valid_item1.price = "2995"
13
+ @valid_item1.pubdate = "060101"
14
+ @valid_item1.publisher = "Simon and Schuster"
15
+ @valid_item1.imprint = "Free Press"
16
+ @valid_item1.volumes = "1"
17
+ @valid_item1.edition = "1"
18
+ @valid_item1.binding = "PB"
19
+ @valid_item1.volume = "1"
20
+ @valid_item1.status = "O/O"
21
+
22
+ @valid_item2 = RBook::Bisac::Product.new("0975240277")
23
+ @valid_item2.title = "HTML Utopia Designing Without Tables Using CSS"
24
+ @valid_item2.author = "Andrew, Rachel; Shafer, Dan"
25
+ @valid_item2.price = "5995"
26
+ @valid_item2.pubdate = "060401"
27
+ @valid_item2.publisher = "Sitepoint"
28
+ @valid_item2.imprint = "Sitepoint"
29
+ @valid_item2.volumes = "1"
30
+ @valid_item2.edition = "2"
31
+ @valid_item2.binding = "PB"
32
+ @valid_item2.volume = "1"
33
+ @valid_item2.status = "ACT"
34
+ end
35
+
36
+ specify "Should have product lines that are exactly 259 chars long" do
37
+ bisac = RBook::Bisac::Message.new("Rainbow","1234567","test","1")
38
+ bisac << @valid_item1
39
+ bisac << @valid_item2
40
+
41
+ bisac.to_s.split("\n").each do |line|
42
+ line.length.should eql(259)
43
+ end
44
+ end
45
+
46
+ specify "Should load a valid BISAC file from disk correctly" do
47
+ msg = RBook::Bisac::Message.load(File.dirname(__FILE__) + "/data/valid_bisac.txt")
48
+ msg.company.should eql("SAND")
49
+ msg.san.should eql("9012982")
50
+ msg.batch.should eql("000001")
51
+ msg.code.should eql("0")
52
+ msg.products.size.should eql(212)
53
+
54
+ product = msg.products[0]
55
+ product.isbn.should eql("0715200615")
56
+ product.title.should eql("GODS YOUNG CHURCH PB")
57
+ product.author.should eql("Barclay, W")
58
+ product.price.should eql("2272")
59
+ product.publisher.should eql("SAND")
60
+ product.imprint.should eql("STANP")
61
+ product.volumes.should eql("")
62
+ product.volume.should eql("000")
63
+ product.edition.should eql("")
64
+ product.binding.should eql("")
65
+
66
+ end
67
+
68
+ end
@@ -0,0 +1,31 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
2
+
3
+ require 'rbook/bisac'
4
+ include RBook
5
+
6
+ context "A new bisac purchase order line item object" do
7
+
8
+ setup do
9
+ @valid_row = "4000003 14976 Y000000000102978513220000100000000000000000000550000000"
10
+ @invalid_row_nil = nil
11
+ @invalid_row_num = 23
12
+ end
13
+
14
+ specify "Should load a line from a bisac po file correctly" do
15
+ item = RBook::Bisac::POLineItem.load_from_string(@valid_row)
16
+ item.should be_a_kind_of(RBook::Bisac::POLineItem)
17
+
18
+ item.sequence_number.should eql(3)
19
+ item.po_number.should eql("14976")
20
+ item.line_item_number.should eql("0000000001")
21
+ item.isbn.should eql("0297851322")
22
+ item.qty.should eql(1)
23
+ item.catalogue_code.should eql("0")
24
+ item.price.should eql(0)
25
+ end
26
+
27
+ specify "Should raise an appropriate exception when an invalid file is loaded" do
28
+ lambda { item = RBook::Bisac::POLineItem.load_from_string(@invalid_row_nil) }.should raise_error(RBook::InvalidArgumentError)
29
+ lambda { item = RBook::Bisac::POLineItem.load_from_string(@invalid_row_num) }.should raise_error(RBook::InvalidArgumentError)
30
+ end
31
+ end
@@ -0,0 +1,66 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
2
+
3
+ require 'rbook/bisac'
4
+ include RBook
5
+
6
+ context "A new bisac purchase order object" do
7
+
8
+ setup do
9
+ @valid_file = File.dirname(__FILE__) + "/data/bisac_po.txt"
10
+ @invalid_file_no_header = File.dirname(__FILE__) + "/data/bisac_po_no_header.txt"
11
+ @invalid_file_no_footer = File.dirname(__FILE__) + "/data/bisac_po_no_footer.txt"
12
+ @invalid_file_onix = File.dirname(__FILE__) + "/data/single_product.xml"
13
+ end
14
+
15
+ specify "Should load a valid BISAC PO file from disk correctly" do
16
+ msg = RBook::Bisac::PO.load_from_file(@valid_file)
17
+ msg.should be_a_kind_of(RBook::Bisac::PO)
18
+ msg.items.size.should eql(36)
19
+
20
+ msg.source_san.should eql("9013725")
21
+ msg.source_suffix.should eql("")
22
+ msg.source_name.should eql("Rainbow Book")
23
+ msg.date.should eql("061112")
24
+ msg.filename.should eql("INTERNET.BSC")
25
+ msg.format_version.should eql("F03")
26
+ msg.destination_san.should eql("9021000")
27
+ msg.destination_suffix.should eql("")
28
+ msg.po_number.should eql("14976")
29
+ msg.cancellation_date.should eql("000000")
30
+ msg.backorder.should be_true
31
+ msg.do_not_exceed_action.should eql("")
32
+ msg.do_not_exceed_amount.should eql("0000000")
33
+ msg.invoice_copies.should eql("01")
34
+ msg.special_instructions.should be_false
35
+ msg.do_not_ship_before.should eql("000000")
36
+ end
37
+
38
+ specify "Should load a valid BISAC PO file from a string correctly" do
39
+ msg = RBook::Bisac::PO.load_from_string(File.read(@valid_file))
40
+ msg.should be_a_kind_of(RBook::Bisac::PO)
41
+ msg.items.size.should eql(36)
42
+
43
+ msg.source_san.should eql("9013725")
44
+ msg.source_suffix.should eql("")
45
+ msg.source_name.should eql("Rainbow Book")
46
+ msg.date.should eql("061112")
47
+ msg.filename.should eql("INTERNET.BSC")
48
+ msg.format_version.should eql("F03")
49
+ msg.destination_san.should eql("9021000")
50
+ msg.destination_suffix.should eql("")
51
+ msg.po_number.should eql("14976")
52
+ msg.cancellation_date.should eql("000000")
53
+ msg.backorder.should be_true
54
+ msg.do_not_exceed_action.should eql("")
55
+ msg.do_not_exceed_amount.should eql("0000000")
56
+ msg.invoice_copies.should eql("01")
57
+ msg.special_instructions.should be_false
58
+ msg.do_not_ship_before.should eql("000000")
59
+ end
60
+
61
+ specify "Should raise an appropriate exception when an invalid file is loaded" do
62
+ lambda { msg = RBook::Bisac::PO.load_from_file(@invalid_file_no_header) }.should raise_error(RBook::InvalidFileError)
63
+ lambda { msg = RBook::Bisac::PO.load_from_file(@invalid_file_no_footer) }.should raise_error(RBook::InvalidFileError)
64
+ lambda { msg = RBook::Bisac::PO.load_from_file(@invalid_file_onix) }.should raise_error(RBook::InvalidFileError)
65
+ end
66
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.4
3
+ specification_version: 1
4
+ name: rbook-bisac
5
+ version: !ruby/object:Gem::Version
6
+ version: "0.5"
7
+ date: 2007-07-03 00:00:00 +10:00
8
+ summary: A library for manipulating BISAC files
9
+ require_paths:
10
+ - lib
11
+ email: jimmy@deefa.com
12
+ homepage: http://rbook.rubyforge.org/
13
+ rubyforge_project: rbook
14
+ description: This library is designed to make working with various BISAC file formats easier.
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - James Healy
31
+ files:
32
+ - lib/rbook
33
+ - lib/rbook/bisac
34
+ - lib/rbook/bisac/po.rb
35
+ - lib/rbook/bisac/product.rb
36
+ - lib/rbook/bisac/po_line_item.rb
37
+ - lib/rbook/bisac/message.rb
38
+ - lib/rbook/bisac.rb
39
+ - lib/rbook/errors.rb
40
+ - specs/data
41
+ - specs/data/bisac_po_no_header.txt
42
+ - specs/data/bisac_po_no_footer.txt
43
+ - specs/data/bisac_po.txt
44
+ - specs/data/valid_bisac.txt
45
+ - specs/data/bisac_po.bsc
46
+ - specs/new_po_spec.rb
47
+ - specs/new_bisac_spec.rb
48
+ - specs/new_po_line_item_spec.rb
49
+ - Rakefile
50
+ - README
51
+ - COPYING
52
+ - LICENSE
53
+ test_files:
54
+ - specs/new_po_spec.rb
55
+ - specs/new_bisac_spec.rb
56
+ - specs/new_po_line_item_spec.rb
57
+ rdoc_options:
58
+ - --title
59
+ - bisac Documentation
60
+ - --main
61
+ - README
62
+ - -q
63
+ extra_rdoc_files:
64
+ - README
65
+ - COPYING
66
+ - LICENSE
67
+ executables: []
68
+
69
+ extensions: []
70
+
71
+ requirements: []
72
+
73
+ dependencies:
74
+ - !ruby/object:Gem::Dependency
75
+ name: rbook-isbn
76
+ version_requirement:
77
+ version_requirements: !ruby/object:Gem::Version::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: "1.0"
82
+ version: