merchant_e_solutions 0.4.2 → 0.4.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 711eff0d6ae2129abe6b4ca1870bf1e41e282c55
4
- data.tar.gz: 19c5204ecbd1dd9f4559151c552c5f724ef16f6f
3
+ metadata.gz: 2abad0c5d536f2fa6e9ff7368afdee52174dae7c
4
+ data.tar.gz: 14028295e458de893515dcf3f2533734c25b1bc9
5
5
  SHA512:
6
- metadata.gz: 6598c2a6dcb1601be52e6bdcb279c1aed463b6e6a9e96bc6ea4b784e47983ade0b02fe3107e48041dbe85565491e0919479af7a71dae4ea400692e43229f1f66
7
- data.tar.gz: aad781319bb3f9f950e4099519f45c5f1b4f819acdabaf0041568c2d909e58f4ed04911fe0fa5281faa06a870b5711d794992401fb2b2903e217cf08e05735b8
6
+ metadata.gz: a3ff838a52c321221ceb1b2abf3dd396417243abff6d61e9cff2606c826141d4fbfabbc99e72b79453ca92f836cb43925aee546204c48ac3af52b86b53f16588
7
+ data.tar.gz: 621921e56c491b918869419beaf46e4d65d24ba113ba5e4e5e44dab9cd281796bad9d6dcd5f7955fd6b3a3ca48c219c47c9aac34ab07f4c1d0440da191ea7185
data/README.md CHANGED
@@ -81,3 +81,15 @@ unchanged from a record thusly:
81
81
  3. Commit your changes (`git commit -am 'Add some feature'`)
82
82
  4. Push to the branch (`git push origin my-new-feature`)
83
83
  5. Create new Pull Request
84
+
85
+ ### Need a different report?
86
+ Adding new reports is easy! Each report consists of two classes, the report and the report record:
87
+
88
+ Creating a report requires the ```#report_type``` and ```#report_id``` methods to be defined as the params you would pass into the API. Additional default parameters can be specified in ```#report_specific_params```. ```includeTridentTranId```, ```includePurchaseId```, ```includeClientRefNum``` are turned on by default right now, because they would change the order of the columns in some reports. The report class must also specify its ```#record class```. If a report has both a summary and detail version, they should be defined as different classes. The [BatchDetailReport](https://github.com/harrystech/merchant_e_solutions/blob/master/lib/merchant_e_solutions/batch_detail_report.rb) is a good example to reference.
89
+
90
+ For each row in a report available in the web view there is an instance of a report's report record. Report records specify their attributes, and the order in which the attributes are pulled off of the report CSV. Report record classes also a good place to add co convenience methods. [DetailRecord](https://github.com/harrystech/merchant_e_solutions/blob/master/lib/merchant_e_solutions/detail_record.rb) is a good example to reference.
91
+
92
+ ###TODO
93
+ 1. Instances of reports can write out CSVs
94
+ 2. Instances of reports can be generated by passing in CSVs(instead of having to pull CSVs directly from the API)
95
+ 3. Report records pull their attributes from CSV column names instead of column orders
@@ -8,21 +8,21 @@ module MerchantESolutions
8
8
  :entry_mode, :transaction_amount, :trident_transaction_id, :client_reference_number
9
9
 
10
10
  def initialize(row)
11
- @organization_id = row[0]
12
- @organization_name = row[1]
13
- @term_number = row[2]
14
- @batch_number = row[3]
15
- @batch_date = parse_date(row[4])
16
- @transaction_date = parse_date(row[5])
17
- @card_code = row[6]
18
- @card_number = row[7]
19
- @reference_number = row[8]
20
- @purchase_id = row[9]
21
- @auth_code = row[10]
22
- @entry_mode = row[11]
23
- @transaction_amount = row[12]
24
- @trident_transaction_id = row[13]
25
- @client_reference_number = row[14]
11
+ @organization_id = row["Merchant Id"]
12
+ @organization_name = row["DBA Name"]
13
+ @term_number = row["Term Num"]
14
+ @batch_number = row["Batch Num"]
15
+ @batch_date = parse_date(row["Batch Date"])
16
+ @transaction_date = parse_date(row["Tran Date"])
17
+ @card_code = row["Card Type"]
18
+ @card_number = row["Card Number"]
19
+ @reference_number = row["Reference"]
20
+ @purchase_id = row["Purchase Id"]
21
+ @auth_code = row["Auth Code"]
22
+ @entry_mode = row["Entry Mode"]
23
+ @transaction_amount = row["Tran Amount"]
24
+ @trident_transaction_id = row["Trident Tran Id"]
25
+ @client_reference_number = row["Client Ref Num"]
26
26
  end
27
27
 
28
28
  def reference_number(options={})
@@ -30,6 +30,11 @@ module MerchantESolutions
30
30
  cleaned_reference_number
31
31
  end
32
32
 
33
+ def purchase_id(options={})
34
+ return @purchase_id if options[:unchanged]
35
+ cleaned_purchase_id
36
+ end
37
+
33
38
  def credit_company
34
39
  {
35
40
  "AM" => "American Express",
@@ -63,5 +68,9 @@ module MerchantESolutions
63
68
  @reference_number
64
69
  end
65
70
  end
71
+
72
+ def cleaned_purchase_id
73
+ @purchase_id.strip
74
+ end
66
75
  end
67
76
  end
@@ -1,3 +1,3 @@
1
1
  module MerchantESolutions
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3"
3
3
  end
@@ -1,11 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe MerchantESolutions::DetailRecord do
4
+ let(:csv_header) { ["Merchant Id","DBA Name","Term Num","Batch Num","Batch Date","Tran Date","Card Type","Card Number","Reference","Purchase Id","Auth Code","Entry Mode","Tran Amount","Trident Tran Id","Client Ref Num"] }
5
+
4
6
  describe "#initialize" do
5
7
  subject { MerchantESolutions::DetailRecord.new(csv_row) }
6
8
 
7
9
  # "Merchant Id","DBA Name","Term Num","Batch Num","Batch Date","Tran Date","Card Type","Card Number","Reference","Purchase Id","Auth Code","Entry Mode","Tran Amount","Trident Tran Id","Client Ref Num"
8
- let(:csv_row) { [42, "Hamazon", 1, 220, "10/07/2013", "10/06/2013", "AM", "000000xxxxxx1234", "'0000213", "AAAAAAAAAAA0", "100000", "KEYED", 7.09, "T.T.ID", "clientRefNumber"] }
10
+
11
+ let(:csv_row) { CSV::Row.new(csv_header, [42, "Hamazon", 1, 220, "10/07/2013", "10/06/2013", "AM", "000000xxxxxx1234", "'0000213", "AAAAAAAAAAA0", "100000", "KEYED", 7.09, "T.T.ID", "clientRefNumber"]) }
9
12
 
10
13
  its(:organization_id) { should == 42 }
11
14
  its(:organization_name) { should == "Hamazon" }
@@ -35,7 +38,8 @@ describe MerchantESolutions::DetailRecord do
35
38
 
36
39
  describe "#reference_number" do
37
40
  let(:reference_number) { "'0000213" }
38
- let(:record) { MerchantESolutions::DetailRecord.new([nil, nil, nil, nil, nil, nil, nil, nil, reference_number])}
41
+ let(:csv_row) { CSV::Row.new(csv_header, [nil, nil, nil, nil, nil, nil, nil, nil, reference_number]) }
42
+ let(:record) { MerchantESolutions::DetailRecord.new(csv_row)}
39
43
 
40
44
  context "when no arguments are given" do
41
45
  it "removes the pre-pended apostrophe from the reference number" do
@@ -59,8 +63,36 @@ describe MerchantESolutions::DetailRecord do
59
63
  end
60
64
  end
61
65
 
66
+ describe "#purchase_id" do
67
+ let(:purchase_id) { " AAA0 " }
68
+ let(:csv_row) { CSV::Row.new(csv_header, [nil, nil, nil, nil, nil, nil, nil, nil, nil, purchase_id]) }
69
+ let(:record) { MerchantESolutions::DetailRecord.new(csv_row)}
70
+
71
+ context "when no arguments are given" do
72
+ it "strips whitespace from the purchase id" do
73
+ record.purchase_id.should == "AAA0"
74
+ end
75
+ end
76
+
77
+ context "when the :unchanged options is set to true" do
78
+ it "returns the purchase id verbatim, whitespace intact" do
79
+ record.purchase_id(:unchanged => true).should == purchase_id
80
+ end
81
+ end
82
+
83
+ context "when the purchase id doesn't contains any spaces" do
84
+ let(:purchase_id) { "AAA0" }
85
+
86
+ it "returns the purchase id verbatim, regardless of the :unchanged argument" do
87
+ record.purchase_id.should == "AAA0"
88
+ record.purchase_id(:unchanged => true).should == "AAA0"
89
+ end
90
+ end
91
+ end
92
+
62
93
  describe "credit cards" do
63
- subject { MerchantESolutions::DetailRecord.new([nil, nil, nil, nil, nil, nil, card_code]) }
94
+ let(:csv_row) { CSV::Row.new(csv_header, [nil, nil, nil, nil, nil, nil, card_code]) }
95
+ subject { MerchantESolutions::DetailRecord.new(csv_row) }
64
96
 
65
97
  context "when the code is AM" do
66
98
  let(:card_code) { "AM" }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: merchant_e_solutions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Ellis
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-21 00:00:00.000000000 Z
12
+ date: 2014-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -137,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  version: '0'
138
138
  requirements: []
139
139
  rubyforge_project:
140
- rubygems_version: 2.0.3
140
+ rubygems_version: 2.0.14
141
141
  signing_key:
142
142
  specification_version: 4
143
143
  summary: Wrapper for the Settlement Report API
@@ -161,3 +161,4 @@ test_files:
161
161
  - spec/lib/merchant_e_solutions/summary_record_spec.rb
162
162
  - spec/lib/merchant_e_solutions_spec.rb
163
163
  - spec/spec_helper.rb
164
+ has_rdoc: