Skip to content

Commit 41f5c47

Browse files
committed
Make amount args generic; reformat tests
1 parent 71aa513 commit 41f5c47

16 files changed

+168
-57
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Optionally, you can disable default-features, which is basically the entire suit
2727
- `express_request`
2828
- `transaction_reversal`
2929
- `transaction_status`
30+
- `bill_manager`
3031

3132
Example:
3233

src/client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ impl<'mpesa, Env: ApiEnvironment> Mpesa<Env> {
6363
/// If `None`, the default password is `"Safcom496!"`
6464
pub(crate) fn initiator_password(&'mpesa self) -> String {
6565
let Some(p) = &*self.initiator_password.borrow() else {
66-
return DEFAULT_INITIATOR_PASSWORD.to_owned()
66+
return DEFAULT_INITIATOR_PASSWORD.to_owned();
6767
};
6868
p.to_owned()
6969
}

src/services/bill_manager/reconciliation.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,11 @@ impl<'mpesa, Env: ApiEnvironment> ReconciliationBuilder<'mpesa, Env> {
8585
}
8686

8787
/// Adds `paid_amount`
88-
pub fn paid_amount(mut self, paid_amount: f64) -> ReconciliationBuilder<'mpesa, Env> {
89-
self.paid_amount = Some(paid_amount);
88+
pub fn paid_amount<Number: Into<f64>>(
89+
mut self,
90+
paid_amount: Number,
91+
) -> ReconciliationBuilder<'mpesa, Env> {
92+
self.paid_amount = Some(paid_amount.into());
9093
self
9194
}
9295

src/services/bill_manager/single_invoice.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,11 @@ impl<'mpesa, Env: ApiEnvironment> SingleInvoiceBuilder<'mpesa, Env> {
4747
}
4848

4949
/// Adds `amount`
50-
pub fn amount(mut self, amount: f64) -> SingleInvoiceBuilder<'mpesa, Env> {
51-
self.amount = Some(amount);
50+
pub fn amount<Number: Into<f64>>(
51+
mut self,
52+
amount: Number,
53+
) -> SingleInvoiceBuilder<'mpesa, Env> {
54+
self.amount = Some(amount.into());
5255
self
5356
}
5457

tests/mpesa-rust/account_balance_test.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ async fn account_balance_fails_if_party_a_is_not_provided() {
5858
.send()
5959
.await
6060
{
61-
let MpesaError::Message(msg) = e else { panic!("Expected MpesaError::Message, but found {}", e)};
61+
let MpesaError::Message(msg) = e else {
62+
panic!("Expected MpesaError::Message, but found {}", e);
63+
};
6264
assert_eq!(msg, "party_a is required")
6365
} else {
6466
panic!("Expected error");
@@ -87,7 +89,9 @@ async fn account_balance_fails_if_result_url_is_not_provided() {
8789
.send()
8890
.await
8991
{
90-
let MpesaError::Message(msg) = e else { panic!("Expected MpesaError::Message, but found {}", e)};
92+
let MpesaError::Message(msg) = e else {
93+
panic!("Expected MpesaError::Message, but found {}", e);
94+
};
9195
assert_eq!(msg, "result_url is required")
9296
} else {
9397
panic!("Expected error");
@@ -116,7 +120,9 @@ async fn account_balance_fails_if_queue_timeout_url_is_not_provided() {
116120
.send()
117121
.await
118122
{
119-
let MpesaError::Message(msg) = e else { panic!("Expected MpesaError::Message, but found {}", e)};
123+
let MpesaError::Message(msg) = e else {
124+
panic!("Expected MpesaError::Message, but found {}", e);
125+
};
120126
assert_eq!(msg, "queue_timeout_url is required")
121127
} else {
122128
panic!("Expected error");

tests/mpesa-rust/b2b_test.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ async fn b2b_fails_if_no_amount_is_provided() {
6565
.send()
6666
.await
6767
{
68-
let MpesaError::Message(msg) = e else { panic!("Expected MpesaError::Message, but found {}", e)};
68+
let MpesaError::Message(msg) = e else {
69+
panic!("Expected MpesaError::Message, but found {}", e);
70+
};
6971
assert_eq!(msg, "amount is required");
7072
} else {
7173
panic!("Expected error");
@@ -97,7 +99,9 @@ async fn b2b_fails_if_no_party_a_is_provided() {
9799
.send()
98100
.await
99101
{
100-
let MpesaError::Message(msg) = e else { panic!("Expected MpesaError::Message, but found {}", e)};
102+
let MpesaError::Message(msg) = e else {
103+
panic!("Expected MpesaError::Message, but found {}", e);
104+
};
101105
assert_eq!(msg, "party_a is required");
102106
} else {
103107
panic!("Expected error");
@@ -129,7 +133,9 @@ async fn b2b_fails_if_no_party_b_is_provided() {
129133
.send()
130134
.await
131135
{
132-
let MpesaError::Message(msg) = e else { panic!("Expected MpesaError::Message, but found {}", e)};
136+
let MpesaError::Message(msg) = e else {
137+
panic!("Expected MpesaError::Message, but found {}", e);
138+
};
133139
assert_eq!(msg, "party_b is required");
134140
} else {
135141
panic!("Expected error");

tests/mpesa-rust/b2c_test.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ async fn b2c_fails_if_no_amount_is_provided() {
6262
.send()
6363
.await
6464
{
65-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message, but found {}", e)};
65+
let MpesaError::Message(msg) = e else {
66+
panic!("Expected MpesaError::Message, but found {}", e);
67+
};
6668
assert_eq!(msg, "amount is required");
6769
} else {
6870
panic!("Expected error");
@@ -93,7 +95,9 @@ async fn b2c_fails_if_no_party_a_is_provided() {
9395
.send()
9496
.await
9597
{
96-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message, but found {}", e)};
98+
let MpesaError::Message(msg) = e else {
99+
panic!("Expected MpesaError::Message, but found {}", e);
100+
};
97101
assert_eq!(msg, "party_a is required");
98102
} else {
99103
panic!("Expected error");
@@ -124,7 +128,9 @@ async fn b2c_fails_if_no_party_b_is_provided() {
124128
.send()
125129
.await
126130
{
127-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message, but found {}", e)};
131+
let MpesaError::Message(msg) = e else {
132+
panic!("Expected MpesaError::Message, but found {}", e);
133+
};
128134
assert_eq!(msg, "party_b is required");
129135
} else {
130136
panic!("Expected error");
@@ -155,7 +161,9 @@ async fn b2c_fails_if_no_result_url_is_provided() {
155161
.send()
156162
.await
157163
{
158-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message, but found {}", e)};
164+
let MpesaError::Message(msg) = e else {
165+
panic!("Expected MpesaError::Message, but found {}", e);
166+
};
159167
assert_eq!(msg, "result_url is required");
160168
} else {
161169
panic!("Expected error");
@@ -186,7 +194,9 @@ async fn b2c_fails_if_no_queue_timeout_is_provided() {
186194
.send()
187195
.await
188196
{
189-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message, but found {}", e)};
197+
let MpesaError::Message(msg) = e else {
198+
panic!("Expected MpesaError::Message, but found {}", e);
199+
};
190200
assert_eq!(msg, "queue_timeout_url is required");
191201
} else {
192202
panic!("Expected error");

tests/mpesa-rust/bill_manager_test/bulk_invoice_test.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ async fn bulk_invoice_fails_if_invoices_is_empty() {
5757
.mount(&server)
5858
.await;
5959
if let Err(e) = client.bulk_invoice().send().await {
60-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
60+
let MpesaError::Message(msg) = e else {
61+
panic!("Expected MpesaError::Message, but found {}", e);
62+
};
6163
assert_eq!(msg, "invoices cannot be empty");
6264
} else {
6365
panic!("Expected Error")

tests/mpesa-rust/bill_manager_test/onboard_test.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ async fn onboard_fails_if_no_callback_url_is_provided() {
5555
.send()
5656
.await
5757
{
58-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
58+
let MpesaError::Message(msg) = e else {
59+
panic!("Expected MpesaError::Message, but found {}", e);
60+
};
5961
assert_eq!(msg, "callback_url is required");
6062
} else {
6163
panic!("Expected error")
@@ -80,7 +82,9 @@ async fn onboard_fails_if_no_email_is_provided() {
8082
.send()
8183
.await
8284
{
83-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
85+
let MpesaError::Message(msg) = e else {
86+
panic!("Expected MpesaError::Message, but found {}", e);
87+
};
8488
assert_eq!(msg, "email is required");
8589
} else {
8690
panic!("Expected error")
@@ -105,7 +109,9 @@ async fn onboard_fails_if_no_logo_is_provided() {
105109
.send()
106110
.await
107111
{
108-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
112+
let MpesaError::Message(msg) = e else {
113+
panic!("Expected MpesaError::Message, but found {}", e);
114+
};
109115
assert_eq!(msg, "logo is required");
110116
} else {
111117
panic!("Expected error")
@@ -130,7 +136,9 @@ async fn onboard_fails_if_no_official_contact_is_provided() {
130136
.send()
131137
.await
132138
{
133-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
139+
let MpesaError::Message(msg) = e else {
140+
panic!("Expected MpesaError::Message, but found {}", e);
141+
};
134142
assert_eq!(msg, "official_contact is required");
135143
} else {
136144
panic!("Expected error")
@@ -155,7 +163,9 @@ async fn onboard_fails_if_short_code_is_provided() {
155163
.send()
156164
.await
157165
{
158-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
166+
let MpesaError::Message(msg) = e else {
167+
panic!("Expected MpesaError::Message, but found {}", e);
168+
};
159169
assert_eq!(msg, "short_code is required");
160170
} else {
161171
panic!("Expected error")

tests/mpesa-rust/bill_manager_test/reconciliation_test.rs

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ async fn reconciliation_fails_if_no_account_reference_is_provided() {
6060
.send()
6161
.await
6262
{
63-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
63+
let MpesaError::Message(msg) = e else {
64+
panic!("Expected MpesaError::Message, but found {}", e);
65+
};
6466
assert_eq!(msg, "account_reference is required");
6567
} else {
6668
panic!("Expected error")
@@ -88,7 +90,9 @@ async fn reconciliation_fails_if_no_external_reference_is_provided() {
8890
.send()
8991
.await
9092
{
91-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
93+
let MpesaError::Message(msg) = e else {
94+
panic!("Expected MpesaError::Message, but found {}", e);
95+
};
9296
assert_eq!(msg, "external_reference is required");
9397
} else {
9498
panic!("Expected error")
@@ -116,7 +120,9 @@ async fn reconciliation_fails_if_no_full_name_is_provided() {
116120
.send()
117121
.await
118122
{
119-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
123+
let MpesaError::Message(msg) = e else {
124+
panic!("Expected MpesaError::Message, but found {}", e);
125+
};
120126
assert_eq!(msg, "full_name is required");
121127
} else {
122128
panic!("Expected error")
@@ -144,7 +150,9 @@ async fn reconciliation_fails_if_no_invoice_name_is_provided() {
144150
.send()
145151
.await
146152
{
147-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
153+
let MpesaError::Message(msg) = e else {
154+
panic!("Expected MpesaError::Message, but found {}", e);
155+
};
148156
assert_eq!(msg, "invoice_name is required");
149157
} else {
150158
panic!("Expected error")
@@ -172,7 +180,9 @@ async fn reconciliation_fails_if_no_paid_amount_is_provided() {
172180
.send()
173181
.await
174182
{
175-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
183+
let MpesaError::Message(msg) = e else {
184+
panic!("Expected MpesaError::Message, but found {}", e);
185+
};
176186
assert_eq!(msg, "paid_amount is required");
177187
} else {
178188
panic!("Expected error")
@@ -200,7 +210,9 @@ async fn reconciliation_fails_if_no_payment_date_is_provided() {
200210
.send()
201211
.await
202212
{
203-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
213+
let MpesaError::Message(msg) = e else {
214+
panic!("Expected MpesaError::Message, but found {}", e);
215+
};
204216
assert_eq!(msg, "payment_date is required");
205217
} else {
206218
panic!("Expected error")
@@ -228,7 +240,9 @@ async fn reconciliation_fails_if_no_phone_number_is_provided() {
228240
.send()
229241
.await
230242
{
231-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
243+
let MpesaError::Message(msg) = e else {
244+
panic!("Expected MpesaError::Message, but found {}", e);
245+
};
232246
assert_eq!(msg, "phone_number is required");
233247
} else {
234248
panic!("Expected error")
@@ -256,7 +270,9 @@ async fn reconciliation_fails_if_no_transaction_id_is_provided() {
256270
.send()
257271
.await
258272
{
259-
let MpesaError::Message(msg) = e else {panic!("Expected MpesaError::Message but found {}", e)};
273+
let MpesaError::Message(msg) = e else {
274+
panic!("Expected MpesaError::Message, but found {}", e);
275+
};
260276
assert_eq!(msg, "transaction_id is required");
261277
} else {
262278
panic!("Expected error")

0 commit comments

Comments
 (0)