Fixes for CRUD actions on bank transaction rules

This commit is contained in:
David Bomba 2022-11-20 11:25:57 +11:00
parent 069568da6e
commit 3562c3376c
5 changed files with 95 additions and 3 deletions

View File

@ -17,7 +17,7 @@
* ), * ),
* @OA\Property(property="auto_convert", type="boolean", example=true, description="Flags whether the rule converts the transaction automatically"), * @OA\Property(property="auto_convert", type="boolean", example=true, description="Flags whether the rule converts the transaction automatically"),
* @OA\Property(property="matches_on_all", type="boolean", example=true, description="Flags whether all subrules are required for the match"), * @OA\Property(property="matches_on_all", type="boolean", example=true, description="Flags whether all subrules are required for the match"),
* @OA\Property(property="applies_to", type="boolean", example="CREDIT", description="Flags whether the rule applies to a CREDIT or DEBIT"), * @OA\Property(property="applies_to", type="string", example="CREDIT", description="Flags whether the rule applies to a CREDIT or DEBIT"),
* @OA\Property(property="client_id", type="string", example="AS3df3A", description="The client hashed id"), * @OA\Property(property="client_id", type="string", example="AS3df3A", description="The client hashed id"),
* @OA\Property(property="vendor_id", type="string", example="AS3df3A", description="The vendor hashed id"), * @OA\Property(property="vendor_id", type="string", example="AS3df3A", description="The vendor hashed id"),
* @OA\Property(property="category_id", type="string", example="AS3df3A", description="The category hashed id"), * @OA\Property(property="category_id", type="string", example="AS3df3A", description="The category hashed id"),

View File

@ -37,7 +37,7 @@ class StoreBankTransactionRuleRequest extends Request
'rules' => 'bail|array', 'rules' => 'bail|array',
'auto_convert' => 'bail|sometimes|bool', 'auto_convert' => 'bail|sometimes|bool',
'matches_on_all' => 'bail|sometimes|bool', 'matches_on_all' => 'bail|sometimes|bool',
'applies_to' => 'bail|sometimes|bool', 'applies_to' => 'bail|sometimes|string',
]; ];
if(isset($this->category_id)) if(isset($this->category_id))

View File

@ -36,7 +36,7 @@ class UpdateBankTransactionRuleRequest extends Request
'rules' => 'bail|array', 'rules' => 'bail|array',
'auto_convert' => 'bail|sometimes|bool', 'auto_convert' => 'bail|sometimes|bool',
'matches_on_all' => 'bail|sometimes|bool', 'matches_on_all' => 'bail|sometimes|bool',
'applies_to' => 'bail|sometimes|bool', 'applies_to' => 'bail|sometimes|string',
]; ];
if(isset($this->category_id)) if(isset($this->category_id))

View File

@ -32,6 +32,13 @@ class BankTransactionRule extends BaseModel
'category_id', 'category_id',
]; ];
protected $casts = [
'rules' => 'array',
'updated_at' => 'timestamp',
'created_at' => 'timestamp',
'deleted_at' => 'timestamp',
];
protected $dates = [ protected $dates = [
]; ];

View File

@ -42,6 +42,91 @@ class BankTransactionRuleApiTest extends TestCase
Model::reguard(); Model::reguard();
} }
/*
$rules = [
'name' => 'bail|required|string',
'rules' => 'bail|array',
'auto_convert' => 'bail|sometimes|bool',
'matches_on_all' => 'bail|sometimes|bool',
'applies_to' => 'bail|sometimes|bool',
];
if(isset($this->category_id))
$rules['category_id'] = 'bail|sometimes|exists:expense_categories,id,'.auth()->user()->company()->id.',is_deleted,0';
if(isset($this->vendor_id))
$rules['vendor_id'] = 'bail|sometimes|exists:vendors,id,company_id,'.auth()->user()->company()->id.',is_deleted,0';
if(isset($this->client_id))
$rules['client_id'] = 'bail|sometimes|exists:clients,id,company_id,'.auth()->user()->company()->id.',is_deleted,0';
*/
public function testBankRulePost()
{
$data = [
'name' => 'The First Rule',
'rules' => [],
'auto_convert' => false,
'matches_on_all' => false,
'applies_to' => 'CREDIT',
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->postJson('/api/v1/bank_transaction_rules/', $data);
$arr = $response->json();
$response->assertStatus(200);
$this->assertEquals('The First Rule', $arr['data']['name']);
}
public function testBankRulePut()
{
$data = [
'name' => 'The First Rule',
'rules' => [],
'auto_convert' => false,
'matches_on_all' => false,
'applies_to' => 'CREDIT',
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->postJson('/api/v1/bank_transaction_rules/', $data);
$arr = $response->json();
$response->assertStatus(200);
$this->assertEquals('The First Rule', $arr['data']['name']);
$data = [
'name' => 'A New Name For The First Rule',
'rules' => [],
'auto_convert' => false,
'matches_on_all' => false,
'applies_to' => 'CREDIT',
];
$response = $this->withHeaders([
'X-API-SECRET' => config('ninja.api_secret'),
'X-API-TOKEN' => $this->token,
])->putJson('/api/v1/bank_transaction_rules/'. $arr['data']['id'], $data);
$arr = $response->json();
$response->assertStatus(200);
$this->assertEquals('A New Name For The First Rule', $arr['data']['name']);
}
public function testBankTransactionRuleGet() public function testBankTransactionRuleGet()
{ {
$response = $this->withHeaders([ $response = $this->withHeaders([