import { WorkflowPage, NDV, CredentialsModal } from '../pages'; import { getVisiblePopper } from '../utils'; const workflowPage = new WorkflowPage(); const ndv = new NDV(); const credentialsModal = new CredentialsModal(); const NO_CREDENTIALS_MESSAGE = 'Please add your credential'; const INVALID_CREDENTIALS_MESSAGE = 'Please check your credential'; const MODE_SELECTOR_LIST = 'From list'; describe('Resource Locator', () => { beforeEach(() => { workflowPage.actions.visit(); }); it('should render both RLC components in google sheets', () => { workflowPage.actions.addInitialNodeToCanvas('Manual'); workflowPage.actions.addNodeToCanvas('Google Sheets', true, true, 'Update row in sheet'); ndv.getters.resourceLocator('documentId').should('be.visible'); ndv.getters.resourceLocator('sheetName').should('be.visible'); ndv.getters .resourceLocatorModeSelector('documentId') .find('input') .should('have.value', MODE_SELECTOR_LIST); ndv.getters .resourceLocatorModeSelector('sheetName') .find('input') .should('have.value', MODE_SELECTOR_LIST); }); it('should show appropriate error when credentials are not set', () => { workflowPage.actions.addInitialNodeToCanvas('Manual'); workflowPage.actions.addNodeToCanvas('Google Sheets', true, true, 'Update row in sheet'); ndv.getters.resourceLocator('documentId').should('be.visible'); ndv.getters.resourceLocatorInput('documentId').click(); ndv.getters.resourceLocatorErrorMessage().should('contain', NO_CREDENTIALS_MESSAGE); }); it('should show create credentials modal when clicking "add your credential"', () => { workflowPage.actions.addInitialNodeToCanvas('Manual'); workflowPage.actions.addNodeToCanvas('Google Sheets', true, true, 'Update row in sheet'); ndv.getters.resourceLocator('documentId').should('be.visible'); ndv.getters.resourceLocatorInput('documentId').click(); ndv.getters.resourceLocatorErrorMessage().should('contain', NO_CREDENTIALS_MESSAGE); ndv.getters.resourceLocatorAddCredentials().click(); credentialsModal.getters.credentialsEditModal().should('be.visible'); }); it('should show appropriate error when credentials are not valid', () => { workflowPage.actions.addInitialNodeToCanvas('Manual'); workflowPage.actions.addNodeToCanvas('Google Sheets', true, true, 'Update row in sheet'); // Add oAuth credentials workflowPage.getters.nodeCredentialsSelect().click(); workflowPage.getters.nodeCredentialsCreateOption().click(); credentialsModal.getters.credentialsEditModal().should('be.visible'); credentialsModal.getters.credentialAuthTypeRadioButtons().should('have.length', 2); credentialsModal.getters.credentialAuthTypeRadioButtons().first().click(); credentialsModal.actions.fillCredentialsForm(); cy.get('.el-message-box').find('button').contains('Close').click(); ndv.getters.resourceLocatorInput('documentId').click(); ndv.getters.resourceLocatorErrorMessage().should('contain', INVALID_CREDENTIALS_MESSAGE); }); it('should show appropriate errors when search filter is required', () => { workflowPage.actions.addNodeToCanvas('Github', true, true, 'On Pull Request'); ndv.getters.resourceLocator('owner').should('be.visible'); ndv.getters.resourceLocatorInput('owner').click(); ndv.getters.resourceLocatorErrorMessage().should('contain', NO_CREDENTIALS_MESSAGE); workflowPage.getters.nodeCredentialsSelect().click(); workflowPage.getters.nodeCredentialsCreateOption().click(); credentialsModal.getters.credentialsEditModal().should('be.visible'); credentialsModal.actions.fillCredentialsForm(); ndv.getters.resourceLocatorInput('owner').click(); ndv.getters.resourceLocatorSearch('owner').type('owner'); ndv.getters.resourceLocatorErrorMessage().should('contain', INVALID_CREDENTIALS_MESSAGE); }); it('should reset resource locator when dependent field is changed', () => { workflowPage.actions.addInitialNodeToCanvas('Manual'); workflowPage.actions.addNodeToCanvas('Google Sheets', true, true, 'Update row in sheet'); ndv.actions.setRLCValue('documentId', '123'); ndv.actions.setRLCValue('sheetName', '123'); ndv.actions.setRLCValue('documentId', '321'); ndv.getters.resourceLocatorInput('sheetName').should('have.value', ''); }); // unlike RMC and remote options, RLC does not support loadOptionDependsOn it('should retrieve list options when other params throw errors', () => { workflowPage.actions.addInitialNodeToCanvas('E2e Test', { action: 'Resource Locator' }); ndv.getters.resourceLocatorInput('rlc').click(); cy.getByTestId('rlc-item').should('exist'); getVisiblePopper() .should('have.length', 1) .findChildByTestId('rlc-item') .should('have.length', 5); ndv.actions.setInvalidExpression({ fieldName: 'fieldId' }); ndv.getters.inputPanel().click(); // remove focus from input, hide expression preview ndv.getters.resourceLocatorInput('rlc').click(); cy.getByTestId('rlc-item').should('exist'); getVisiblePopper() .should('have.length', 1) .findChildByTestId('rlc-item') .should('have.length', 5); }); });