Test Scenario: Currency Pair: duplicate and inverted pair_code rejected on create
Table of Contents
- Scenario Info
- Steps
- Connect and log in
- Attempt to create a duplicate pair via matching base/quote
- Confirm the duplicate error is clear and the save is blocked
- Confirm the existing pair's data is unchanged after the duplicate attempt
- Attempt to create the inverted pair (swap base/quote)
- Confirm the inverted-pair error names both pairs and explains why
- Confirm a genuinely new pair still saves normally
- Results
- Notes
This page documents a test scenario verifying Creating a Currency Pair with an already-used pair_code silently versions the existing row in Currency pair support in reference data. It is filled in with the target dialog and checklist of steps before testing starts; the QA Validation Runner panel rewrites * Results in place on save.
Scenario Info
| Field | Value |
|---|---|
| Verifies task | Creating a Currency Pair with an already-used pair_code silently versions the existing row |
| Parent story | Currency pair support in reference data |
| Target dialog | CurrencyPairDetailDialog |
| Clients | |
| State | PENDING |
Steps
Connect and log in
Log in as tenant_admin@barclays_plc (password Secure-Password-123)
and select the BARCLAYS PLC party. If the DB was recreated since,
re-run
compass shell -f projects/ores.shell/scripts/library/provisioning/barclays_system_provision.ores
to restore this starting state first.
Result
| Field | Value |
|---|---|
| Status | PASS |
Attempt to create a duplicate pair via matching base/quote
Open Currency Pairs. Note an existing pair's Base and Quote currency (e.g. the first row in the grid). Click Add, pick that same Base Currency and Quote Currency combination, fill in Classification, and click Save.
Result
| Field | Value |
|---|---|
| Status | PASS |
Confirm the duplicate error is clear and the save is blocked
Confirm a "Duplicate Pair" error dialog appears naming the colliding pair_code, and that the dialog stays open (save did not go through) rather than silently closing.
Result
| Field | Value |
|---|---|
| Status | PASS |
Confirm the existing pair's data is unchanged after the duplicate attempt
Close the Add dialog (Cancel/Close). Reopen the pair you tried to duplicate (double-click it in the list). Confirm its data (Base, Quote, Classification, Version) is unchanged from before the attempt — no phantom version bump.
Result
| Field | Value |
|---|---|
| Status | PASS |
Attempt to create the inverted pair (swap base/quote)
Click Add again. This time pick the swapped Base/Quote for the same pair noted earlier (e.g. if EUR/USD exists, pick Base=USD, Quote=EUR). Fill in Classification and click Save.
Result
| Field | Value |
|---|---|
| Status | PASS |
Confirm the inverted-pair error names both pairs and explains why
Confirm an "Inverted Pair" error dialog appears, naming both the pair you tried to create and the existing pair it's the inverse of, and explaining that only one direction is allowed per FX market convention (with guidance to delete the existing pair first if the inverse is really wanted).
Result
| Field | Value |
|---|---|
| Status | PASS |
Confirm a genuinely new pair still saves normally
Click Add again, pick a Base/Quote combination that does not yet exist in either direction, fill in Classification, and Save. Confirm it saves successfully with no error, and appears in the list.
Result
| Field | Value |
|---|---|
| Status | FAIL |
| Notes | save works but no eventing. something is wrong with eventing. |
Results
| Field | Value |
|---|---|
| Status | FAILED |
| Completed at | 2026-07-09T19:00:28Z |
| Branch | feature/test-ore-fx-convention-import |
| Commit | 40740e790 |
| Worktree | prime_origin |