payday 1.0.4 → 1.0.5
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/Gemfile +1 -0
- data/lib/payday/pdf_renderer.rb +1 -1
- data/lib/payday/version.rb +1 -1
- data/test/invoice_test.rb +34 -34
- metadata +9 -9
data/Gemfile
CHANGED
data/lib/payday/pdf_renderer.rb
CHANGED
data/lib/payday/version.rb
CHANGED
data/test/invoice_test.rb
CHANGED
@@ -2,14 +2,14 @@ require File.expand_path("test/test_helper")
|
|
2
2
|
|
3
3
|
module Payday
|
4
4
|
class InvoiceTest < MiniTest::Unit::TestCase
|
5
|
-
|
5
|
+
|
6
6
|
test "that setting values through the options hash on initialization works" do
|
7
7
|
i = Invoice.new(:invoice_number => 20, :bill_to => "Here", :ship_to => "There",
|
8
8
|
:notes => "These are some notes.",
|
9
9
|
:line_items => [LineItem.new(:price => 10, :quantity => 3, :description => "Shirts")],
|
10
10
|
:shipping_rate => 15.00, :shipping_description => "USPS Priority Mail:",
|
11
11
|
:tax_rate => 0.125, :tax_description => "Local Sales Tax, 12.5%")
|
12
|
-
|
12
|
+
|
13
13
|
assert_equal 20, i.invoice_number
|
14
14
|
assert_equal "Here", i.bill_to
|
15
15
|
assert_equal "There", i.ship_to
|
@@ -20,123 +20,123 @@ module Payday
|
|
20
20
|
assert_equal BigDecimal.new("0.125"), i.tax_rate
|
21
21
|
assert_equal "Local Sales Tax, 12.5%", i.tax_description
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
test "that subtotal totals up all of the line items in an invoice correctly" do
|
25
25
|
i = Invoice.new
|
26
|
-
|
26
|
+
|
27
27
|
# $100 in Pants
|
28
28
|
i.line_items << LineItem.new(:price => 20, :quantity => 5, :description => "Pants")
|
29
|
-
|
29
|
+
|
30
30
|
# $30 in Shirts
|
31
31
|
i.line_items << LineItem.new(:price => 10, :quantity => 3, :description => "Shirts")
|
32
|
-
|
32
|
+
|
33
33
|
# $1000 in Hats
|
34
34
|
i.line_items << LineItem.new(:price => 5, :quantity => 200, :description => "Hats")
|
35
|
-
|
35
|
+
|
36
36
|
assert_equal BigDecimal.new("1130"), i.subtotal
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
test "that tax returns the correct tax amount, rounded to two decimal places" do
|
40
40
|
i = Invoice.new(:tax_rate => 0.1)
|
41
41
|
i.line_items << LineItem.new(:price => 20, :quantity => 5, :description => "Pants")
|
42
|
-
|
42
|
+
|
43
43
|
assert_equal(BigDecimal.new("10"), i.tax)
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
test "that taxes aren't applied to invoices with a subtotal of 0 or a negative amount" do
|
47
47
|
i = Invoice.new(:tax_rate => 0.1)
|
48
48
|
i.line_items << LineItem.new(:price => -1, :quantity => 100, :description => "Negative Priced Pants")
|
49
|
-
|
49
|
+
|
50
50
|
assert_equal(BigDecimal.new("0"), i.tax)
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
test "that the total for this invoice calculates correctly" do
|
54
54
|
i = Invoice.new(:tax_rate => 0.1)
|
55
|
-
|
55
|
+
|
56
56
|
# $100 in Pants
|
57
57
|
i.line_items << LineItem.new(:price => 20, :quantity => 5, :description => "Pants")
|
58
|
-
|
58
|
+
|
59
59
|
# $30 in Shirts
|
60
60
|
i.line_items << LineItem.new(:price => 10, :quantity => 3, :description => "Shirts")
|
61
|
-
|
61
|
+
|
62
62
|
# $1000 in Hats
|
63
63
|
i.line_items << LineItem.new(:price => 5, :quantity => 200, :description => "Hats")
|
64
|
-
|
64
|
+
|
65
65
|
assert_equal BigDecimal.new("1243"), i.total
|
66
66
|
end
|
67
|
-
|
67
|
+
|
68
68
|
test "overdue? is false when past date and unpaid" do
|
69
69
|
i = Invoice.new(:due_at => Date.today - 1)
|
70
70
|
assert i.overdue?
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
test "overdue? is true when past date but paid" do
|
74
74
|
i = Invoice.new(:due_at => Date.today - 1, :paid_at => Date.today)
|
75
75
|
assert !i.overdue?
|
76
76
|
end
|
77
|
-
|
77
|
+
|
78
78
|
test "overdue? when due_at is a time" do
|
79
79
|
i = Invoice.new(:due_at => Time.parse("Jan 1 14:33:20 GMT 2011"))
|
80
80
|
assert i.overdue?
|
81
81
|
end
|
82
|
-
|
82
|
+
|
83
83
|
test "paid is false when not paid" do
|
84
84
|
i = Invoice.new
|
85
85
|
assert !i.paid?
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
test "paid is true when paid" do
|
89
89
|
i = Invoice.new(:paid_at => Date.today)
|
90
90
|
assert i.paid?
|
91
91
|
end
|
92
|
-
|
92
|
+
|
93
93
|
test "iterating through invoice_details as two element arrays" do
|
94
94
|
i = Invoice.new(:invoice_details => [["Test", "Yes"], ["Awesome", "Absolutely"]])
|
95
95
|
details = []
|
96
96
|
i.each_detail do |key, value|
|
97
97
|
details << [key, value]
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
assert_equal 2, details.length
|
101
101
|
assert details.include?(["Test", "Yes"])
|
102
102
|
assert details.include?(["Awesome", "Absolutely"])
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
test "iterating through invoice_details as a hash" do
|
106
106
|
i = Invoice.new(:invoice_details => {"Test" => "Yes", "Awesome" => "Absolutely"})
|
107
107
|
details = []
|
108
108
|
i.each_detail do |key, value|
|
109
109
|
details << [key, value]
|
110
110
|
end
|
111
|
-
|
111
|
+
|
112
112
|
assert_equal 2, details.length
|
113
113
|
assert details.include?(["Test", "Yes"])
|
114
114
|
assert details.include?(["Awesome", "Absolutely"])
|
115
115
|
end
|
116
|
-
|
116
|
+
|
117
117
|
test "rendering to file" do
|
118
118
|
File.unlink("tmp/testing.pdf") if File.exists?("tmp/testing.pdf")
|
119
119
|
assert !File.exists?("tmp/testing.pdf")
|
120
|
-
|
120
|
+
|
121
121
|
i = Invoice.new(:tax_rate => 0.1, :notes => "These are some crazy awesome notes!", :invoice_number => 12,
|
122
122
|
:due_at => Date.civil(2011, 1, 22), #:paid_at => Date.civil(2012, 2, 22),
|
123
|
-
:bill_to => "Alan Johnson\n101 This Way\nSomewhere, SC 22222",
|
123
|
+
:bill_to => "Alan Johnson\n101 This Way\nSomewhere, SC 22222",
|
124
124
|
:ship_to => "Frank Johnson\n101 That Way\nOther, SC 22229",
|
125
125
|
:invoice_details => {"Ordered By:" => "Alan Johnson", "Paid By:" => "Dude McDude"})
|
126
|
-
|
126
|
+
|
127
127
|
Payday::Config.default.company_details = "10 This Way\nManhattan, NY 10001\n800-111-2222\nawesome@awesomecorp.com"
|
128
|
-
|
129
|
-
|
128
|
+
|
129
|
+
30.times do
|
130
130
|
i.line_items << LineItem.new(:price => 20, :quantity => 5, :description => "Pants")
|
131
131
|
i.line_items << LineItem.new(:price => 10, :quantity => 3, :description => "Shirts")
|
132
132
|
i.line_items << LineItem.new(:price => 5, :quantity => 200, :description => "Hats")
|
133
133
|
end
|
134
134
|
|
135
135
|
i.render_pdf_to_file("tmp/testing.pdf")
|
136
|
-
|
136
|
+
|
137
137
|
assert File.exists?("tmp/testing.pdf")
|
138
138
|
end
|
139
|
-
|
139
|
+
|
140
140
|
test "rendering to string" do
|
141
141
|
i = Invoice.new(:tax_rate => 0.1, :notes => "These are some crazy awesome notes!", :invoice_number => 12,
|
142
142
|
:due_at => Date.civil(2011, 1, 22), :paid_at => Date.civil(2012, 2, 22),
|
@@ -151,4 +151,4 @@ module Payday
|
|
151
151
|
refute_nil i.render_pdf
|
152
152
|
end
|
153
153
|
end
|
154
|
-
end
|
154
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: payday
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-11-17 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: prawn
|
16
|
-
requirement: &
|
16
|
+
requirement: &70310126074000 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.12.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70310126074000
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: money
|
27
|
-
requirement: &
|
27
|
+
requirement: &70310126073500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 3.6.1
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70310126073500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: i18n
|
38
|
-
requirement: &
|
38
|
+
requirement: &70310126073000 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.5.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70310126073000
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: minitest
|
49
|
-
requirement: &
|
49
|
+
requirement: &70310126072600 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70310126072600
|
58
58
|
description: Payday is a library for rendering invoices. At present it supports rendering
|
59
59
|
invoices to pdfs, but we're planning on adding support for other formats in the
|
60
60
|
near future.
|