///
///
import { generateNewOrg, generateNewUser, generateNewDevice } from '../../utils/generateMockData';
describe('Register device form validation', () => {
const testUser = generateNewUser();
const testOrg = generateNewOrg(testUser);
const testDevice = generateNewDevice(testUser);
before(() => {
cy.apiRegisterAndApproveUser(testUser);
cy.apiRegisterAndApproveOrg(testUser, testOrg);
cy.apiRegisterAndApproveDevice(testUser, testDevice);
cy.apiLoginUser(testUser);
cy.visit('/');
cy.dataCy('settings-menu').click();
cy.dataCy('user-profile').click();
cy.dataCy('exchange-address-create-button').click();
});
beforeEach(() => {
cy.apiLoginUser(testUser);
cy.visit('/devices/add');
});
it('should require fields', () => {
cy.filledInputRequired('facilityName', 'capacity');
cy.filledInputRequired('capacity', 'address');
cy.dataCy('latitude').find('input').focus().blur().focus().blur();
cy.contains('Latitude is a required field');
cy.dataCy('longitude').find('input').focus().blur().focus().blur();
cy.contains('Longitude is a required field');
});
it('should not be able to choose multiple device types', () => {
cy.dataCy('device-type').find('input').click().type('Sol');
cy.contains('Solar').click();
cy.dataCy('device-type').find('input').eq(0).click();
cy.contains('Wind').click();
cy.dataCy('device-type').find('input').eq(1).click();
cy.contains('Solar - Photovoltaic').click();
cy.dataCy('device-type').find('input').eq(1).click();
cy.contains('Solar - Concentration').click();
cy.dataCy('device-type').find('input').eq(2).click();
cy.contains('Solar - Photovoltaic - Roof mounted').click();
cy.dataCy('device-type').find('input').eq(2).click();
cy.contains('Solar - Photovoltaic - Ground mounted').click();
cy.dataCy('device-type')
.find('[class*="MuiChip-label"]')
.eq(0)
.should(($chips) => {
expect($chips).to.length(1);
expect($chips.eq(0)).to.contain('Solar');
});
cy.dataCy('device-type')
.find('[class*="MuiChip-label"]')
.eq(1)
.should(($chips) => {
expect($chips).to.length(1);
expect($chips.eq(0)).to.contain('Solar - Photovoltaic');
});
cy.dataCy('device-type')
.find('[class*="MuiChip-label"]')
.eq(2)
.should(($chips) => {
expect($chips).to.length(1);
expect($chips.eq(0)).to.contain('Solar - Photovoltaic - Roof mounted');
});
});
it('should upload single Device Image', () => {
cy.attachDocument('device-upload-image');
cy.contains('Images have been uploaded.');
});
it('should upload 10 Device Images', () => {
cy.attachMultipleDocuments('device-upload-image', 10);
cy.contains('Images have been uploaded.');
});
it('should show error on upload 11 Device Images', () => {
cy.attachMultipleDocuments('device-upload-image', 11);
cy.contains("Please select up to 10 images. You've selected 11.");
cy.get('.toast').click();
});
});