HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
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');
        });
    });
});