pagarme 2.0.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +3 -2
- data/README.md +285 -4
- data/Rakefile +16 -19
- data/lib/pagarme.rb +17 -32
- data/lib/pagarme/core_ext.rb +9 -0
- data/lib/pagarme/errors.rb +39 -25
- data/lib/pagarme/model.rb +40 -45
- data/lib/pagarme/nested_model.rb +56 -0
- data/lib/pagarme/object.rb +133 -92
- data/lib/pagarme/request.rb +96 -46
- data/lib/pagarme/resources/address.rb +4 -0
- data/lib/pagarme/resources/antifraud_analysis.rb +4 -0
- data/lib/pagarme/resources/balance.rb +24 -0
- data/lib/pagarme/resources/balance_operation.rb +37 -0
- data/lib/pagarme/resources/bank_account.rb +4 -0
- data/lib/pagarme/resources/bulk_anticipation.rb +65 -0
- data/lib/pagarme/resources/card.rb +4 -0
- data/lib/pagarme/resources/company.rb +28 -0
- data/lib/pagarme/{customer.rb → resources/customer.rb} +0 -0
- data/lib/pagarme/resources/payable.rb +11 -0
- data/lib/pagarme/resources/phone.rb +4 -0
- data/lib/pagarme/{plan.rb → resources/plan.rb} +0 -2
- data/lib/pagarme/resources/postal_code.rb +15 -0
- data/lib/pagarme/resources/postback.rb +15 -0
- data/lib/pagarme/resources/recipient.rb +32 -0
- data/lib/pagarme/resources/split_rule.rb +4 -0
- data/lib/pagarme/resources/subscription.rb +43 -0
- data/lib/pagarme/resources/transaction.rb +41 -0
- data/lib/pagarme/{transfer.rb → resources/transfer.rb} +0 -3
- data/lib/pagarme/{phone.rb → resources/user.rb} +1 -1
- data/lib/pagarme/transaction_common.rb +39 -42
- data/lib/pagarme/version.rb +3 -0
- data/pagarme.gemspec +16 -13
- data/test/assertions.rb +195 -0
- data/test/fixtures.rb +222 -0
- data/test/pagarme/error_test.rb +13 -0
- data/test/pagarme/object_test.rb +19 -0
- data/test/pagarme/pagarme_test.rb +10 -0
- data/test/pagarme/resources/balance_test.rb +46 -0
- data/test/pagarme/resources/bank_account_test.rb +35 -0
- data/test/pagarme/resources/bulk_anticipation_test.rb +72 -0
- data/test/pagarme/resources/card_test.rb +22 -0
- data/test/pagarme/resources/payable_test.rb +30 -0
- data/test/pagarme/resources/plan_test.rb +57 -0
- data/test/pagarme/resources/postback_test.rb +18 -0
- data/test/pagarme/resources/recipient_test.rb +41 -0
- data/test/pagarme/resources/subscription_test.rb +100 -0
- data/test/pagarme/resources/transaction_test.rb +221 -0
- data/test/pagarme/resources/transfer_test.rb +23 -0
- data/test/pagarme/resources/zipcode_test.rb +15 -0
- data/test/test_helper.rb +52 -175
- metadata +102 -30
- data/lib/pagarme/address.rb +0 -4
- data/lib/pagarme/bank_account.rb +0 -9
- data/lib/pagarme/card.rb +0 -7
- data/lib/pagarme/subscription.rb +0 -43
- data/lib/pagarme/transaction.rb +0 -33
- data/lib/pagarme/util.rb +0 -78
- data/pagarme.rb +0 -12
- data/test/pagarme/bank_account.rb +0 -46
- data/test/pagarme/card.rb +0 -26
- data/test/pagarme/object.rb +0 -29
- data/test/pagarme/pagarme.rb +0 -10
- data/test/pagarme/plan.rb +0 -70
- data/test/pagarme/subscription.rb +0 -123
- data/test/pagarme/transaction.rb +0 -215
- data/test/pagarme/transfer.rb +0 -42
data/pagarme.gemspec
CHANGED
@@ -1,26 +1,29 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
lib = File.expand_path('../lib', __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'pagarme/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name =
|
7
|
-
spec.version =
|
8
|
-
spec.authors = [
|
9
|
-
spec.email = [
|
6
|
+
spec.name = 'pagarme'
|
7
|
+
spec.version = PagarMe::VERSION
|
8
|
+
spec.authors = ['Pedro Franceschi', 'Henrique Dubugras']
|
9
|
+
spec.email = ['pedrohfranceschi@gmail.com', 'henrique@pagar.me']
|
10
10
|
spec.description = %q{Pagar.me's ruby gem}
|
11
11
|
spec.summary = %q{Allows integration with Pagar.me}
|
12
|
-
spec.homepage =
|
12
|
+
spec.homepage = 'http://pagar.me/'
|
13
13
|
|
14
14
|
spec.files = `git ls-files`.split($/)
|
15
15
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
|
-
spec.require_paths = [
|
17
|
+
spec.require_paths = ['lib']
|
18
18
|
|
19
|
-
spec.add_development_dependency
|
20
|
-
spec.add_development_dependency
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
19
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
20
|
+
spec.add_development_dependency 'rake'
|
21
|
+
spec.add_development_dependency 'shoulda', '~> 3.4.0'
|
22
|
+
spec.add_development_dependency 'test-unit'
|
23
|
+
spec.add_development_dependency 'webmock'
|
24
|
+
spec.add_development_dependency 'vcr'
|
25
|
+
spec.add_development_dependency 'pry'
|
23
26
|
|
24
|
-
spec.add_dependency
|
25
|
-
spec.add_dependency
|
27
|
+
spec.add_dependency 'rest-client'
|
28
|
+
spec.add_dependency 'multi_json'
|
26
29
|
end
|
data/test/assertions.rb
ADDED
@@ -0,0 +1,195 @@
|
|
1
|
+
module Assertions
|
2
|
+
def assert_customer_response(customer)
|
3
|
+
assert customer.id
|
4
|
+
assert_equal customer.name, 'Jose da Silva'
|
5
|
+
assert_equal customer.document_number, '84931126235'
|
6
|
+
assert_equal customer.email, 'pagarmetestruby@mailinator.com'
|
7
|
+
assert_equal customer.gender, 'M'
|
8
|
+
assert_equal Date.parse(customer.born_at), Date.parse('1970-10-11')
|
9
|
+
end
|
10
|
+
|
11
|
+
def assert_subscription_successfully_paid(subscription, amount = 2000, installments = 1)
|
12
|
+
assert subscription.id
|
13
|
+
assert !subscription.plan
|
14
|
+
assert subscription.current_transaction.kind_of?(PagarMe::Transaction)
|
15
|
+
assert subscription.current_transaction.id
|
16
|
+
assert subscription.current_transaction.date_created
|
17
|
+
assert !subscription.current_transaction.refuse_reason
|
18
|
+
assert !subscription.current_transaction.boleto_url
|
19
|
+
assert !subscription.current_transaction.boleto_barcode
|
20
|
+
assert_equal subscription.status, 'paid'
|
21
|
+
assert_equal subscription.current_transaction.amount, amount
|
22
|
+
assert_equal subscription.current_transaction.payment_method, 'credit_card'
|
23
|
+
assert_equal subscription.current_transaction.status, 'paid'
|
24
|
+
assert_equal subscription.current_transaction.card_brand, 'visa'
|
25
|
+
end
|
26
|
+
|
27
|
+
def assert_transaction_successfully(transaction)
|
28
|
+
assert transaction.id
|
29
|
+
assert transaction.date_created
|
30
|
+
assert transaction.card.id
|
31
|
+
assert !transaction.refuse_reason
|
32
|
+
assert_equal transaction.amount, 1000
|
33
|
+
assert_equal transaction.installments.to_i, 1
|
34
|
+
assert_equal transaction.card_holder_name, 'Jose da Silva'
|
35
|
+
assert_equal transaction.payment_method, 'credit_card'
|
36
|
+
assert_equal transaction.card_brand, 'visa'
|
37
|
+
assert_equal transaction.card.first_digits, '490172'
|
38
|
+
assert_equal transaction.card.last_digits, '4448'
|
39
|
+
end
|
40
|
+
|
41
|
+
def assert_transaction_successfully_paid(transaction)
|
42
|
+
assert !transaction.postback_url
|
43
|
+
assert_equal transaction.status, 'paid'
|
44
|
+
assert_transaction_successfully transaction
|
45
|
+
end
|
46
|
+
|
47
|
+
def assert_transaction_successfully_processing(transaction)
|
48
|
+
assert_equal transaction.postback_url, 'http://test.com/postback'
|
49
|
+
assert_equal transaction.status, 'processing'
|
50
|
+
assert_transaction_successfully transaction
|
51
|
+
end
|
52
|
+
|
53
|
+
def assert_transaction_with_customer_successfully_paid(transaction)
|
54
|
+
assert_transaction_successfully_paid transaction
|
55
|
+
|
56
|
+
assert_equal transaction.customer.class, PagarMe::Customer
|
57
|
+
assert_customer_response transaction.customer
|
58
|
+
|
59
|
+
assert_equal transaction.phone.class, PagarMe::Phone
|
60
|
+
assert_equal transaction.phone.ddd, '21'
|
61
|
+
assert_equal transaction.phone.number, '922334455'
|
62
|
+
|
63
|
+
assert_equal transaction.address.class, PagarMe::Address
|
64
|
+
assert_equal transaction.address.street, 'Av. Brigadeiro Faria Lima'
|
65
|
+
assert_equal transaction.address.neighborhood, 'Itaim bibi'
|
66
|
+
assert_equal transaction.address.zipcode, '01452000'
|
67
|
+
assert_equal transaction.address.street_number, '2941'
|
68
|
+
end
|
69
|
+
|
70
|
+
def assert_transaction_refused_by_acquirer(transaction)
|
71
|
+
assert transaction.id
|
72
|
+
assert transaction.date_created
|
73
|
+
assert transaction.card.id
|
74
|
+
assert_equal transaction.refuse_reason, 'acquirer'
|
75
|
+
assert_equal transaction.amount, 1000
|
76
|
+
assert_equal transaction.installments.to_i, 1
|
77
|
+
assert_equal transaction.card_holder_name, 'Jose da Silva'
|
78
|
+
assert_equal transaction.payment_method, 'credit_card'
|
79
|
+
assert_equal transaction.status, 'refused'
|
80
|
+
assert_equal transaction.card_brand, 'visa'
|
81
|
+
assert_equal transaction.card.first_digits, '490172'
|
82
|
+
assert_equal transaction.card.last_digits, '4448'
|
83
|
+
end
|
84
|
+
|
85
|
+
def assert_transaction_with_bolelo_on_waiting_payment(transaction)
|
86
|
+
assert transaction.date_created
|
87
|
+
assert transaction.boleto_barcode
|
88
|
+
assert transaction.boleto_expiration_date
|
89
|
+
assert transaction.boleto_url
|
90
|
+
assert_nil transaction.card
|
91
|
+
assert_nil transaction.card_holder_name
|
92
|
+
assert_equal transaction.payment_method, 'boleto'
|
93
|
+
assert_equal transaction.status, 'waiting_payment'
|
94
|
+
assert_equal transaction.amount.to_s, '1000'
|
95
|
+
end
|
96
|
+
|
97
|
+
def assert_split_rules(split_rules)
|
98
|
+
assert_equal split_rules.size, 4
|
99
|
+
rules = split_rules.sort_by &:percentage
|
100
|
+
|
101
|
+
assert_equal rules[0].recipient_id, Fixtures.persistent_recipient_ids[0]
|
102
|
+
assert_equal rules[1].recipient_id, Fixtures.persistent_recipient_ids[1]
|
103
|
+
assert_equal rules[2].recipient_id, Fixtures.persistent_recipient_ids[2]
|
104
|
+
assert_equal rules[3].recipient_id, Fixtures.persistent_recipient_ids[3]
|
105
|
+
|
106
|
+
assert_equal rules[0].percentage, 10
|
107
|
+
assert_equal rules[1].percentage, 20
|
108
|
+
assert_equal rules[2].percentage, 30
|
109
|
+
assert_equal rules[3].percentage, 40
|
110
|
+
end
|
111
|
+
|
112
|
+
def assert_plan_created(plan)
|
113
|
+
assert plan.id
|
114
|
+
assert_equal plan.name, 'Plano gold'
|
115
|
+
assert_equal plan.trial_days, 5
|
116
|
+
assert_equal plan.days, 30
|
117
|
+
assert_equal plan.amount, 3000
|
118
|
+
end
|
119
|
+
|
120
|
+
def assert_subscription_created(subscription, plan)
|
121
|
+
assert subscription.id
|
122
|
+
assert_equal subscription.status, 'trialing'
|
123
|
+
assert_equal subscription.plan.id, plan.id
|
124
|
+
end
|
125
|
+
|
126
|
+
def assert_no_trial_subscription_created(subscription, plan)
|
127
|
+
assert subscription.id
|
128
|
+
assert_equal subscription.status, 'paid'
|
129
|
+
assert_equal subscription.plan.id, plan.id
|
130
|
+
end
|
131
|
+
|
132
|
+
def assert_transaction_errors(params = {})
|
133
|
+
PagarMe::Transaction.create transaction_with_card_params(params)
|
134
|
+
rescue PagarMe::ValidationError
|
135
|
+
assert_no_match /\s*\,\s*\Z/, $!.message
|
136
|
+
end
|
137
|
+
|
138
|
+
def assert_has_error_param(exception, parameter_name)
|
139
|
+
assert exception.errors.any?{ |error| error.parameter_name == parameter_name }
|
140
|
+
end
|
141
|
+
|
142
|
+
def assert_transfer(transfer)
|
143
|
+
assert transfer.id
|
144
|
+
assert transfer.fee
|
145
|
+
assert_equal transfer.class, PagarMe::Transfer
|
146
|
+
assert %w(doc credito_em_conta ted).include?(transfer.type)
|
147
|
+
end
|
148
|
+
|
149
|
+
def assert_empty_balance(balance)
|
150
|
+
assert_equal balance.available.amount, 0
|
151
|
+
assert_equal balance.waiting_funds.amount, 0
|
152
|
+
assert_equal balance.transferred.amount, 0
|
153
|
+
end
|
154
|
+
|
155
|
+
def assert_available_balance(balance)
|
156
|
+
assert(balance.available.amount > 0)
|
157
|
+
assert_equal balance.waiting_funds.amount, 0
|
158
|
+
assert_equal balance.transferred.amount, 0
|
159
|
+
end
|
160
|
+
|
161
|
+
def assert_transfered_balance(balance)
|
162
|
+
assert(balance.transferred.amount > 0)
|
163
|
+
assert_equal balance.available.amount, 0
|
164
|
+
assert_equal balance.waiting_funds.amount, 0
|
165
|
+
end
|
166
|
+
|
167
|
+
def assert_increased_available_amount(previous_balance, balance)
|
168
|
+
assert(previous_balance.available.amount < balance.available.amount)
|
169
|
+
assert_equal previous_balance.waiting_funds.amount, balance.waiting_funds.amount
|
170
|
+
assert_equal previous_balance.transferred.amount, balance.transferred.amount
|
171
|
+
end
|
172
|
+
|
173
|
+
def assert_anticipation_limits(limits)
|
174
|
+
assert limits.maximum.amount
|
175
|
+
assert limits.minimum.amount
|
176
|
+
end
|
177
|
+
|
178
|
+
def assert_anticipation(anticipation)
|
179
|
+
assert_statusless_anticipation anticipation
|
180
|
+
assert_equal anticipation.status, 'pending'
|
181
|
+
end
|
182
|
+
|
183
|
+
def assert_canceled_anticipation(anticipation)
|
184
|
+
assert_statusless_anticipation anticipation
|
185
|
+
assert_equal anticipation.status, 'canceled'
|
186
|
+
end
|
187
|
+
|
188
|
+
def assert_statusless_anticipation(anticipation)
|
189
|
+
assert anticipation.amount > 0
|
190
|
+
assert anticipation.fee
|
191
|
+
assert anticipation.anticipation_fee
|
192
|
+
assert_equal anticipation.object, 'bulk_anticipation'
|
193
|
+
end
|
194
|
+
|
195
|
+
end
|
data/test/fixtures.rb
ADDED
@@ -0,0 +1,222 @@
|
|
1
|
+
class Fixtures
|
2
|
+
def transaction
|
3
|
+
{ amount: 1000 }
|
4
|
+
end
|
5
|
+
|
6
|
+
def boleto
|
7
|
+
{ payment_method: 'boleto' }
|
8
|
+
end
|
9
|
+
|
10
|
+
def transfer
|
11
|
+
{ amount: 1000 }
|
12
|
+
end
|
13
|
+
|
14
|
+
def card
|
15
|
+
{
|
16
|
+
card_number: '4901720080344448',
|
17
|
+
card_holder_name: 'Jose da Silva',
|
18
|
+
card_expiration_month: '10',
|
19
|
+
card_expiration_year: valid_expiration_year,
|
20
|
+
card_cvv: '314'
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def split_rule(recipient_id, percentage)
|
25
|
+
{ recipient_id: recipient_id, percentage: percentage }
|
26
|
+
end
|
27
|
+
|
28
|
+
def split_rules
|
29
|
+
{
|
30
|
+
split_rules: [
|
31
|
+
split_rule(persistent_recipient_ids[0], 10),
|
32
|
+
split_rule(persistent_recipient_ids[1], 20),
|
33
|
+
split_rule(persistent_recipient_ids[2], 30),
|
34
|
+
split_rule(persistent_recipient_ids[3], 40)
|
35
|
+
]
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
def invalid_split_rules
|
40
|
+
{
|
41
|
+
split_rules: [
|
42
|
+
{ percentage: 10 },
|
43
|
+
split_rule(persistent_recipient_ids[1], 20),
|
44
|
+
split_rule(persistent_recipient_ids[2], 30),
|
45
|
+
split_rule(persistent_recipient_ids[3], 40)
|
46
|
+
]
|
47
|
+
}
|
48
|
+
end
|
49
|
+
|
50
|
+
def refused_card
|
51
|
+
# In test environment CVV's that starts with digit 6 are refused by acquirer
|
52
|
+
card.merge card_cvv: '600'
|
53
|
+
end
|
54
|
+
|
55
|
+
def plan
|
56
|
+
{
|
57
|
+
days: 30,
|
58
|
+
name: 'Plano gold',
|
59
|
+
amount: 3000,
|
60
|
+
trial_days: 5
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
64
|
+
def other_plan
|
65
|
+
{
|
66
|
+
name: 'Plano Silver',
|
67
|
+
days: 30,
|
68
|
+
amount: 3000
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
72
|
+
def no_trial_plan
|
73
|
+
{
|
74
|
+
name: 'Plano Sem Trial',
|
75
|
+
days: 30,
|
76
|
+
amount: 3000,
|
77
|
+
trial_days: 0
|
78
|
+
}
|
79
|
+
end
|
80
|
+
|
81
|
+
def bank_account
|
82
|
+
{
|
83
|
+
bank_code: '237',
|
84
|
+
agencia: '1935',
|
85
|
+
agencia_dv: '9',
|
86
|
+
conta: '23398',
|
87
|
+
conta_dv: '9',
|
88
|
+
legal_name: 'foo bar loem',
|
89
|
+
document_number: '00000000000000'
|
90
|
+
}
|
91
|
+
end
|
92
|
+
|
93
|
+
def nested_bank_account
|
94
|
+
{ bank_account: bank_account }
|
95
|
+
end
|
96
|
+
|
97
|
+
def refund_bank_account
|
98
|
+
{
|
99
|
+
bank_account: {
|
100
|
+
bank_code: '399',
|
101
|
+
agencia: '1234',
|
102
|
+
conta: '1234567',
|
103
|
+
conta_dv: '1',
|
104
|
+
legal_name: 'Jose da Silva',
|
105
|
+
document_number: '68782915423'
|
106
|
+
}
|
107
|
+
}
|
108
|
+
end
|
109
|
+
|
110
|
+
def recipient
|
111
|
+
{
|
112
|
+
transfer_day: 3,
|
113
|
+
transfer_enabled: true,
|
114
|
+
transfer_interval: 'daily'
|
115
|
+
}
|
116
|
+
end
|
117
|
+
|
118
|
+
def postback
|
119
|
+
{ postback_url: 'http://test.com/postback' }
|
120
|
+
end
|
121
|
+
|
122
|
+
def postback_response
|
123
|
+
{
|
124
|
+
id: 194330,
|
125
|
+
event: 'transaction_status_changed',
|
126
|
+
fingerprint: 'f8eb5ce941d70473ea691959ea4bfdeb79d48e2c',
|
127
|
+
desired_status: 'paid',
|
128
|
+
current_status: 'paid',
|
129
|
+
object: 'transaction',
|
130
|
+
old_status: 'processing'
|
131
|
+
}
|
132
|
+
end
|
133
|
+
|
134
|
+
def subscription
|
135
|
+
card.merge customer: { email: 'customer@pagar.me' }
|
136
|
+
end
|
137
|
+
|
138
|
+
def customer
|
139
|
+
{
|
140
|
+
customer: {
|
141
|
+
name: 'Jose da Silva',
|
142
|
+
document_number: '84931126235',
|
143
|
+
email: 'pagarmetestruby@mailinator.com',
|
144
|
+
gender: 'M',
|
145
|
+
born_at: '1970-10-11',
|
146
|
+
phone: { ddd: '21', number: '922334455' },
|
147
|
+
address: {
|
148
|
+
street: 'Av. Brigadeiro Faria Lima',
|
149
|
+
neighborhood: 'Itaim bibi',
|
150
|
+
zipcode: '01452000',
|
151
|
+
street_number: '2941'
|
152
|
+
}
|
153
|
+
}
|
154
|
+
}
|
155
|
+
end
|
156
|
+
|
157
|
+
def invalid_expiration_year
|
158
|
+
{ card_expiration_year: _invalid_expiration_year }
|
159
|
+
end
|
160
|
+
|
161
|
+
def anticipations_limits
|
162
|
+
{
|
163
|
+
timeframe: :end,
|
164
|
+
payment_date: (Date.today + 7)
|
165
|
+
}
|
166
|
+
end
|
167
|
+
|
168
|
+
def respond_to?(method_name)
|
169
|
+
return true if super(method_name)
|
170
|
+
method_name.to_s.split(/_with_/).all?{ |m| super(m) }
|
171
|
+
end
|
172
|
+
|
173
|
+
def valid_expiration_year
|
174
|
+
( Time.now.year+1 ).to_s[2..-1]
|
175
|
+
end
|
176
|
+
|
177
|
+
def persistent_recipient_ids
|
178
|
+
VCR.use_cassette('fixtures/persistent_recipients') do
|
179
|
+
4.times.map do
|
180
|
+
PagarMe::Recipient.create(recipient_with_nested_bank_account).id
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
def self.persistent_recipient_ids
|
186
|
+
new.persistent_recipient_ids
|
187
|
+
end
|
188
|
+
|
189
|
+
protected
|
190
|
+
|
191
|
+
def _invalid_expiration_year
|
192
|
+
( Time.now.year-1 ).to_s[2..-1]
|
193
|
+
end
|
194
|
+
|
195
|
+
def method_missing(name, *args, &block)
|
196
|
+
if respond_to?(name)
|
197
|
+
name.to_s.split(/_with_/).map{ |m| public_send m }.inject Hash.new, &:merge
|
198
|
+
else
|
199
|
+
super name, *args, &block
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
module Helpers
|
204
|
+
protected
|
205
|
+
def fixtures
|
206
|
+
@fixtures ||= Fixtures.new
|
207
|
+
end
|
208
|
+
|
209
|
+
def method_missing(name, *args, &block)
|
210
|
+
match = name.to_s.match /\_params\Z/
|
211
|
+
if match && fixtures.respond_to?(match.pre_match) && args.count < 2
|
212
|
+
if args.empty?
|
213
|
+
fixtures.public_send match.pre_match
|
214
|
+
else
|
215
|
+
fixtures.public_send(match.pre_match).merge args.first
|
216
|
+
end
|
217
|
+
else
|
218
|
+
super name, *args, &block
|
219
|
+
end
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|