Fixes for tests

This commit is contained in:
David Bomba 2024-11-03 19:13:58 +11:00
parent 535ce66339
commit de1c7fdc0e
2 changed files with 69 additions and 63 deletions

View File

@ -38,47 +38,53 @@ class UpdateEInvoiceConfiguration extends Request
public function rules() public function rules()
{ {
return [
'entity' => 'required|bail|in:invoice,client,company', return [
'payment_means' => 'sometimes|bail|array', 'entity' => 'required|bail|in:invoice,client,company',
'payment_means.*.code' => ['required_with:payment_means', 'bail', Rule::in(PaymentMeans::getPaymentMeansCodelist())], 'payment_means' => 'sometimes|bail|array',
'payment_means.*.bic_swift' => ['bail', 'payment_means.*.code' => ['required_with:payment_means', 'bail', Rule::in(PaymentMeans::getPaymentMeansCodelist())],
Rule::requiredIf(function () { 'payment_means.*.bic_swift' => Rule::forEach(function (string|null $value, string $attribute) {
$code = $this->input('payment_means.code'); $index = explode('.', $attribute)[1];
$requirements = PaymentMeans::$payment_means_requirements_codes[$code] ?? []; $code = $this->input("payment_means.{$index}.code");
return in_array('bic_swift', $requirements); $requirements = PaymentMeans::$payment_means_requirements_codes[$code] ?? [];
}),
], return ['bail', Rule::requiredIf(in_array('bic_swift', $requirements))];
'payment_means.*.iban' => ['bail', 'sometimes', 'string', 'min:15', 'max:34', }),
Rule::requiredIf(function () { 'payment_means.*.iban' => Rule::forEach(function (string|null $value, string $attribute) {
$code = $this->input('payment_means.code'); $index = explode('.', $attribute)[1];
$requirements = PaymentMeans::$payment_means_requirements_codes[$code] ?? []; $code = $this->input("payment_means.{$index}.code");
return in_array('iban', $requirements); $requirements = PaymentMeans::$payment_means_requirements_codes[$code] ?? [];
}),
], return ['bail', 'sometimes', 'string', 'min:15', 'max:34',
'payment_means.*.account_holder' => ['bail', 'sometimes', 'string', 'max:255', Rule::requiredIf(in_array('iban', $requirements))];
Rule::requiredIf(function () { }),
$code = $this->input('payment_means.code'); 'payment_means.*.account_holder' => Rule::forEach(function (string|null $value, string $attribute) {
$requirements = PaymentMeans::$payment_means_requirements_codes[$code] ?? []; $index = explode('.', $attribute)[1];
return in_array('account_holder', $requirements); $code = $this->input("payment_means.{$index}.code");
}), $requirements = PaymentMeans::$payment_means_requirements_codes[$code] ?? [];
],
'payment_means.*.information' => ['bail', 'sometimes', 'nullable', 'string'], return ['bail', 'sometimes', 'string', 'max:255',
'payment_means.*.card_type' => ['bail', 'sometimes', 'nullable', 'string', 'min:4', Rule::requiredIf(in_array('account_holder', $requirements))];
Rule::requiredIf(function () { }),
$code = $this->input('payment_means.code'); 'payment_means.*.information' => ['bail', 'sometimes', 'nullable', 'string'],
$requirements = PaymentMeans::$payment_means_requirements_codes[$code] ?? []; 'payment_means.*.card_type' => Rule::forEach(function (string|null $value, string $attribute) {
return in_array('card_type', $requirements); $index = explode('.', $attribute)[1];
}), $code = $this->input("payment_means.{$index}.code");
], $requirements = PaymentMeans::$payment_means_requirements_codes[$code] ?? [];
'payment_means.*.card_holder' => ['bail', 'sometimes', 'nullable', 'string', 'min:4',
Rule::requiredIf(function () { return ['bail', 'sometimes', 'nullable', 'string', 'min:4',
$code = $this->input('payment_means.code'); Rule::requiredIf(in_array('card_type', $requirements))];
$requirements = PaymentMeans::$payment_means_requirements_codes[$code] ?? []; }),
return in_array('card_holder', $requirements); 'payment_means.*.card_holder' => Rule::forEach(function (string|null $value, string $attribute) {
}), $index = explode('.', $attribute)[1];
], $code = $this->input("payment_means.{$index}.code");
]; $requirements = PaymentMeans::$payment_means_requirements_codes[$code] ?? [];
return ['bail', 'sometimes', 'nullable', 'string', 'min:4',
Rule::requiredIf(in_array('card_holder', $requirements))];
}),
];
} }

View File

@ -50,9 +50,9 @@ class UpdateEInvoiceConfigurationTest extends TestCase
{ {
$data = [ $data = [
'entity' => 'invoice', 'entity' => 'invoice',
'payment_means' => [ 'payment_means' => [[
'code' => 'invalidcodehere' 'code' => 'invalidcodehere'
] ]]
]; ];
$this->request->initialize($data); $this->request->initialize($data);
@ -65,12 +65,12 @@ class UpdateEInvoiceConfigurationTest extends TestCase
{ {
$data = [ $data = [
'entity' => 'invoice', 'entity' => 'invoice',
'payment_means' => [ 'payment_means' => [[
'code' => '30', 'code' => '30',
'iban' => '12345678', 'iban' => '123456789101112254',
'bic_swift' => 'DEUTDEFF', 'bic_swift' => 'DEUTDEFF',
'account_holder' => 'John Doe Company Limited' 'account_holder' => 'John Doe Company Limited'
] ]]
]; ];
$this->request->initialize($data); $this->request->initialize($data);
@ -83,29 +83,29 @@ class UpdateEInvoiceConfigurationTest extends TestCase
{ {
$data = [ $data = [
'entity' => 'invoice', 'entity' => 'invoice',
'payment_means' => [ 'payment_means' => [[
'code' => '48', 'code' => '48',
'card_type' => 'VISA', 'card_type' => 'VISA',
'iban' => '12345678' 'iban' => '12345678'
] ]]
]; ];
$this->request->initialize($data); $this->request->initialize($data);
$validator = Validator::make($data, $this->request->rules()); $validator = Validator::make($data, $this->request->rules());
$this->assertTrue($validator->passes()); $this->assertFalse($validator->passes());
} }
public function testValidatesPaymentMeansForCreditCard() public function testValidatesPaymentMeansForCreditCard()
{ {
$data = [ $data = [
'entity' => 'invoice', 'entity' => 'invoice',
'payment_means' => [ 'payment_means' => [[
'code' => '54', 'code' => '54',
'card_type' => 'VISA', 'card_type' => 'VISA',
'card_number' => '************1234', 'card_number' => '************1234',
'card_holder' => 'John Doe' 'card_holder' => 'John Doe'
] ]]
]; ];
$this->request->initialize($data); $this->request->initialize($data);
@ -118,44 +118,44 @@ class UpdateEInvoiceConfigurationTest extends TestCase
{ {
$data = [ $data = [
'entity' => 'invoice', 'entity' => 'invoice',
'payment_means' => [ 'payment_means' => [[
'code' => '30', 'code' => '30',
] ]]
]; ];
$this->request->initialize($data); $this->request->initialize($data);
$validator = Validator::make($data, $this->request->rules()); $validator = Validator::make($data, $this->request->rules());
$this->assertFalse($validator->passes()); $this->assertFalse($validator->passes());
$this->assertTrue($validator->errors()->has('payment_means.iban'));
$this->assertTrue($validator->errors()->has('payment_means.bic_swift')); $this->assertTrue($validator->errors()->has('payment_means.0.bic_swift'));
} }
public function testFailsValidationWithInvalidPaymentMeansCode() public function testFailsValidationWithInvalidPaymentMeansCode()
{ {
$data = [ $data = [
'entity' => 'invoice', 'entity' => 'invoice',
'payment_means' => [ 'payment_means' => [[
'code' => '999', 'code' => '999',
] ]]
]; ];
$this->request->initialize($data); $this->request->initialize($data);
$validator = Validator::make($data, $this->request->rules()); $validator = Validator::make($data, $this->request->rules());
$this->assertFalse($validator->passes()); $this->assertFalse($validator->passes());
$this->assertTrue($validator->errors()->has('payment_means.code')); $this->assertTrue($validator->errors()->has('payment_means.0.code'));
} }
public function testValidatesPaymentMeansForDirectDebit() public function testValidatesPaymentMeansForDirectDebit()
{ {
$data = [ $data = [
'entity' => 'invoice', 'entity' => 'invoice',
'payment_means' => [ 'payment_means' => [[
'code' => '49', 'code' => '49',
'payer_bank_account' => '12345678', 'payer_bank_account' => '12345678',
'bic_swift' => 'DEUTDEFF' 'bic_swift' => 'DEUTDEFF'
] ]]
]; ];
$this->request->initialize($data); $this->request->initialize($data);
@ -168,11 +168,11 @@ class UpdateEInvoiceConfigurationTest extends TestCase
{ {
$data = [ $data = [
'entity' => 'invoice', 'entity' => 'invoice',
'payment_means' => [ 'payment_means' => [[
'code' => '15', 'code' => '15',
'account_holder' => 'John Doe Company Limited', 'account_holder' => 'John Doe Company Limited',
'bsb_sort' => '123456' 'bsb_sort' => '123456'
] ]]
]; ];
$this->request->initialize($data); $this->request->initialize($data);