File: D:/HostingSpaces/SBogers10/ste.komma.pro/tests/Cypress/integration/site/registration_spec.js
/// <reference types="Cypress" />
import faker from 'faker'
describe('Register', function() {
it('Test registration fail', function() {
cy.clearCookies();
cy.visit('/register');
cy.url().should('include', '/register');
cy.get('[data-test=first_name]').should('exist');
cy.get('[data-test=last_name]').should('exist');
cy.get('[data-test=register]').click();
cy.get('[data-test=first_name-error]').should('exist');
cy.get('[data-test=last_name-error]').should('exist');
cy.get('[data-test=email-error]').should('exist');
});
it('Should be able to register', function() {
cy.fixture('site_users').as('siteUsersJson').then((json) => {
let isMale = faker.random.boolean();
let countries = {
'United Kingdom': {
"languages" : ['English', 'Cymraeg', 'Gàidhlig']
},
'Nederland': {
"languages" : ["Nederlands", "Frysk"]
},
'Deutschland': {
"languages" : ["Deutsch"]
},
};
let countryNames = Object.keys(countries);
let randomCountry = countryNames[faker.random.number({min: 0, max: (countryNames.length - 1)})];
let user = {
"first_name": faker.name.firstName(isMale),
"last_name": faker.name.lastName(isMale),
"phone": faker.phone.phoneNumber(),
"street": faker.address.streetName(),
"house_number": faker.random.number(),
"postal_code": faker.address.zipCode(),
"city": faker.address.city(),
"gender": isMale ? 'Male' : 'Female',
"country": randomCountry,
"language": countries[randomCountry]['languages'][faker.random.number({min: 0, max: (countries[randomCountry]['languages'].length - 1)})],
"email": faker.internet.email(),
"password": faker.internet.password()
};
cy.clearCookies();
cy.visit('/register');
cy.url().should('include', '/register');
cy.get('[data-test=first_name]').type(user.first_name);
cy.get('[data-test=last_name]').type(user.last_name);
cy.get('[data-test=email]').type(user.email);
cy.get('[data-test=country]').select('België');
cy.get('[data-test=language]').should('be.visible');
cy.get('[data-test=language]').contains('Nederlands');
cy.get('[data-test=language]').contains('Français');
cy.get('[data-test=language]').contains('Deutsch');
cy.get('[data-test=country]').select('Deutschland');
cy.get('[data-test=language]').should('not.be.visible'); //Germany has 1 language. That is why the select should not be visible.
cy.get('[data-test=country]').select('België');
cy.get('[data-test=language]').should('be.visible');
cy.get('[data-test=language]').contains('Nederlands');
cy.get('[data-test=language]').contains('Français');
cy.get('[data-test=language]').contains('Deutsch');
cy.get('[data-test=accept_legal]').check();
cy.get('[data-test=register]').click();
cy.url().should('include', '/registered');
});
});
});