total_in 0.5.0

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.
Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.rspec +3 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +9 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +22 -0
  8. data/README.md +21 -0
  9. data/Rakefile +1 -0
  10. data/lib/total_in/attribute_methods.rb +62 -0
  11. data/lib/total_in/contexts.rb +54 -0
  12. data/lib/total_in/document.rb +114 -0
  13. data/lib/total_in/line_handlers.rb +35 -0
  14. data/lib/total_in/line_parser.rb +42 -0
  15. data/lib/total_in/line_parsers.rb +80 -0
  16. data/lib/total_in/line_processors.rb +138 -0
  17. data/lib/total_in/parser.rb +48 -0
  18. data/lib/total_in/string_helpers.rb +10 -0
  19. data/lib/total_in/typecaster.rb +18 -0
  20. data/lib/total_in/version.rb +3 -0
  21. data/lib/total_in.rb +8 -0
  22. data/spec/fixtures/total_in_full.txt +61 -0
  23. data/spec/full_file_parse_spec.rb +501 -0
  24. data/spec/spec_helper.rb +20 -0
  25. data/spec/support/shared_examples_for_values_line_parsers.rb +15 -0
  26. data/spec/total_in/line_parsers/account_end_spec.rb +23 -0
  27. data/spec/total_in/line_parsers/account_start_spec.rb +24 -0
  28. data/spec/total_in/line_parsers/addresses_spec.rb +10 -0
  29. data/spec/total_in/line_parsers/deduction_start_spec.rb +50 -0
  30. data/spec/total_in/line_parsers/document_end_spec.rb +15 -0
  31. data/spec/total_in/line_parsers/document_start_spec.rb +32 -0
  32. data/spec/total_in/line_parsers/international_spec.rb +32 -0
  33. data/spec/total_in/line_parsers/locality_spec.rb +23 -0
  34. data/spec/total_in/line_parsers/messages_spec.rb +10 -0
  35. data/spec/total_in/line_parsers/names_spec.rb +11 -0
  36. data/spec/total_in/line_parsers/payment_start_spec.rb +45 -0
  37. data/spec/total_in/line_parsers/reference_numbers_spec.rb +11 -0
  38. data/spec/total_in/line_parsers/sender_account_spec.rb +23 -0
  39. data/spec/total_in/line_processors/account_end_spec.rb +35 -0
  40. data/spec/total_in/line_processors/account_start_spec.rb +50 -0
  41. data/spec/total_in/line_processors/addresses_spec.rb +44 -0
  42. data/spec/total_in/line_processors/deduction_start_spec.rb +54 -0
  43. data/spec/total_in/line_processors/document_end_spec.rb +32 -0
  44. data/spec/total_in/line_processors/document_start_spec.rb +29 -0
  45. data/spec/total_in/line_processors/international_spec.rb +46 -0
  46. data/spec/total_in/line_processors/locality_spec.rb +46 -0
  47. data/spec/total_in/line_processors/messages_spec.rb +25 -0
  48. data/spec/total_in/line_processors/names_spec.rb +45 -0
  49. data/spec/total_in/line_processors/payment_start_spec.rb +53 -0
  50. data/spec/total_in/line_processors/reference_numbers_spec.rb +24 -0
  51. data/spec/total_in/line_processors/sender_account_spec.rb +46 -0
  52. data/spec/total_in_spec.rb +13 -0
  53. data/total-in.gemspec +25 -0
  54. metadata +169 -0
@@ -0,0 +1,53 @@
1
+ require "total_in/contexts"
2
+ require "total_in/line_processors"
3
+
4
+ module TotalIn
5
+ module LineProcessors
6
+ RSpec.describe "PaymentStart" do
7
+ let :line do
8
+ double "Line", attributes: {}, reference_number: "1234567890"
9
+ end
10
+
11
+ let :account do
12
+ Document::Account.new
13
+ end
14
+
15
+ let! :contexts do
16
+ Contexts.new [Document.new, account, Document::Payment.new]
17
+ end
18
+
19
+ it "adds a new payment to the nearest account" do
20
+ payment = Document::Payment.new
21
+ allow(Document::Payment).to receive(:new) { payment }
22
+
23
+ PaymentStart.call line, contexts
24
+
25
+ expect(account.payments).to include payment
26
+ end
27
+
28
+ it "sets the payment as the current context" do
29
+ payment = Document::Payment.new
30
+ allow(Document::Payment).to receive(:new) { payment }
31
+
32
+ new_contexts = PaymentStart.call line, contexts
33
+
34
+ expect(new_contexts.current).to be payment
35
+ end
36
+
37
+ it "assigns the line attributes to the account" do
38
+ payment = Document::Payment.new
39
+ allow(Document::Payment).to receive(:new) { payment }
40
+
41
+ PaymentStart.call line, contexts
42
+
43
+ expect(Document::Payment).to have_received(:new).with(line.attributes)
44
+ end
45
+
46
+ it "adds the line reference number to the payment" do
47
+ new_contexts = PaymentStart.call line, contexts
48
+
49
+ expect(new_contexts.current.reference_numbers).to include "1234567890"
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,24 @@
1
+ require "total_in/contexts"
2
+ require "total_in/line_processors"
3
+
4
+ module TotalIn
5
+ module LineProcessors
6
+ RSpec.describe "ReferenceNumbers" do
7
+ let :line do
8
+ double "Line", values: ["one", "two"]
9
+ end
10
+
11
+ let :current_context do
12
+ double "SomeContext", reference_numbers: ["original"]
13
+ end
14
+
15
+ it "adds the line values to the current context's reference_numbers" do
16
+ contexts = Contexts.new current_context
17
+
18
+ ReferenceNumbers.call line, contexts
19
+
20
+ expect(contexts.current.reference_numbers).to eq ["original", "one", "two"]
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,46 @@
1
+ require "total_in/contexts"
2
+ require "total_in/line_processors"
3
+
4
+ module TotalIn
5
+ module LineProcessors
6
+ RSpec.describe "SenderAccount" do
7
+ let :line do
8
+ double "Line", attributes: {}
9
+ end
10
+
11
+ describe "when the current context is a Document::SenderAccount" do
12
+ it "adds the line values to the sender as name" do
13
+ sender_account = Document::SenderAccount.new
14
+ contexts = Contexts.new sender_account
15
+ allow(sender_account).to receive(:assign_attributes)
16
+
17
+ SenderAccount.call line, contexts
18
+
19
+ expect(sender_account).to have_received(:assign_attributes).with line.attributes
20
+ end
21
+ end
22
+
23
+ describe "when the current context is something else" do
24
+ let! :sender_account do
25
+ Document::SenderAccount.new
26
+ end
27
+
28
+ before do
29
+ allow(Document::SenderAccount).to receive(:new) { sender_account }
30
+ end
31
+
32
+ it "adds a new Document::SenderAccount to the nearest transaction and appends it to the contexts" do
33
+ transaction = Document::Transaction.new
34
+ contexts = Contexts.new transaction
35
+ allow(sender_account).to receive(:assign_attributes)
36
+
37
+ new_contexts = SenderAccount.call line, contexts
38
+
39
+ expect(transaction.sender_account).to eq sender_account
40
+ expect(new_contexts.current).to be sender_account
41
+ expect(sender_account).to have_received(:assign_attributes).with line.attributes
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,13 @@
1
+ require "total_in"
2
+
3
+ RSpec.describe TotalIn do
4
+ describe "#parse" do
5
+ it "returns the parser results" do
6
+ text = "some total-in text"
7
+ parser = double "Parser", result: "result"
8
+ expect(TotalIn::Parser).to receive(:new).with(text) { parser }
9
+
10
+ expect(TotalIn.parse(text)).to eq "result"
11
+ end
12
+ end
13
+ end
data/total-in.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "total_in/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "total_in"
8
+ spec.version = TotalIn::VERSION
9
+ spec.authors = ["Joel Junström"]
10
+ spec.email = ["joel.junstrom@oktavilla.se"]
11
+ spec.summary = %q{Parses Nordea Total-IN and Total-IN Basic files}
12
+ spec.homepage = "https://github.com/Oktavilla/total-in-ruby"
13
+ spec.license = "MIT"
14
+
15
+ spec.required_ruby_version = "~> 2.0"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0")
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_development_dependency "bundler", "~> 1.5"
23
+ spec.add_development_dependency "rake"
24
+ spec.add_development_dependency "rspec"
25
+ end
metadata ADDED
@@ -0,0 +1,169 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: total_in
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Joel Junström
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description:
56
+ email:
57
+ - joel.junstrom@oktavilla.se
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - ".ruby-version"
65
+ - ".travis.yml"
66
+ - Gemfile
67
+ - LICENSE
68
+ - README.md
69
+ - Rakefile
70
+ - lib/total_in.rb
71
+ - lib/total_in/attribute_methods.rb
72
+ - lib/total_in/contexts.rb
73
+ - lib/total_in/document.rb
74
+ - lib/total_in/line_handlers.rb
75
+ - lib/total_in/line_parser.rb
76
+ - lib/total_in/line_parsers.rb
77
+ - lib/total_in/line_processors.rb
78
+ - lib/total_in/parser.rb
79
+ - lib/total_in/string_helpers.rb
80
+ - lib/total_in/typecaster.rb
81
+ - lib/total_in/version.rb
82
+ - spec/fixtures/total_in_full.txt
83
+ - spec/full_file_parse_spec.rb
84
+ - spec/spec_helper.rb
85
+ - spec/support/shared_examples_for_values_line_parsers.rb
86
+ - spec/total_in/line_parsers/account_end_spec.rb
87
+ - spec/total_in/line_parsers/account_start_spec.rb
88
+ - spec/total_in/line_parsers/addresses_spec.rb
89
+ - spec/total_in/line_parsers/deduction_start_spec.rb
90
+ - spec/total_in/line_parsers/document_end_spec.rb
91
+ - spec/total_in/line_parsers/document_start_spec.rb
92
+ - spec/total_in/line_parsers/international_spec.rb
93
+ - spec/total_in/line_parsers/locality_spec.rb
94
+ - spec/total_in/line_parsers/messages_spec.rb
95
+ - spec/total_in/line_parsers/names_spec.rb
96
+ - spec/total_in/line_parsers/payment_start_spec.rb
97
+ - spec/total_in/line_parsers/reference_numbers_spec.rb
98
+ - spec/total_in/line_parsers/sender_account_spec.rb
99
+ - spec/total_in/line_processors/account_end_spec.rb
100
+ - spec/total_in/line_processors/account_start_spec.rb
101
+ - spec/total_in/line_processors/addresses_spec.rb
102
+ - spec/total_in/line_processors/deduction_start_spec.rb
103
+ - spec/total_in/line_processors/document_end_spec.rb
104
+ - spec/total_in/line_processors/document_start_spec.rb
105
+ - spec/total_in/line_processors/international_spec.rb
106
+ - spec/total_in/line_processors/locality_spec.rb
107
+ - spec/total_in/line_processors/messages_spec.rb
108
+ - spec/total_in/line_processors/names_spec.rb
109
+ - spec/total_in/line_processors/payment_start_spec.rb
110
+ - spec/total_in/line_processors/reference_numbers_spec.rb
111
+ - spec/total_in/line_processors/sender_account_spec.rb
112
+ - spec/total_in_spec.rb
113
+ - total-in.gemspec
114
+ homepage: https://github.com/Oktavilla/total-in-ruby
115
+ licenses:
116
+ - MIT
117
+ metadata: {}
118
+ post_install_message:
119
+ rdoc_options: []
120
+ require_paths:
121
+ - lib
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: '2.0'
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ requirements: []
133
+ rubyforge_project:
134
+ rubygems_version: 2.2.2
135
+ signing_key:
136
+ specification_version: 4
137
+ summary: Parses Nordea Total-IN and Total-IN Basic files
138
+ test_files:
139
+ - spec/fixtures/total_in_full.txt
140
+ - spec/full_file_parse_spec.rb
141
+ - spec/spec_helper.rb
142
+ - spec/support/shared_examples_for_values_line_parsers.rb
143
+ - spec/total_in/line_parsers/account_end_spec.rb
144
+ - spec/total_in/line_parsers/account_start_spec.rb
145
+ - spec/total_in/line_parsers/addresses_spec.rb
146
+ - spec/total_in/line_parsers/deduction_start_spec.rb
147
+ - spec/total_in/line_parsers/document_end_spec.rb
148
+ - spec/total_in/line_parsers/document_start_spec.rb
149
+ - spec/total_in/line_parsers/international_spec.rb
150
+ - spec/total_in/line_parsers/locality_spec.rb
151
+ - spec/total_in/line_parsers/messages_spec.rb
152
+ - spec/total_in/line_parsers/names_spec.rb
153
+ - spec/total_in/line_parsers/payment_start_spec.rb
154
+ - spec/total_in/line_parsers/reference_numbers_spec.rb
155
+ - spec/total_in/line_parsers/sender_account_spec.rb
156
+ - spec/total_in/line_processors/account_end_spec.rb
157
+ - spec/total_in/line_processors/account_start_spec.rb
158
+ - spec/total_in/line_processors/addresses_spec.rb
159
+ - spec/total_in/line_processors/deduction_start_spec.rb
160
+ - spec/total_in/line_processors/document_end_spec.rb
161
+ - spec/total_in/line_processors/document_start_spec.rb
162
+ - spec/total_in/line_processors/international_spec.rb
163
+ - spec/total_in/line_processors/locality_spec.rb
164
+ - spec/total_in/line_processors/messages_spec.rb
165
+ - spec/total_in/line_processors/names_spec.rb
166
+ - spec/total_in/line_processors/payment_start_spec.rb
167
+ - spec/total_in/line_processors/reference_numbers_spec.rb
168
+ - spec/total_in/line_processors/sender_account_spec.rb
169
+ - spec/total_in_spec.rb