polish_invoicer 0.0.26 → 0.0.29

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 802e9cbe1c6b7ab58930b191e60ccab3655e9eb53b21d04eb657af483cca946b
4
- data.tar.gz: 5b352fff7ac09baa01e2b8120b18fd4e665e507c5887266b6fe355e5f0285c9d
3
+ metadata.gz: fccdb341dfc3705a7bdc55fee93853caacd6f887a32bc19f8f889927c6eca4c6
4
+ data.tar.gz: e60c0759877ddb7bdf78d3de1f775ba0a3e1d135ecd1aaa041878ac7876f92c5
5
5
  SHA512:
6
- metadata.gz: 86879c72be1a1e96e436863823192e00b933db64a9f9e2389a065bdb6211c87b2fd2cdacbc6e82aef44e9b582436199eceea73ade75cfc3d8e0fc1ad3b4f2c2a
7
- data.tar.gz: 06bebb6a1a4743d5cb607332697d4b7bfbc80b7639c235358e363d356a0b3a63ae89892eaaafcc089f367925f98ad29f3e77f2ff4086062ab382cc9bd79ba945
6
+ metadata.gz: f299544cdbda41f4e2dc3fcfd426d347236cdd2457d974dad75f6a59ebc9894a37ee254a54e8a045104dbed2407d4c8ebcfdbbd2e0e624ad7bc787f2233a17d9
7
+ data.tar.gz: b400adae2678fcdd0268d854b6eb9c31d6fb9690c023f8bfd96defbdd6996074c930c2238adfb1aac11a7f27609e60c2e0439309851dd0dd5f32d5782a041322
@@ -0,0 +1,37 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ "master" ]
13
+ pull_request:
14
+ branches: [ "master" ]
15
+
16
+ permissions:
17
+ contents: read
18
+
19
+ jobs:
20
+ test:
21
+
22
+ runs-on: ubuntu-22.04
23
+ strategy:
24
+ matrix:
25
+ ruby-version: ['3.0', '3.1', '3.2']
26
+
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+ - name: Set up Ruby
30
+ uses: ruby/setup-ruby@v1
31
+ with:
32
+ ruby-version: ${{ matrix.ruby-version }}
33
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
34
+ - name: Run tests
35
+ run: bundle exec rake
36
+ - name: Run linter
37
+ run: bundle exec rubocop
data/.rubocop.yml CHANGED
@@ -1,6 +1,8 @@
1
- Style/Documentation:
2
- Enabled: false
1
+ require:
2
+ - rubocop-minitest
3
+ - rubocop-rake
3
4
 
4
- Metrics/LineLength:
5
- Enabled: true
6
- Max: 100
5
+ inherit_from: .rubocop_todo.yml
6
+
7
+ AllCops:
8
+ NewCops: enable
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,66 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2023-10-24 20:10:00 UTC using RuboCop version 1.57.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 7
10
+ # Configuration parameters: EnforcedStyle, AllowedGems, Include.
11
+ # SupportedStyles: Gemfile, gems.rb, gemspec
12
+ # Include: **/*.gemspec, **/Gemfile, **/gems.rb
13
+ Gemspec/DevelopmentDependencies:
14
+ Exclude:
15
+ - 'polish_invoicer.gemspec'
16
+
17
+ # Offense count: 1
18
+ # Configuration parameters: Severity, Include.
19
+ # Include: **/*.gemspec
20
+ Gemspec/RequiredRubyVersion:
21
+ Exclude:
22
+ - 'polish_invoicer.gemspec'
23
+
24
+ # Offense count: 1
25
+ # This cop supports safe autocorrection (--autocorrect).
26
+ # Configuration parameters: AllowForAlignment.
27
+ Layout/CommentIndentation:
28
+ Exclude:
29
+ - 'lib/polish_invoicer/invoice.rb'
30
+
31
+ # Offense count: 12
32
+ # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
33
+ Metrics/AbcSize:
34
+ Max: 32
35
+
36
+ # Offense count: 4
37
+ # Configuration parameters: CountComments, CountAsOne.
38
+ Metrics/ClassLength:
39
+ Max: 196
40
+
41
+ # Offense count: 14
42
+ # Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
43
+ Metrics/MethodLength:
44
+ Max: 20
45
+
46
+ # Offense count: 11
47
+ Minitest/MultipleAssertions:
48
+ Max: 12
49
+
50
+ # Offense count: 5
51
+ # Configuration parameters: AllowedConstants.
52
+ Style/Documentation:
53
+ Exclude:
54
+ - 'spec/**/*'
55
+ - 'test/**/*'
56
+ - 'lib/polish_invoicer/invoice.rb'
57
+ - 'lib/polish_invoicer/presenter.rb'
58
+ - 'lib/polish_invoicer/validator.rb'
59
+ - 'lib/polish_invoicer/vat.rb'
60
+ - 'lib/polish_invoicer/writer.rb'
61
+
62
+ # Offense count: 2
63
+ Style/OpenStructUse:
64
+ Exclude:
65
+ - 'test/presenter_test.rb'
66
+ - 'test/validator_test.rb'
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.2.2
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in polish_invoicer.gemspec
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # PolishInvoicer [![Code Climate](https://codeclimate.com/github/macuk/polish_invoicer.png)](https://codeclimate.com/github/macuk/polish_invoicer) [![Build Status](https://travis-ci.org/macuk/polish_invoicer.png?branch=master)](https://travis-ci.org/macuk/polish_invoicer)
1
+ # PolishInvoicer [![Code Climate](https://codeclimate.com/github/macuk/polish_invoicer.png)](https://codeclimate.com/github/macuk/polish_invoicer)
2
2
 
3
3
  PolishInvoicer gem creates Polish invoices and proforms in HTML and PDF formats.
4
4
 
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rake/testtask'
3
5
 
data/doc/invoice.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'polish_invoicer'
2
4
 
3
5
  invoice = PolishInvoicer::Invoice.new(
data/doc/proforma.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'polish_invoicer'
2
4
 
3
5
  invoice = PolishInvoicer::Invoice.new(
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PolishInvoicer
2
4
  class Invoice
3
5
  AVAILABLE_PARAMS = [
@@ -26,20 +28,19 @@ module PolishInvoicer
26
28
  :lang, # język na fakturze, domyślnie: zależny od ustawienia foreign_buyer
27
29
  # foreign_buyer = false => lang = 'pl'
28
30
  # foreign_buyer = true => lang = 'pl_en'
29
- # możliwe wartości: pl | pl_en | en
31
+ # możliwe wartości: pl | pl_en | en | es
30
32
  :reverse_charge, # faktura z odwrotnym obciążeniem VAT
31
33
  :currency, # waluta rozliczeniowa, domyślnie: PLN (string)
32
34
  :exchange_rate # kurs waluty rozliczeniowej, domyślnie: 1.0000 (float)
33
35
  ].freeze
34
36
 
35
- attr_accessor(*AVAILABLE_PARAMS)
36
- attr_accessor :template_path
37
- attr_accessor :logger, :wkhtmltopdf_path, :wkhtmltopdf_command
37
+ attr_accessor(*AVAILABLE_PARAMS, :template_path, :logger, :wkhtmltopdf_path, :wkhtmltopdf_command)
38
38
 
39
39
  def initialize(params = {})
40
40
  set_defaults
41
41
  params.each do |k, v|
42
42
  raise "Nierozpoznany parametr #{k}" unless AVAILABLE_PARAMS.include?(k)
43
+
43
44
  send("#{k}=", v)
44
45
  end
45
46
  @validator = PolishInvoicer::Validator.new(self)
@@ -56,7 +57,8 @@ module PolishInvoicer
56
57
  # cena/wartość netto
57
58
  def net_value
58
59
  return price unless gross_price
59
- price / (1 + Vat.to_i(vat) / 100.0)
60
+
61
+ price / (1 + (Vat.to_i(vat) / 100.0))
60
62
  end
61
63
 
62
64
  # kwota VAT
@@ -67,7 +69,8 @@ module PolishInvoicer
67
69
  # cena/wartość brutto
68
70
  def gross_value
69
71
  return price if gross_price
70
- price + price * Vat.to_i(vat) / 100.0
72
+
73
+ price + (price * Vat.to_i(vat) / 100.0)
71
74
  end
72
75
 
73
76
  def save_to_html(path)
@@ -126,6 +129,7 @@ module PolishInvoicer
126
129
 
127
130
  def validate!
128
131
  return if valid?
132
+
129
133
  error_messages = errors.map { |k, v| "#{k}: #{v}" }.join(', ')
130
134
  raise "Parametry do wystawienia faktury są nieprawidłowe: #{error_messages}"
131
135
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PolishInvoicer
2
4
  class Presenter
3
5
  attr_accessor :invoice
@@ -40,6 +42,7 @@ module PolishInvoicer
40
42
  %w[trade_date create_date payment_date].each do |field|
41
43
  v = @invoice.send(field)
42
44
  next unless v
45
+
43
46
  @out[field.to_sym] = v.strftime '%d.%m.%Y'
44
47
  end
45
48
  end
@@ -48,7 +51,8 @@ module PolishInvoicer
48
51
  %w[net_value vat_value gross_value exchanged_tax total_to_pay_value paid_value to_pay_value].each do |field|
49
52
  v = @invoice.send(field)
50
53
  next unless v
51
- @out[field.to_sym] = sprintf('%02.2f', v).tr('.', ',')
54
+
55
+ @out[field.to_sym] = format('%02.2f', v).tr('.', ',')
52
56
  end
53
57
  end
54
58
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PolishInvoicer
2
4
  class Validator
3
5
  attr_reader :errors
@@ -41,7 +43,10 @@ module PolishInvoicer
41
43
  end
42
44
 
43
45
  def check_not_nil
44
- @errors[:gross_price] = 'Konieczne jest ustawienie znacznika rodzaju ceny (netto/brutto)' if @invoice.gross_price.nil?
46
+ if @invoice.gross_price.nil?
47
+ @errors[:gross_price] =
48
+ 'Konieczne jest ustawienie znacznika rodzaju ceny (netto/brutto)'
49
+ end
45
50
  @errors[:paid] = 'Konieczne jest ustawienie znacznika opłacenia faktury' if @invoice.paid.nil?
46
51
  @errors[:currency] = 'Konieczne jest ustawienie waluty rozliczeniowej' if @invoice.currency.nil?
47
52
  @errors[:exchange_rate] = 'Konieczne jest podanie kursu waluty rozliczeniowej' if @invoice.exchange_rate.nil?
@@ -56,18 +61,17 @@ module PolishInvoicer
56
61
  unless [true, false].include?(@invoice.gross_price)
57
62
  @errors[:gross_price] = 'Znacznik rodzaju ceny musi być podany jako boolean'
58
63
  end
59
- unless [true, false].include?(@invoice.paid)
60
- @errors[:paid] = 'Znacznik opłacenia faktury musi być podany jako boolean'
61
- end
64
+ @errors[:paid] = 'Znacznik opłacenia faktury musi być podany jako boolean' unless [true,
65
+ false].include?(@invoice.paid)
62
66
  unless [true, false].include?(@invoice.proforma)
63
67
  @errors[:proforma] = 'Znacznik faktury pro-forma musi być podany jako boolean'
64
68
  end
65
69
  unless [true, false].include?(@invoice.foreign_buyer)
66
70
  @errors[:foreign_buyer] = 'Znacznik zagranicznego nabywcy musi być podany jako boolean'
67
71
  end
68
- unless [true, false].include?(@invoice.reverse_charge)
69
- @errors[:reverse_charge] = 'Znacznik odwrotnego obciążenia VAT musi być podany jako boolean'
70
- end
72
+ return if [true, false].include?(@invoice.reverse_charge)
73
+
74
+ @errors[:reverse_charge] = 'Znacznik odwrotnego obciążenia VAT musi być podany jako boolean'
71
75
  end
72
76
 
73
77
  def check_dates
@@ -78,7 +82,7 @@ module PolishInvoicer
78
82
 
79
83
  def check_price
80
84
  if @invoice.price.is_a?(Numeric)
81
- @errors[:price] = 'Cena musi być liczbą dodatnią' unless @invoice.price > 0
85
+ @errors[:price] = 'Cena musi być liczbą dodatnią' unless @invoice.price.positive?
82
86
  else
83
87
  @errors[:price] = 'Cena musi być liczbą'
84
88
  end
@@ -90,7 +94,10 @@ module PolishInvoicer
90
94
 
91
95
  if @invoice.price_paid.is_a?(Numeric)
92
96
  @errors[:price_paid] = 'Kwota zapłacona musi być liczbą dodatnią' unless @invoice.price_paid >= 0
93
- @errors[:price_paid] = 'Kwota zapłacona musi być mniejsza lub równa cenie' unless @invoice.price_paid <= @invoice.price
97
+ unless @invoice.price_paid <= @invoice.price
98
+ @errors[:price_paid] =
99
+ 'Kwota zapłacona musi być mniejsza lub równa cenie'
100
+ end
94
101
  else
95
102
  @errors[:price_paid] = 'Kwota zapłacona musi być liczbą'
96
103
  end
@@ -109,6 +116,7 @@ module PolishInvoicer
109
116
  def check_proforma
110
117
  return unless @invoice.proforma
111
118
  return unless @invoice.paid
119
+
112
120
  @errors[:paid] = 'Proforma nie może być opłacona'
113
121
  end
114
122
 
@@ -116,18 +124,20 @@ module PolishInvoicer
116
124
  return if @errors[:create_date]
117
125
  return if @errors[:payment_date]
118
126
  return if @invoice.create_date <= @invoice.payment_date
127
+
119
128
  @errors[:payment_date] = 'Termin płatności nie może być wcześniejszy niż data wystawienia'
120
129
  end
121
130
 
122
131
  def check_currency
123
132
  return if @errors[:currency]
124
- return if %w[PLN EUR USD GBP].include?(@invoice.currency)
133
+ return if %w[PLN EUR USD GBP CHF CZK].include?(@invoice.currency)
134
+
125
135
  @errors[:currency] = 'Nieznana waluta'
126
136
  end
127
137
 
128
138
  def check_lang
129
139
  return if blank?(@invoice.lang)
130
- return if %w[pl pl_en en].include?(@invoice.lang)
140
+ return if %w[pl pl_en en es].include?(@invoice.lang)
131
141
 
132
142
  @errors[:lang] = 'Nieznany język'
133
143
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PolishInvoicer
2
4
  class Vat
3
5
  def self.rates
@@ -6,6 +8,7 @@ module PolishInvoicer
6
8
 
7
9
  def self.valid?(rate)
8
10
  return true if zw?(rate)
11
+
9
12
  rates.include?(rate)
10
13
  end
11
14
 
@@ -16,6 +19,7 @@ module PolishInvoicer
16
19
 
17
20
  def self.to_s(rate)
18
21
  return 'zw.' if zw?(rate)
22
+
19
23
  "#{rate}%"
20
24
  end
21
25
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PolishInvoicer
2
- VERSION = '0.0.26'.freeze
4
+ VERSION = '0.0.29'
3
5
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PolishInvoicer
2
4
  class Writer
3
- attr_accessor :invoice
4
- attr_accessor :logger, :wkhtmltopdf_path, :wkhtmltopdf_command
5
+ attr_accessor :invoice, :logger, :wkhtmltopdf_path, :wkhtmltopdf_command
5
6
 
6
7
  def initialize(invoice)
7
8
  @invoice = invoice
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'date'
2
4
  require 'pathname'
3
5
 
@@ -1,4 +1,7 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ require 'English'
4
+ lib = File.expand_path('lib', __dir__)
2
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
6
  require 'polish_invoicer/version'
4
7
 
@@ -12,16 +15,18 @@ Gem::Specification.new do |spec|
12
15
  spec.homepage = ''
13
16
  spec.license = 'MIT'
14
17
 
15
- spec.files = `git ls-files`.split($/)
18
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
16
19
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
20
  spec.require_paths = ['lib']
21
+ spec.metadata['rubygems_mfa_required'] = 'true'
19
22
 
20
23
  spec.add_development_dependency 'bundler'
21
- spec.add_development_dependency 'rake'
22
24
  spec.add_development_dependency 'minitest'
23
- spec.add_development_dependency 'simplecov'
25
+ spec.add_development_dependency 'rake'
24
26
  spec.add_development_dependency 'rubocop'
27
+ spec.add_development_dependency 'rubocop-minitest'
28
+ spec.add_development_dependency 'rubocop-rake'
29
+ spec.add_development_dependency 'simplecov'
25
30
 
26
31
  spec.add_dependency 'slim2pdf'
27
32
  end
data/test/invoice_test.rb CHANGED
@@ -1,14 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'test_helper'
2
4
 
3
5
  module PolishInvoicer
4
6
  class InvoiceTest < Minitest::Test
5
7
  def test_init
6
8
  i = Invoice.new
7
- assert i.is_a?(Invoice)
9
+
10
+ assert_kind_of Invoice, i
8
11
  end
9
12
 
10
13
  def test_set_available_param
11
14
  i = Invoice.new(number: '1/2014')
15
+
12
16
  assert_equal '1/2014', i.number
13
17
  end
14
18
 
@@ -18,86 +22,111 @@ module PolishInvoicer
18
22
 
19
23
  def test_validation_delegation
20
24
  i = Invoice.new
21
- assert_equal false, i.valid?
25
+
26
+ refute_predicate i, :valid?
22
27
  assert i.errors[:number]
23
28
  i.number = '1/2014'
24
29
  i.valid?
30
+
25
31
  assert_nil i.errors[:number]
26
32
  end
27
33
 
28
34
  def test_net_value
29
35
  i = Invoice.new(price: 123.45, gross_price: false)
30
36
  i.vat = 23
37
+
31
38
  assert_in_delta 123.45, i.net_value, 0.01
32
39
 
33
40
  i.gross_price = true
34
41
  i.vat = 23
42
+
35
43
  assert_in_delta 100.37, i.net_value, 0.01
36
44
  i.vat = 5.5
45
+
37
46
  assert_in_delta 117.01, i.net_value, 0.01
38
47
  i.vat = 0
48
+
39
49
  assert_in_delta 123.45, i.net_value, 0.01
40
50
  i.vat = -1
51
+
41
52
  assert_in_delta 123.45, i.net_value, 0.01
42
53
 
43
54
  i.gross_price = false
44
55
  i.vat = 0
56
+
45
57
  assert_in_delta 123.45, i.net_value, 0.01
46
58
  i.vat = -1
59
+
47
60
  assert_in_delta 123.45, i.net_value, 0.01
48
61
  i.vat = 5.5
62
+
49
63
  assert_in_delta 123.45, i.net_value, 0.01
50
64
  end
51
65
 
52
66
  def test_vat_value
53
67
  i = Invoice.new(price: 123.45, gross_price: false)
54
68
  i.vat = 23
69
+
55
70
  assert_in_delta 28.39, i.vat_value, 0.01
56
71
  i.vat = 5.5
72
+
57
73
  assert_in_delta 6.79, i.vat_value, 0.01
58
74
 
59
75
  i.gross_price = true
60
76
  i.vat = 23
77
+
61
78
  assert_in_delta 23.08, i.vat_value, 0.01
62
79
  i.vat = 5.5
80
+
63
81
  assert_in_delta 6.44, i.vat_value, 0.01
64
82
  i.vat = 0
65
- assert_equal 0.00, i.vat_value
83
+
84
+ assert_in_delta(0.00, i.vat_value)
66
85
  i.vat = -1
67
- assert_equal 0.00, i.vat_value
86
+
87
+ assert_in_delta(0.00, i.vat_value)
68
88
  end
69
89
 
70
90
  def test_gross_value
71
91
  i = Invoice.new(price: 123.45, gross_price: false)
72
92
  i.vat = 23
93
+
73
94
  assert_in_delta 151.84, i.gross_value, 0.01
74
95
 
75
96
  i.gross_price = true
76
97
  i.vat = 23
98
+
77
99
  assert_in_delta 123.45, i.gross_value, 0.01
78
100
  i.vat = 5.5
101
+
79
102
  assert_in_delta 123.45, i.gross_value, 0.01
80
103
  i.vat = 0
104
+
81
105
  assert_in_delta 123.45, i.gross_value, 0.01
82
106
  i.vat = -1
107
+
83
108
  assert_in_delta 123.45, i.gross_value, 0.01
84
109
 
85
110
  i.gross_price = false
86
111
  i.vat = 5.5
112
+
87
113
  assert_in_delta 130.24, i.gross_value, 0.01
88
114
  i.vat = 0
115
+
89
116
  assert_in_delta 123.45, i.gross_value, 0.01
90
117
  i.vat = -1
118
+
91
119
  assert_in_delta 123.45, i.gross_value, 0.01
92
120
  end
93
121
 
94
122
  def test_defaults
95
123
  i = Invoice.new
124
+
96
125
  assert i.gross_price
97
- assert 23, i.vat
98
- assert 'Przelew', i.payment_type
126
+ assert_equal 23, i.vat
127
+ assert_equal 'Przelew', i.payment_type
99
128
  assert i.paid
100
- assert_equal false, i.proforma
129
+ refute i.proforma
101
130
  end
102
131
 
103
132
  def test_raise_when_save_to_html_and_not_valid
@@ -114,7 +143,8 @@ module PolishInvoicer
114
143
  i = create_valid_invoice
115
144
  path = '/tmp/test.html'
116
145
  i.save_to_html(path)
117
- assert File.exist?(path)
146
+
147
+ assert_path_exists path
118
148
  File.unlink(path)
119
149
  end
120
150
 
@@ -122,15 +152,17 @@ module PolishInvoicer
122
152
  i = create_valid_invoice
123
153
  path = '/tmp/test.pdf'
124
154
  i.save_to_pdf(path)
125
- assert File.exist?(path)
155
+
156
+ assert_path_exists path
126
157
  File.unlink(path)
127
158
  end
128
159
 
129
160
  def test_to_hash
130
161
  i = Invoice.new(price: 123.45, gross_price: false)
131
162
  h = i.to_hash
163
+
132
164
  assert h[:paid] # default
133
- assert_equal false, h[:gross_price] # params
165
+ refute h[:gross_price] # params
134
166
  assert_equal '123,45', h[:net_value] # presenter
135
167
  end
136
168
 
@@ -159,6 +191,7 @@ module PolishInvoicer
159
191
 
160
192
  def test_gross_and_net_price
161
193
  gross_invoice = Invoice.new(price: 123, price_paid: 60, paid: false)
194
+
162
195
  assert_equal 100, gross_invoice.net_value
163
196
  assert_equal 23, gross_invoice.vat_value
164
197
  assert_equal 123, gross_invoice.gross_value
@@ -167,6 +200,7 @@ module PolishInvoicer
167
200
  assert_equal 63, gross_invoice.to_pay_value
168
201
 
169
202
  net_invoice = Invoice.new(price: 100, price_paid: 60, paid: false, gross_price: false)
203
+
170
204
  assert_equal 100, net_invoice.net_value
171
205
  assert_equal 23, net_invoice.vat_value
172
206
  assert_equal 123, net_invoice.gross_value
@@ -177,6 +211,7 @@ module PolishInvoicer
177
211
 
178
212
  def test_reverse_charge
179
213
  gross_invoice = Invoice.new(price: 123, price_paid: 60, paid: false, reverse_charge: true)
214
+
180
215
  assert_equal 100, gross_invoice.net_value
181
216
  assert_equal 23, gross_invoice.vat_value
182
217
  assert_equal 123, gross_invoice.gross_value
@@ -185,6 +220,7 @@ module PolishInvoicer
185
220
  assert_equal 40, gross_invoice.to_pay_value
186
221
 
187
222
  net_invoice = Invoice.new(price: 100, price_paid: 60, paid: false, gross_price: false, reverse_charge: true)
223
+
188
224
  assert_equal 100, net_invoice.net_value
189
225
  assert_equal 23, net_invoice.vat_value
190
226
  assert_equal 123, net_invoice.gross_value
@@ -195,34 +231,47 @@ module PolishInvoicer
195
231
 
196
232
  def test_template_lang
197
233
  i = Invoice.new
234
+
198
235
  assert_equal 'pl', i.template_lang
199
236
  i.foreign_buyer = true
237
+
200
238
  assert_equal 'pl_en', i.template_lang
201
239
  i.lang = 'en'
240
+
202
241
  assert_equal 'en', i.template_lang
203
242
  end
204
243
 
205
244
  def test_template_file
206
245
  i = Invoice.new(proforma: true)
246
+
207
247
  assert_equal 'proforma-pl.slim', i.template_file
208
248
  i.foreign_buyer = true
249
+
209
250
  assert_equal 'proforma-pl_en.slim', i.template_file
210
251
  i.lang = 'en'
252
+
211
253
  assert_equal 'proforma-en.slim', i.template_file
212
254
  i.lang = 'pl'
255
+
213
256
  assert_equal 'proforma-pl.slim', i.template_file
214
257
  i.lang = 'pl_en'
258
+
215
259
  assert_equal 'proforma-pl_en.slim', i.template_file
216
260
 
217
261
  i = Invoice.new
262
+
218
263
  assert_equal 'invoice-pl.slim', i.template_file
219
264
  i.foreign_buyer = true
265
+
220
266
  assert_equal 'invoice-pl_en.slim', i.template_file
221
267
  i.lang = 'en'
268
+
222
269
  assert_equal 'invoice-en.slim', i.template_file
223
270
  i.lang = 'pl'
271
+
224
272
  assert_equal 'invoice-pl.slim', i.template_file
225
273
  i.lang = 'pl_en'
274
+
226
275
  assert_equal 'invoice-pl_en.slim', i.template_file
227
276
  end
228
277
  end