corrency 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ .bundle/
2
+ log/*.log
3
+ test/dummy/db/*.sqlite3
4
+ test/dummy/log/*.log
5
+ test/dummy/tmp/
6
+ *.gem
7
+ .bundle
8
+ Gemfile.lock
9
+ pkg/*
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.2@corrency --create
data/Gemfile CHANGED
@@ -1,6 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  group :development, :test do
4
+ gem "rake", "0.8.7"
4
5
  gem "capybara", ">= 0.4.0"
5
6
  gem "shoulda"
6
7
  gem "sqlite3"
data/Gemfile.lock CHANGED
@@ -105,6 +105,7 @@ DEPENDENCIES
105
105
  capybara (>= 0.4.0)
106
106
  jeweler (~> 1.6.0)
107
107
  rails (>= 3.0.0)
108
+ rake (= 0.8.7)
108
109
  rcov
109
110
  shoulda
110
111
  sqlite3
data/Rakefile CHANGED
@@ -9,20 +9,7 @@ end
9
9
  require 'rake'
10
10
  require 'rake/rdoctask'
11
11
  require 'rake/testtask'
12
-
13
- require 'jeweler'
14
- Jeweler::Tasks.new do |gem|
15
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
16
- gem.name = "corrency"
17
- gem.homepage = "http://github.com/robwilliams/corrency"
18
- gem.license = "MIT"
19
- gem.summary = %Q{Adds Ecommerce Extensions to Various Core Libraries}
20
- gem.description = %Q{Adds Ecommerce Extensions to Various Core Libraries}
21
- gem.email = "rob@r-williams.com"
22
- gem.authors = ["Robert Williams"]
23
- # dependencies defined in Gemfile
24
- end
25
- Jeweler::RubygemsDotOrgTasks.new
12
+ require "bundler/gem_tasks"
26
13
 
27
14
  Rake::TestTask.new(:test) do |t|
28
15
  t.libs << 'lib'
data/corrency.gemspec CHANGED
@@ -1,109 +1,30 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "corrency/version"
5
4
 
6
5
  Gem::Specification.new do |s|
7
- s.name = %q{corrency}
8
- s.version = "0.1.1"
6
+ s.name = "corrency"
7
+ s.version = Corrency::VERSION
8
+ s.authors = ["Robert Williams"]
9
+ s.email = ["rob@r-williams.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Adds Ecommerce Extensions to Various Core Libraries}
12
+ s.description = %q{Adds Ecommerce Extensions to Various Core Libraries it really does}
9
13
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Robert Williams"]
12
- s.date = %q{2011-06-06}
13
- s.description = %q{Adds Ecommerce Extensions to Various Core Libraries}
14
- s.email = %q{rob@r-williams.com}
15
- s.extra_rdoc_files = [
16
- "README.rdoc"
17
- ]
18
- s.files = [
19
- "Gemfile",
20
- "Gemfile.lock",
21
- "MIT-LICENSE",
22
- "README.rdoc",
23
- "Rakefile",
24
- "VERSION",
25
- "corrency.gemspec",
26
- "lib/core_ext/big_decimal.rb",
27
- "lib/corrency.rb",
28
- "lib/corrency/config.rb",
29
- "test/big_decimal_test.rb",
30
- "test/corrency_test.rb",
31
- "test/dummy/Rakefile",
32
- "test/dummy/app/controllers/application_controller.rb",
33
- "test/dummy/app/controllers/products_controller.rb",
34
- "test/dummy/app/helpers/application_helper.rb",
35
- "test/dummy/app/helpers/products_helper.rb",
36
- "test/dummy/app/models/product.rb",
37
- "test/dummy/app/views/layouts/application.html.erb",
38
- "test/dummy/app/views/products/show.html.erb",
39
- "test/dummy/config.ru",
40
- "test/dummy/config/application.rb",
41
- "test/dummy/config/boot.rb",
42
- "test/dummy/config/database.yml",
43
- "test/dummy/config/environment.rb",
44
- "test/dummy/config/environments/development.rb",
45
- "test/dummy/config/environments/production.rb",
46
- "test/dummy/config/environments/test.rb",
47
- "test/dummy/config/initializers/backtrace_silencers.rb",
48
- "test/dummy/config/initializers/corrency.rb",
49
- "test/dummy/config/initializers/inflections.rb",
50
- "test/dummy/config/initializers/mime_types.rb",
51
- "test/dummy/config/initializers/secret_token.rb",
52
- "test/dummy/config/initializers/session_store.rb",
53
- "test/dummy/config/locales/en.yml",
54
- "test/dummy/config/routes.rb",
55
- "test/dummy/db/migrate/20110511100318_create_products.rb",
56
- "test/dummy/db/schema.rb",
57
- "test/dummy/public/404.html",
58
- "test/dummy/public/422.html",
59
- "test/dummy/public/500.html",
60
- "test/dummy/public/favicon.ico",
61
- "test/dummy/public/javascripts/application.js",
62
- "test/dummy/public/javascripts/controls.js",
63
- "test/dummy/public/javascripts/dragdrop.js",
64
- "test/dummy/public/javascripts/effects.js",
65
- "test/dummy/public/javascripts/prototype.js",
66
- "test/dummy/public/javascripts/rails.js",
67
- "test/dummy/public/stylesheets/.gitkeep",
68
- "test/dummy/script/rails",
69
- "test/integration/product_price_test.rb",
70
- "test/support/integration_case.rb",
71
- "test/test_helper.rb"
72
- ]
73
- s.homepage = %q{http://github.com/robwilliams/corrency}
74
- s.licenses = ["MIT"]
75
- s.require_paths = ["lib"]
76
- s.rubygems_version = %q{1.6.2}
77
- s.summary = %q{Adds Ecommerce Extensions to Various Core Libraries}
78
-
79
- if s.respond_to? :specification_version then
80
- s.specification_version = 3
14
+ s.rubyforge_project = "corrency"
81
15
 
82
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
83
- s.add_development_dependency(%q<capybara>, [">= 0.4.0"])
84
- s.add_development_dependency(%q<shoulda>, [">= 0"])
85
- s.add_development_dependency(%q<sqlite3>, [">= 0"])
86
- s.add_development_dependency(%q<jeweler>, ["~> 1.6.0"])
87
- s.add_development_dependency(%q<rcov>, [">= 0"])
88
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
89
- s.add_development_dependency(%q<rails>, [">= 3.0.0"])
90
- else
91
- s.add_dependency(%q<capybara>, [">= 0.4.0"])
92
- s.add_dependency(%q<shoulda>, [">= 0"])
93
- s.add_dependency(%q<sqlite3>, [">= 0"])
94
- s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
95
- s.add_dependency(%q<rcov>, [">= 0"])
96
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
97
- s.add_dependency(%q<rails>, [">= 3.0.0"])
98
- end
99
- else
100
- s.add_dependency(%q<capybara>, [">= 0.4.0"])
101
- s.add_dependency(%q<shoulda>, [">= 0"])
102
- s.add_dependency(%q<sqlite3>, [">= 0"])
103
- s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
104
- s.add_dependency(%q<rcov>, [">= 0"])
105
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
106
- s.add_dependency(%q<rails>, [">= 3.0.0"])
107
- end
108
- end
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
109
20
 
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency(%q<capybara>, [">= 0.4.0"])
23
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
24
+ s.add_development_dependency(%q<sqlite3>, [">= 0"])
25
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.0"])
26
+ s.add_development_dependency(%q<rcov>, [">= 0"])
27
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
28
+ s.add_development_dependency(%q<rails>, [">= 3.0.0"])
29
+ # s.add_runtime_dependency "rest-client"
30
+ end
@@ -4,12 +4,25 @@ require 'bigdecimal/util'
4
4
  class BigDecimal
5
5
 
6
6
  def inc_vat
7
- (self * ((Corrency::Config.vat_rate.to_f / 100) + 1)).to_d
7
+ (self * vat_rate).to_d
8
8
  end
9
9
 
10
+ def ex_vat
11
+ (self / vat_rate).to_d
12
+ end
13
+
14
+ def next_ninety_nine
15
+ self.ceil - BigDecimal.new("0.01")
16
+ end
17
+
10
18
  old_to_s = instance_method :to_s
11
19
 
12
20
  define_method :to_s do |*param|
13
21
  "%.2f" % self.round(2)
14
22
  end
23
+
24
+ protected
25
+ def vat_rate
26
+ 1 + (Corrency::Config.vat_rate.to_f / 100)
27
+ end
15
28
  end
@@ -0,0 +1,3 @@
1
+ module Corrency
2
+ VERSION = "0.2.0"
3
+ end
@@ -12,11 +12,33 @@ class BigDecimalTest < ActiveSupport::TestCase
12
12
  assert_equal(BigDecimal.new((@bd * (Corrency::Config.vat_rate.to_f / 100 + 1)).to_s), @bd.inc_vat)
13
13
  end
14
14
 
15
- should "return the correct class" do
15
+ should "return a BigDecimal" do
16
16
  assert_equal(BigDecimal, @bd.inc_vat.class)
17
17
  end
18
18
  end
19
19
 
20
+ context "ex_vat" do
21
+
22
+ should "return the correct total inc vat" do
23
+ assert_equal(BigDecimal.new((@bd / (Corrency::Config.vat_rate.to_f / 100 + 1)).to_s), @bd.ex_vat)
24
+ end
25
+
26
+ should "return a BigDecimal" do
27
+ assert_equal(BigDecimal, @bd.ex_vat.class)
28
+ end
29
+ end
30
+
31
+ context "next_ninety_nine" do
32
+
33
+ should "return the next nearest 0.99 decimal" do
34
+ assert_equal(BigDecimal.new("100.99"), @bd.next_ninety_nine)
35
+ end
36
+
37
+ should "return a BigDecimal" do
38
+ assert_equal(BigDecimal, @bd.next_ninety_nine.class)
39
+ end
40
+ end
41
+
20
42
  context "to_s" do
21
43
 
22
44
  should "return a string rounded to 2 decimal places" do
@@ -10,8 +10,7 @@ class ProductPriceTest < ActiveSupport::IntegrationCase
10
10
  test "should display correct price on GET to products#show" do
11
11
  assert_match '<span class="price">10.00</span>', page.body
12
12
  end
13
-
14
-
13
+
15
14
  # this also prove initializer works because vat_rate has been changed to 27.00
16
15
  test "should display correct price.inc_vat on GET to products#show" do
17
16
  assert_match '<span class="price_inc_vat">12.70</span>', page.body
data/test/test_helper.rb CHANGED
@@ -3,6 +3,7 @@ ENV["RAILS_ENV"] = "test"
3
3
 
4
4
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
5
  require "rails/test_help"
6
+ require 'shoulda'
6
7
 
7
8
  ActionMailer::Base.delivery_method = :test
8
9
  ActionMailer::Base.perform_deliveries = true
metadata CHANGED
@@ -1,114 +1,112 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: corrency
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
4
5
  prerelease:
5
- version: 0.1.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Robert Williams
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-06 00:00:00 +01:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-02 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: capybara
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70199186560760 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
23
21
  version: 0.4.0
24
22
  type: :development
25
23
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *70199186560760
25
+ - !ruby/object:Gem::Dependency
28
26
  name: shoulda
29
- requirement: &id002 !ruby/object:Gem::Requirement
27
+ requirement: &70199186559660 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
35
33
  type: :development
36
34
  prerelease: false
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *70199186559660
36
+ - !ruby/object:Gem::Dependency
39
37
  name: sqlite3
40
- requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirement: &70199186558460 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
46
44
  type: :development
47
45
  prerelease: false
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
46
+ version_requirements: *70199186558460
47
+ - !ruby/object:Gem::Dependency
50
48
  name: jeweler
51
- requirement: &id004 !ruby/object:Gem::Requirement
49
+ requirement: &70199186557020 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
51
+ requirements:
54
52
  - - ~>
55
- - !ruby/object:Gem::Version
53
+ - !ruby/object:Gem::Version
56
54
  version: 1.6.0
57
55
  type: :development
58
56
  prerelease: false
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
57
+ version_requirements: *70199186557020
58
+ - !ruby/object:Gem::Dependency
61
59
  name: rcov
62
- requirement: &id005 !ruby/object:Gem::Requirement
60
+ requirement: &70199186554800 !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
68
66
  type: :development
69
67
  prerelease: false
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
68
+ version_requirements: *70199186554800
69
+ - !ruby/object:Gem::Dependency
72
70
  name: bundler
73
- requirement: &id006 !ruby/object:Gem::Requirement
71
+ requirement: &70199186553640 !ruby/object:Gem::Requirement
74
72
  none: false
75
- requirements:
73
+ requirements:
76
74
  - - ~>
77
- - !ruby/object:Gem::Version
75
+ - !ruby/object:Gem::Version
78
76
  version: 1.0.0
79
77
  type: :development
80
78
  prerelease: false
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
79
+ version_requirements: *70199186553640
80
+ - !ruby/object:Gem::Dependency
83
81
  name: rails
84
- requirement: &id007 !ruby/object:Gem::Requirement
82
+ requirement: &70199186552640 !ruby/object:Gem::Requirement
85
83
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
89
87
  version: 3.0.0
90
88
  type: :development
91
89
  prerelease: false
92
- version_requirements: *id007
93
- description: Adds Ecommerce Extensions to Various Core Libraries
94
- email: rob@r-williams.com
90
+ version_requirements: *70199186552640
91
+ description: Adds Ecommerce Extensions to Various Core Libraries it really does
92
+ email:
93
+ - rob@r-williams.com
95
94
  executables: []
96
-
97
95
  extensions: []
98
-
99
- extra_rdoc_files:
100
- - README.rdoc
101
- files:
96
+ extra_rdoc_files: []
97
+ files:
98
+ - .gitignore
99
+ - .rvmrc
102
100
  - Gemfile
103
101
  - Gemfile.lock
104
102
  - MIT-LICENSE
105
103
  - README.rdoc
106
104
  - Rakefile
107
- - VERSION
108
105
  - corrency.gemspec
109
106
  - lib/core_ext/big_decimal.rb
110
107
  - lib/corrency.rb
111
108
  - lib/corrency/config.rb
109
+ - lib/corrency/version.rb
112
110
  - test/big_decimal_test.rb
113
111
  - test/corrency_test.rb
114
112
  - test/dummy/Rakefile
@@ -152,36 +150,74 @@ files:
152
150
  - test/integration/product_price_test.rb
153
151
  - test/support/integration_case.rb
154
152
  - test/test_helper.rb
155
- has_rdoc: true
156
- homepage: http://github.com/robwilliams/corrency
157
- licenses:
158
- - MIT
153
+ homepage: ''
154
+ licenses: []
159
155
  post_install_message:
160
156
  rdoc_options: []
161
-
162
- require_paths:
157
+ require_paths:
163
158
  - lib
164
- required_ruby_version: !ruby/object:Gem::Requirement
159
+ required_ruby_version: !ruby/object:Gem::Requirement
165
160
  none: false
166
- requirements:
167
- - - ">="
168
- - !ruby/object:Gem::Version
169
- hash: 1256088515157523769
170
- segments:
161
+ requirements:
162
+ - - ! '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ segments:
171
166
  - 0
172
- version: "0"
173
- required_rubygems_version: !ruby/object:Gem::Requirement
167
+ hash: 1118588149199432669
168
+ required_rubygems_version: !ruby/object:Gem::Requirement
174
169
  none: false
175
- requirements:
176
- - - ">="
177
- - !ruby/object:Gem::Version
178
- version: "0"
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
179
174
  requirements: []
180
-
181
- rubyforge_project:
182
- rubygems_version: 1.6.2
175
+ rubyforge_project: corrency
176
+ rubygems_version: 1.8.6
183
177
  signing_key:
184
178
  specification_version: 3
185
179
  summary: Adds Ecommerce Extensions to Various Core Libraries
186
- test_files: []
187
-
180
+ test_files:
181
+ - test/big_decimal_test.rb
182
+ - test/corrency_test.rb
183
+ - test/dummy/Rakefile
184
+ - test/dummy/app/controllers/application_controller.rb
185
+ - test/dummy/app/controllers/products_controller.rb
186
+ - test/dummy/app/helpers/application_helper.rb
187
+ - test/dummy/app/helpers/products_helper.rb
188
+ - test/dummy/app/models/product.rb
189
+ - test/dummy/app/views/layouts/application.html.erb
190
+ - test/dummy/app/views/products/show.html.erb
191
+ - test/dummy/config.ru
192
+ - test/dummy/config/application.rb
193
+ - test/dummy/config/boot.rb
194
+ - test/dummy/config/database.yml
195
+ - test/dummy/config/environment.rb
196
+ - test/dummy/config/environments/development.rb
197
+ - test/dummy/config/environments/production.rb
198
+ - test/dummy/config/environments/test.rb
199
+ - test/dummy/config/initializers/backtrace_silencers.rb
200
+ - test/dummy/config/initializers/corrency.rb
201
+ - test/dummy/config/initializers/inflections.rb
202
+ - test/dummy/config/initializers/mime_types.rb
203
+ - test/dummy/config/initializers/secret_token.rb
204
+ - test/dummy/config/initializers/session_store.rb
205
+ - test/dummy/config/locales/en.yml
206
+ - test/dummy/config/routes.rb
207
+ - test/dummy/db/migrate/20110511100318_create_products.rb
208
+ - test/dummy/db/schema.rb
209
+ - test/dummy/public/404.html
210
+ - test/dummy/public/422.html
211
+ - test/dummy/public/500.html
212
+ - test/dummy/public/favicon.ico
213
+ - test/dummy/public/javascripts/application.js
214
+ - test/dummy/public/javascripts/controls.js
215
+ - test/dummy/public/javascripts/dragdrop.js
216
+ - test/dummy/public/javascripts/effects.js
217
+ - test/dummy/public/javascripts/prototype.js
218
+ - test/dummy/public/javascripts/rails.js
219
+ - test/dummy/public/stylesheets/.gitkeep
220
+ - test/dummy/script/rails
221
+ - test/integration/product_price_test.rb
222
+ - test/support/integration_case.rb
223
+ - test/test_helper.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.1