From 4d559162deddb57e15e3c704cb9581b2ba6ad643 Mon Sep 17 00:00:00 2001 From: kundan <kdn.rthr@gmail.com> Date: Fri, 24 Jan 2025 11:22:45 +0530 Subject: [PATCH] feat(OPEN-SPARK): added cypress test cases for admin flow --- apps/open-spark/pages/adminDashboard.tsx | 19 ++++- cypress/e2e/open-spak/adminFlow.cy.ts | 76 +++++++++++++++++++ .../myTrade/get-pending-empty-trades.json | 1 + .../OpenSpark/myTrade/get-pending-trades.json | 58 ++++++++++++++ .../OpenSpark/myTrade/start-trade.json | 15 ++++ .../OpenSpark/myTrade/start-trades.json | 0 shared/dataTestIds.ts | 16 +++- 7 files changed, 182 insertions(+), 3 deletions(-) create mode 100644 cypress/e2e/open-spak/adminFlow.cy.ts create mode 100644 cypress/fixtures/OpenSpark/myTrade/get-pending-empty-trades.json create mode 100644 cypress/fixtures/OpenSpark/myTrade/get-pending-trades.json create mode 100644 cypress/fixtures/OpenSpark/myTrade/start-trade.json create mode 100644 cypress/fixtures/OpenSpark/myTrade/start-trades.json diff --git a/apps/open-spark/pages/adminDashboard.tsx b/apps/open-spark/pages/adminDashboard.tsx index c633cbc3b..43a5d0a0b 100644 --- a/apps/open-spark/pages/adminDashboard.tsx +++ b/apps/open-spark/pages/adminDashboard.tsx @@ -14,6 +14,7 @@ import Cookies from 'js-cookie' import BecknButton from '@beckn-ui/molecules/src/components/button/Button' import { MdOutlineRefresh } from 'react-icons/md' import { setTradeExecutionProcessed, UserRootState } from '@store/user-slice' +import { testIds } from '@shared/dataTestIds' interface PendingTrades { id: number @@ -130,6 +131,7 @@ const LockDemand = () => { > <Box> <Typography + dataTest={testIds.total_aggregated_demand} text="Total Aggregated demand" fontWeight="600" fontSize="16px" @@ -142,20 +144,25 @@ const LockDemand = () => { className="hideScroll" marginTop={'1rem'} > - <Table variant="simple"> + <Table + variant="simple" + data-test={testIds.total_aggregated_table} + > <Thead + data-test={testIds.total_aggregated_table_head} position="sticky" top={0} bg="white" zIndex={1} > - <Tr> + <Tr data-test={testIds.total_aggregated_table_row}> <Th padding="0"> <Box display="flex" alignItems="center" placeContent={'center'} width={'64px'} + data-test={testIds.total_aggregated_table_unit} > Unit </Box> @@ -166,6 +173,7 @@ const LockDemand = () => { alignItems="center" placeContent={'center'} width={'130px'} + data-test={testIds.total_aggregated_table_consumer} > Consumer </Box> @@ -176,6 +184,7 @@ const LockDemand = () => { alignItems="center" placeContent={'center'} width={'70px'} + data-test={testIds.total_aggregated_table_date} > Date </Box> @@ -205,6 +214,7 @@ const LockDemand = () => { padding="0" > <Typography + dataTest={testIds.total_aggregated_item_quantity} text={item.quantity} style={{ display: '-webkit-box', @@ -223,6 +233,7 @@ const LockDemand = () => { padding="0" > <Typography + dataTest={testIds.total_aggregated_item_name} text={item.name} style={{ display: '-webkit-box', @@ -241,6 +252,7 @@ const LockDemand = () => { padding="0" > <Typography + dataTest={testIds.total_aggregated_item_date} text={formatDate(item.createdAt, 'yyyy-MM-dd')} style={{ display: '-webkit-box', @@ -256,6 +268,7 @@ const LockDemand = () => { </Td> <Td borderBottom={'1px dotted #004e92!important'}> <Image + data-test={testIds.total_aggregated_nav_img} src={NavIcon} alt="nav_icon" width={'6px'} @@ -267,6 +280,7 @@ const LockDemand = () => { <Tr> <Td colSpan={5}> <Typography + dataTest="noRows" text="No rows" fontWeight="600" style={{ textAlign: 'center' }} @@ -279,6 +293,7 @@ const LockDemand = () => { </Box> </Box> <BecknButton + dataTest={testIds.total_aggregated_lock_demand} children={'Lock Demand'} isLoading={tradeExecutionProcessed} handleClick={handleOnLockDemand} diff --git a/cypress/e2e/open-spak/adminFlow.cy.ts b/cypress/e2e/open-spak/adminFlow.cy.ts new file mode 100644 index 000000000..e0ea18f8c --- /dev/null +++ b/cypress/e2e/open-spak/adminFlow.cy.ts @@ -0,0 +1,76 @@ +import { testIds } from '../../../shared/dataTestIds' +describe('Admin Flow', () => { + context('Should Render Empty admin page when there is no response in get pending trades', () => { + before(() => { + cy.clearAllLocalStorage() + cy.clearAllCookies() + cy.visit(testIds.url_base) + cy.getByData('consumer_button').click() + cy.getByData(testIds.auth_inputEmail).type(testIds.user_validEmail_admin_flow) + cy.getByData(testIds.auth_inputEmail).should('have.value', testIds.user_validEmail_admin_flow) + cy.getByData(testIds.auth_inputPassword).type(testIds.user_validPassword_admin_flow) + cy.getByData(testIds.auth_inputPassword).should('have.value', testIds.user_validPassword_admin_flow) + cy.getByData(testIds.auth_loginButton).click() + }) + it('should render empty admin page ', () => { + cy.url().should('include', testIds.url_home) + cy.intercept('GET', '/beckn-trade-bap/get-pending-trades', { + fixture: 'OpenSpark/myTrade/get-pending-empty-trades.json' + }).as('emptyPendingTrade') + cy.wait('@emptyPendingTrade') + }) + it('should render lock demand button diabled ', () => { + cy.getByData(testIds.total_aggregated_lock_demand).should('be.disabled') + cy.getByData(testIds.total_aggregated_demand).should('be.visible') + cy.getByData(testIds.total_aggregated_table).should('be.visible') + cy.getByData(testIds.total_aggregated_table_head).should('be.visible') + cy.getByData('noRows').should('be.visible') + cy.getByData('noRows').should('contain.text', 'No rows') + }) + }) + context('Should Render admin page when there is response in get pending trades', () => { + before(() => { + cy.clearAllLocalStorage() + cy.clearAllCookies() + cy.visit(testIds.url_base) + cy.getByData('consumer_button').click() + cy.getByData(testIds.auth_inputEmail).type(testIds.user_validEmail_admin_flow) + cy.getByData(testIds.auth_inputEmail).should('have.value', testIds.user_validEmail_admin_flow) + cy.getByData(testIds.auth_inputPassword).type(testIds.user_validPassword_admin_flow) + cy.getByData(testIds.auth_inputPassword).should('have.value', testIds.user_validPassword_admin_flow) + cy.getByData(testIds.auth_loginButton).click() + }) + it('should render admin page ', () => { + cy.url().should('include', testIds.url_home) + cy.intercept('GET', '/beckn-trade-bap/get-pending-trades', { + fixture: 'OpenSpark/myTrade/get-pending-trades.json' + }).as('getPendingTrade') + cy.wait('@getPendingTrade') + }) + it('should display all the fields and button', () => { + cy.getByData(testIds.total_aggregated_demand).should('be.visible') + cy.getByData(testIds.total_aggregated_table).should('be.visible') + cy.getByData(testIds.total_aggregated_table_head).should('be.visible') + cy.getByData(testIds.total_aggregated_table_row).should('be.visible') + cy.getByData(testIds.total_aggregated_table_unit).should('be.visible') + cy.getByData(testIds.total_aggregated_table_consumer).should('be.visible') + cy.getByData(testIds.total_aggregated_table_date).should('be.visible') + cy.getByData(testIds.total_aggregated_item_quantity).should('be.visible') + cy.getByData(testIds.total_aggregated_item_name).should('be.visible') + cy.getByData(testIds.total_aggregated_item_date).should('be.visible') + cy.getByData(testIds.total_aggregated_nav_img).should('be.visible') + cy.getByData(testIds.total_aggregated_lock_demand).should('be.visible') + }) + it('should render lock demand button enable and user click it for lock demand ', () => { + cy.intercept('POST', '/beckn-trade-bap/start-trade', { + fixture: 'OpenSpark/myTrade/start-trade.json' + }).as('start-trade') + cy.getByData(testIds.total_aggregated_lock_demand).click() + cy.wait('@start-trade') + cy.intercept('GET', '/beckn-trade-bap/get-pending-trades', { + fixture: 'OpenSpark/myTrade/get-pending-empty-trades.json' + }).as('emptyPendingTrade') + cy.visit(testIds.url_base) + }) + }) +}) diff --git a/cypress/fixtures/OpenSpark/myTrade/get-pending-empty-trades.json b/cypress/fixtures/OpenSpark/myTrade/get-pending-empty-trades.json new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/cypress/fixtures/OpenSpark/myTrade/get-pending-empty-trades.json @@ -0,0 +1 @@ +[] diff --git a/cypress/fixtures/OpenSpark/myTrade/get-pending-trades.json b/cypress/fixtures/OpenSpark/myTrade/get-pending-trades.json new file mode 100644 index 000000000..900b3f119 --- /dev/null +++ b/cypress/fixtures/OpenSpark/myTrade/get-pending-trades.json @@ -0,0 +1,58 @@ +[ + { + "id": 206, + "unit": "kwh", + "item_name": "energy", + "trusted_source": false, + "cred_required": false, + "recurring": false, + "domain": "uei:p2p_trading", + "status": "RECEIVED", + "type": "BUY", + "quantity": 100, + "price": 0, + "createdAt": "2025-01-23T10:29:20.570Z", + "updatedAt": "2025-01-23T10:29:20.570Z", + "publishedAt": "2025-01-23T10:29:20.566Z", + "profile": { + "id": 128, + "name": "Leelatai Kalbhor", + "address": "pune", + "createdAt": "2024-12-04T08:29:52.567Z", + "updatedAt": "2025-01-15T04:00:25.459Z", + "publishedAt": "2025-01-13T06:24:00.090Z", + "phone": "9718329616", + "zip_code": null, + "utility_name": "MSEB", + "customer_id": "12345" + } + }, + { + "id": 207, + "unit": "kwh", + "item_name": "energy", + "trusted_source": false, + "cred_required": false, + "recurring": false, + "domain": "uei:p2p_trading", + "status": "RECEIVED", + "type": "BUY", + "quantity": 50, + "price": 0, + "createdAt": "2025-01-23T10:29:27.344Z", + "updatedAt": "2025-01-23T10:29:27.344Z", + "publishedAt": "2025-01-23T10:29:27.339Z", + "profile": { + "id": 128, + "name": "Leelatai Kalbhor", + "address": "pune", + "createdAt": "2024-12-04T08:29:52.567Z", + "updatedAt": "2025-01-15T04:00:25.459Z", + "publishedAt": "2025-01-13T06:24:00.090Z", + "phone": "9718329616", + "zip_code": null, + "utility_name": "MSEB", + "customer_id": "12345" + } + } +] diff --git a/cypress/fixtures/OpenSpark/myTrade/start-trade.json b/cypress/fixtures/OpenSpark/myTrade/start-trade.json new file mode 100644 index 000000000..c4c90bbd0 --- /dev/null +++ b/cypress/fixtures/OpenSpark/myTrade/start-trade.json @@ -0,0 +1,15 @@ +{ + "message": "Trade processing completed!", + "data": [ + { + "tradeId": 206, + "status": "SUCCESS", + "message": "Trade executed successfully for Trade ID: 206" + }, + { + "tradeId": 207, + "status": "SUCCESS", + "message": "Trade executed successfully for Trade ID: 207" + } + ] +} diff --git a/cypress/fixtures/OpenSpark/myTrade/start-trades.json b/cypress/fixtures/OpenSpark/myTrade/start-trades.json new file mode 100644 index 000000000..e69de29bb diff --git a/shared/dataTestIds.ts b/shared/dataTestIds.ts index 36d8bc097..c0d1c9d3e 100644 --- a/shared/dataTestIds.ts +++ b/shared/dataTestIds.ts @@ -674,6 +674,8 @@ const testIds = { user_validPassword_consumer_flow: 'Test@123', user_validEmail_producer_flow: 'qqq@gmail.com', user_validPassword_producer_flow: 'Test@123', + user_validEmail_admin_flow: 'admin@becknprotocol.io', + user_validPassword_admin_flow: 'Test@123', total_energy_text: 'total_energy_text', total_energy_input: 'total_energy_input', total_energy_unit: 'total_energy_unit', @@ -723,6 +725,18 @@ const testIds = { document_uplaod_date: 'document-uplaod-date', delete_Icon: 'delete-Icon', trade_details_date: 'trade-details-date', - trade_details_Id: 'trade-details-Id' + trade_details_Id: 'trade-details-Id', + total_aggregated_demand: 'total_aggregated_demand', + total_aggregated_table: 'total_aggregated_table', + total_aggregated_table_head: 'total_aggregated_table_head', + total_aggregated_table_row: 'total_aggregated_table_row', + total_aggregated_table_unit: 'total_aggregated_table_unit', + total_aggregated_table_consumer: 'total_aggregated_table_consumer', + total_aggregated_table_date: 'total_aggregated_table_date', + total_aggregated_item_quantity: 'total_aggregated_item_quantity', + total_aggregated_item_name: 'total_aggregated_item_name', + total_aggregated_item_date: 'total_aggregated_item_date', + total_aggregated_nav_img: 'total_aggregated_nav_img', + total_aggregated_lock_demand: 'total_aggregated_lock_demand' } export { testIds }