pagarme 2.0.2 → 2.1.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.
- 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
|