merchant_e_solutions 0.4.2 → 0.4.3

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
  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: