blob: 1e54fe7998f95f93e43a170b5b7666485c54585f [file]
@LoanOriginationFeature
Feature: Loan Origination
@TestRailId:C4649
Scenario: Verify loan originator registration, attachment to loan, and persistence through approval and disbursal
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Merchant Partner Alpha"
Then Loan originator is created successfully with status "ACTIVE"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
Then Loan details with association "originators" has the originator attached
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
When Admin successfully disburse the loan on "1 January 2025" with "1000" EUR transaction amount
Then Loan details with association "originators" has the originator attached
@TestRailId:C4650
Scenario: Verify loan originator inline attachment with auto-creation during loan application
Given Global configuration "enable-originator-creation-during-loan-application" is enabled
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new Loan with originator inline submitted on date: "1 January 2025"
Then Loan details with association "originators" has the originator attached
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
When Admin successfully disburse the loan on "1 January 2025" with "1000" EUR transaction amount
Then Loan details with association "originators" has the originator attached
Given Global configuration "enable-originator-creation-during-loan-application" is disabled
@TestRailId:C4651
Scenario: Verify loan originator details in external business event after loan approval
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Event Test Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
When Admin approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
Then LoanApprovedBusinessEvent is created with originator details
@TestRailId:C4652
Scenario: Verify loan originator detachment from loan before approval
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Detach Test Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
Then Loan details with association "originators" has the originator attached
When Admin detaches the originator from the loan
Then Loan details with association "originators" has no originator attached
@TestRailId:C4653
Scenario: Verify that inactive originator cannot be attached to loan
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID, name "Inactive Originator" and status "PENDING"
When Admin creates a new default Loan with date: "1 January 2025"
Then Attaching the originator to the loan should fail
@TestRailId:C4654
Scenario: Verify loan originator creation with all fields and persistence in loan details
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with all fields and name "Full Fields Originator"
Then Loan originator is created successfully with all fields populated
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
Then Loan details with association "originators" has the originator with all fields attached
@TestRailId:C4655
Scenario: Verify that originator cannot be attached to approved loan
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Post Approval Originator"
When Admin creates a new default Loan with date: "1 January 2025"
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
Then Attaching the originator to the loan should fail with status 403
@TestRailId:C4656
Scenario: Verify that originator cannot be detached from approved loan
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Pre Approval Detach Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
Then Detaching the originator from the loan should fail with status 403
@TestRailId:C4657
Scenario: Verify that same originator cannot be attached to loan twice
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Duplicate Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
Then Attaching the originator to the loan should fail with status 403
@TestRailId:C4658
Scenario: Verify that non-attached originator cannot be detached from loan
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Not Attached Originator"
When Admin creates a new default Loan with date: "1 January 2025"
Then Detaching the originator from the loan should fail with status 404
@TestRailId:C4659
Scenario: Verify that originator cannot be attached to non-existent loan
When Admin creates a new loan originator with external ID and name "Orphan Originator"
Then Attaching the originator to non-existent loan should fail with status 404
@TestRailId:C4660
Scenario: Verify that non-existent originator cannot be attached to loan
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 January 2025"
Then Attaching non-existent originator to the loan should fail with status 404
@TestRailId:C4661
Scenario: Verify loan originator creation without name succeeds with default handling
Then Creating a loan originator without name succeeds
@TestRailId:C4662
Scenario: Verify that user without ATTACH_LOAN_ORIGINATOR permission cannot attach originator
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Permission Test Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin creates new user with "ORIGINATOR_NO_ATTACH" username, "ORIGINATOR_NO_ATTACH_ROLE" role name and given permissions:
| READ_LOAN |
Then Created user without ATTACH_LOAN_ORIGINATOR permission fails to attach originator to the loan
@TestRailId:C4663
Scenario: Verify that user without DETACH_LOAN_ORIGINATOR permission cannot detach originator
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Permission Detach Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
When Admin creates new user with "ORIGINATOR_NO_DETACH" username, "ORIGINATOR_NO_DETACH_ROLE" role name and given permissions:
| READ_LOAN |
Then Created user without DETACH_LOAN_ORIGINATOR permission fails to detach originator from the loan
@TestRailId:C4664
Scenario: Verify loan originator persistence through full loan lifecycle with repayments
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with all fields and name "Lifecycle Originator"
When Admin creates a fully customized loan with the following data:
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
| LP2_ADV_CUSTOM_PMT_ALLOC_PROGRESSIVE_LOAN_SCHEDULE_HORIZONTAL | 01 January 2025 | 1000 | 12 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 3 | MONTHS | 1 | MONTHS | 3 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
When Admin attaches the originator to the loan
Then Loan details with association "originators" has the originator with all fields attached
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
When Admin successfully disburse the loan on "1 January 2025" with "1000" EUR transaction amount
Then Loan details with association "originators" has the originator with all fields attached
When Admin sets the business date to "1 February 2025"
And Customer makes "AUTOPAY" repayment on "1 February 2025" with 340 EUR transaction amount
Then Loan details with association "originators" has the originator with all fields attached
When Admin sets the business date to "1 March 2025"
And Customer makes "AUTOPAY" repayment on "1 March 2025" with 340 EUR transaction amount
Then Loan details with association "originators" has the originator with all fields attached
@TestRailId:C4665
Scenario: Verify multiple originators on a loan with add, update, and detach operations
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "First Originator"
When Admin creates a second loan originator with external ID and name "Second Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
When Admin attaches the second originator to the loan
Then Loan details with association "originators" has 2 originators attached
When Admin updates the originator name to "First Originator Updated" and status to "ACTIVE"
Then Loan details with association "originators" has originator with name "First Originator Updated"
When Admin detaches the originator from the loan
Then Loan details with association "originators" has 1 originator attached
And Loan details with association "originators" has the second originator attached
@TestRailId:C4666
Scenario: Verify loan originator persistence through undo approval
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Undo Approval Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
Then Loan details with association "originators" has the originator attached
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
Then Loan details with association "originators" has the originator attached
Then Admin can successfully undone the loan approval
Then Loan details with association "originators" has the originator attached
@TestRailId:C4667
Scenario: Verify loan originator persistence through undo disbursal
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Undo Disbursal Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
When Admin successfully disburse the loan on "1 January 2025" with "1000" EUR transaction amount
Then Loan details with association "originators" has the originator attached
When Admin successfully undo disbursal
Then Loan details with association "originators" has the originator attached
@TestRailId:C4668
Scenario: Verify loan originator persistence through loan charge-off
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Charge Off Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
When Admin successfully disburse the loan on "1 January 2025" with "1000" EUR transaction amount
Then Loan details with association "originators" has the originator attached
And Admin does charge-off the loan on "1 January 2025"
Then Loan details with association "originators" has the originator attached
@TestRailId:C4669
Scenario: Verify that originator cannot be attached or detached from disbursed loan
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Disbursed Loan Originator"
When Admin creates a second loan originator with external ID and name "Disbursed Loan Extra Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
When Admin successfully disburse the loan on "1 January 2025" with "1000" EUR transaction amount
Then Attaching the second originator to the loan should fail with status 403
And Detaching the originator from the loan should fail with status 403
@TestRailId:C4670
Scenario: Verify loan originator read operations with retrieve by external ID, list all, and template
When Admin creates a new loan originator with all fields and name "CRUD Read Originator"
Then Loan originator is retrieved successfully by external ID with all fields
And Loan originator list contains the created originator
And Loan originator template contains status options, originator type options and channel type options
@TestRailId:C4671
Scenario: Verify loan originator update operations by ID and by external ID
When Admin creates a new loan originator with all fields and name "CRUD Update Originator"
Then Loan originator is created successfully with status "ACTIVE"
When Admin updates the originator name to "Updated Name" and status to "INACTIVE"
Then Loan originator has name "Updated Name" and status "INACTIVE"
When Admin updates the originator by external ID with name "ExtId Updated Name"
Then Loan originator retrieved by external ID has name "ExtId Updated Name"
@TestRailId:C4672
Scenario: Verify loan originator delete operations by ID, by external ID, and deletion prevention when mapped to loan
When Admin creates a new loan originator with external ID and name "Delete By ID Originator"
When Admin deletes the originator by ID
Then Retrieving the deleted originator by ID should fail with status 404
When Admin creates a new loan originator with external ID and name "Delete By ExtId Originator"
When Admin deletes the originator by external ID
Then Retrieving the deleted originator by external ID should fail with status 404
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Mapped Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
Then Deleting the originator should fail with status 403
@TestRailId:C4673
Scenario: Verify loan originator CRUD permission checks with create, update, and delete denied without permissions
When Admin creates a new loan originator with external ID and name "Permission CRUD Originator"
When Admin creates new user with "ORIGINATOR_NO_CREATE" username, "ORIGINATOR_NO_CREATE_ROLE" role name and given permissions:
| READ_LOAN |
Then Created user without CREATE_LOAN_ORIGINATOR permission fails to create an originator
When Admin creates new user with "ORIGINATOR_NO_UPDATE" username, "ORIGINATOR_NO_UPDATE_ROLE" role name and given permissions:
| READ_LOAN_ORIGINATOR |
Then Created user without UPDATE_LOAN_ORIGINATOR permission fails to update the originator
When Admin creates new user with "ORIGINATOR_NO_DELETE" username, "ORIGINATOR_NO_DELETE_ROLE" role name and given permissions:
| READ_LOAN_ORIGINATOR |
Then Created user without DELETE_LOAN_ORIGINATOR permission fails to delete the originator
@TestRailId:C74521
Scenario: Verify that originator details are present in LoanAdjustTransactionBusinessEvent after repayment reversal
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Adjust Event Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
When Admin successfully disburse the loan on "1 January 2025" with "1000" EUR transaction amount
And Customer makes "AUTOPAY" repayment on "1 January 2025" with 500 EUR transaction amount
When Customer makes a repayment undo on "1 January 2025" without event check
Then LoanAdjustTransactionBusinessEvent is created with originator details in "transactionToAdjust"
@TestRailId:C74522
Scenario: Verify that originator details are present in LoanAccrualTransactionCreatedBusinessEvent after COB runs
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Accrual Event Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
When Admin successfully disburse the loan on "1 January 2025" with "1000" EUR transaction amount
When Admin adds "LOAN_SNOOZE_FEE" due date charge with "1 January 2025" due date and 10 EUR transaction amount
When Admin sets the business date to "2 January 2025"
When Admin runs inline COB job for Loan
Then LoanAccrualTransactionCreatedBusinessEvent is created with originator details on "01 January 2025"
@TestRailId:C74523
Scenario: Verify that originator details are present in LoanAdjustTransactionBusinessEvent after charge waiver reversal
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Waiver Reversal Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
When Admin successfully disburse the loan on "1 January 2025" with "1000" EUR transaction amount
When Admin adds "LOAN_SNOOZE_FEE" due date charge with "1 January 2025" due date and 10 EUR transaction amount
And Admin waives due date charge
When Customer reverses the waiver transaction on "1 January 2025"
Then LoanAdjustTransactionBusinessEvent is created with originator details in "transactionToAdjust"
@TestRailId:C74524
Scenario: Verify that no originator details are present in LoanAdjustTransactionBusinessEvent when loan has no originator attached
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new default Loan with date: "1 January 2025"
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
When Admin successfully disburse the loan on "1 January 2025" with "1000" EUR transaction amount
And Customer makes "AUTOPAY" repayment on "1 January 2025" with 500 EUR transaction amount
When Customer makes a repayment undo on "1 January 2025" without event check
Then LoanAdjustTransactionBusinessEvent is created without originator details in "transactionToAdjust"
@TestRailId:C74538
Scenario: Verify that originator details are present in LoanAdjustTransactionBusinessEvent new transaction detail after repayment adjustment
When Admin sets the business date to "1 January 2025"
When Admin creates a client with random data
When Admin creates a new loan originator with external ID and name "Adjustment Replacement Originator"
When Admin creates a new default Loan with date: "1 January 2025"
When Admin attaches the originator to the loan
And Admin successfully approves the loan on "1 January 2025" with "1000" amount and expected disbursement date on "1 January 2025"
When Admin successfully disburse the loan on "1 January 2025" with "1000" EUR transaction amount
And Customer makes "AUTOPAY" repayment on "1 January 2025" with 500 EUR transaction amount
When Customer adjusts the repayment on "1 January 2025" to 300 EUR without event check
Then LoanAdjustTransactionBusinessEvent is created with originator details in "newTransactionDetail"