///
///
import { generateNewUser } from '../../utils/generateMockData';
describe('Active user profile email block interactions', () => {
const testUser = generateNewUser();
const editText = 'edited';
const newEmail = editText + testUser.email;
before(() => {
cy.apiRegisterAndApproveUser(testUser);
});
it('should validate email field as required', () => {
cy.apiLoginUser(testUser);
cy.visit('/account/user-profile');
cy.dataCy('email-edit-button').click();
cy.filledInputRequired('email', 'first-name');
cy.dataCy('info-edit-button').click();
});
it('should revert email to default after pressing cancel button', () => {
cy.apiLoginUser(testUser);
cy.visit('/account/user-profile');
cy.dataCy('email-edit-button').click();
cy.clearInput('email');
cy.dataCy('email').find('input').type(newEmail).blur();
cy.dataCy('email').find('input').should('have.value', newEmail);
cy.dataCy('email-save-button').should('not.be.disabled');
cy.dataCy('email-cancel-button').click();
cy.dataCy('email').find('input').should('have.value', testUser.email);
});
it('should keep save email button disabled if email did not changed after editing', () => {
cy.apiLoginUser(testUser);
cy.visit('/account/user-profile');
cy.dataCy('email-edit-button').click();
cy.clearInput('email');
cy.dataCy('email').type(testUser.email);
cy.dataCy('email-save-button').should('be.disabled');
});
it('should change user email and log him out', () => {
cy.apiLoginUser(testUser);
cy.visit('/account/user-profile');
cy.dataCy('email-edit-button').click();
cy.clearInput('email');
cy.dataCy('email').find('input').type(newEmail).blur();
cy.dataCy('email-save-button').should('not.be.disabled');
cy.dataCy('email-save-button').click();
cy.notification('User profile updated');
cy.url().should('include', 'devices/production');
});
it('should allow user to log in using new email', () => {
cy.visit('/user-login');
cy.fillUserLogin({ email: newEmail, password: testUser.password });
cy.dataCy('login-button').click();
cy.contains('Thank you for registering as a user on the marketplace');
cy.get('button').contains('Not now').click();
cy.url().should('include', '/devices/production');
cy.contains(`${testUser.firstName} ${testUser.lastName}`);
});
});