129 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* global cy */
 | 
						|
const certificationUrl = '/certification/developmentuser/responsive-web-design';
 | 
						|
const projects = {
 | 
						|
  superBlock: 'responsive-web-design',
 | 
						|
  block: 'responsive-web-design-projects',
 | 
						|
  challenges: [
 | 
						|
    {
 | 
						|
      slug: 'build-a-tribute-page',
 | 
						|
      solution: 'https://codepen.io/moT01/pen/ZpJpKp'
 | 
						|
    },
 | 
						|
    {
 | 
						|
      slug: 'build-a-survey-form',
 | 
						|
      solution: 'https://codepen.io/moT01/pen/LrrjGz?editors=1010'
 | 
						|
    },
 | 
						|
    {
 | 
						|
      slug: 'build-a-product-landing-page',
 | 
						|
      solution: 'https://codepen.io/moT01/full/qKyKYL/'
 | 
						|
    },
 | 
						|
    {
 | 
						|
      slug: 'build-a-technical-documentation-page',
 | 
						|
      solution: 'https://codepen.io/moT01/full/JBvzNL/'
 | 
						|
    },
 | 
						|
    {
 | 
						|
      slug: 'build-a-personal-portfolio-webpage',
 | 
						|
      solution: 'https://codepen.io/moT01/pen/vgOaoJ'
 | 
						|
    }
 | 
						|
  ]
 | 
						|
};
 | 
						|
 | 
						|
describe('A certification,', function () {
 | 
						|
  before(() => {
 | 
						|
    cy.exec('npm run seed');
 | 
						|
    cy.login();
 | 
						|
 | 
						|
    // submit projects for certificate
 | 
						|
    const { superBlock, block, challenges } = projects;
 | 
						|
    challenges.forEach(({ slug, solution }) => {
 | 
						|
      const url = `/learn/${superBlock}/${block}/${slug}`;
 | 
						|
      cy.visit(url);
 | 
						|
      cy.get('#dynamic-front-end-form')
 | 
						|
        .get('#solution')
 | 
						|
        .type(solution, { force: true, delay: 0 });
 | 
						|
      cy.contains("I've completed this challenge")
 | 
						|
        .should('not.be.disabled')
 | 
						|
        .click();
 | 
						|
      cy.contains('Submit and go to next challenge').click().wait(1000);
 | 
						|
    });
 | 
						|
    cy.get('.react-monaco-editor-container', { timeout: 60000 });
 | 
						|
    cy.visit('/settings');
 | 
						|
 | 
						|
    // set user settings to public to claim a cert
 | 
						|
    cy.get('label:contains(Public)>input').each(el => {
 | 
						|
      if (!/toggle-active/.test(el[0].parentElement.className)) {
 | 
						|
        cy.wrap(el).click({ force: true });
 | 
						|
        cy.wait(1000);
 | 
						|
      }
 | 
						|
    });
 | 
						|
 | 
						|
    // if honest policy not accepted
 | 
						|
    cy.get('.honesty-policy button').then(btn => {
 | 
						|
      if (btn[0].innerText === 'Agree') {
 | 
						|
        btn[0].click({ force: true });
 | 
						|
        cy.wait(1000);
 | 
						|
      }
 | 
						|
    });
 | 
						|
 | 
						|
    // claim certificate
 | 
						|
    cy.get('a[href*="developmentuser/responsive-web-design"]').click({
 | 
						|
      force: true
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  describe('while viewing your own,', function () {
 | 
						|
    before(() => {
 | 
						|
      cy.login();
 | 
						|
      cy.visit(certificationUrl);
 | 
						|
    });
 | 
						|
 | 
						|
    it('should render a LinkedIn button', function () {
 | 
						|
      cy.contains('Add this certification to my LinkedIn profile')
 | 
						|
        .should('have.attr', 'href')
 | 
						|
        .and(
 | 
						|
          'match',
 | 
						|
          // eslint-disable-next-line max-len
 | 
						|
          /https:\/\/www\.linkedin\.com\/profile\/add\?startTask=CERTIFICATION_NAME&name=Responsive Web Design&organizationId=4831032&issueYear=\d\d\d\d&issueMonth=\d\d?&certUrl=https:\/\/freecodecamp\.org\/certification\/developmentuser\/responsive-web-design/
 | 
						|
        );
 | 
						|
    });
 | 
						|
 | 
						|
    it('should render a Twitter button', function () {
 | 
						|
      cy.contains('Share this certification on Twitter').should(
 | 
						|
        'have.attr',
 | 
						|
        'href',
 | 
						|
        'https://twitter.com/intent/tweet?text=I just earned the Responsive Web Design certification @freeCodeCamp! Check it out here: https://freecodecamp.org/certification/developmentuser/responsive-web-design'
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it("should be issued with today's date", () => {
 | 
						|
      const date = new Date();
 | 
						|
      const issued = `Issued\xa0${new Intl.DateTimeFormat('en-US', {
 | 
						|
        month: 'long'
 | 
						|
      }).format(date)} ${date.getDate()}, ${date.getFullYear()}`;
 | 
						|
      cy.get('[data-cy=issue-date]').should('have.text', issued);
 | 
						|
    });
 | 
						|
  });
 | 
						|
 | 
						|
  describe("while viewing someone else's,", function () {
 | 
						|
    before(() => {
 | 
						|
      cy.visit(certificationUrl);
 | 
						|
    });
 | 
						|
 | 
						|
    it('should display certificate', function () {
 | 
						|
      cy.contains('has successfully completed the freeCodeCamp.org').should(
 | 
						|
        'exist'
 | 
						|
      );
 | 
						|
      cy.contains('Responsive Web Design').should('exist');
 | 
						|
    });
 | 
						|
 | 
						|
    it('should not render a LinkedIn button', function () {
 | 
						|
      cy.contains('Add this certification to my LinkedIn profile').should(
 | 
						|
        'not.exist'
 | 
						|
      );
 | 
						|
    });
 | 
						|
 | 
						|
    it('should not render a Twitter button', function () {
 | 
						|
      cy.contains('Share this certification on Twitter').should('not.exist');
 | 
						|
    });
 | 
						|
  });
 | 
						|
});
 |