From 9224643fb9d2238afae1696fdb72af1162c55b39 Mon Sep 17 00:00:00 2001 From: Demian Godon Date: Fri, 2 Feb 2024 18:50:06 -0800 Subject: [PATCH 1/2] adding fakerjs library, updating bookings_generator to optionally use, and adding test to use --- cypress/e2e/create_bookings.cy.js | 16 ++++++++ cypress/utils/bookings_generator.js | 60 +++++++++++++++++++---------- package.json | 1 + 3 files changed, 57 insertions(+), 20 deletions(-) diff --git a/cypress/e2e/create_bookings.cy.js b/cypress/e2e/create_bookings.cy.js index 578eff1..67a2b99 100644 --- a/cypress/e2e/create_bookings.cy.js +++ b/cypress/e2e/create_bookings.cy.js @@ -19,6 +19,22 @@ describe("Create Bookings spec", () => { }); }); + it("create valid booking with faker generated data", () => { + let newbooking = bookings_generator.generate_booking(true); + bookings_wrapper.create_booking(newbooking).then((response) => { + expect(response.status).to.be.equal(200); + expect(response.body.booking.firstname).to.be.deep.equal( + newbooking.firstname, + ); + expect(response.body).to.have.property("bookingid"); + cy.log("returned bookingid: " + response.body.bookingid); + bookings_wrapper + .get_booking(response.body.bookingid) + .its("status") + .should("equal", 200); + }); + }); + it("First name is null should have error response", () => { let newbooking = bookings_generator.generate_booking(); newbooking.firstname = null; diff --git a/cypress/utils/bookings_generator.js b/cypress/utils/bookings_generator.js index 074a14b..6bf0f38 100644 --- a/cypress/utils/bookings_generator.js +++ b/cypress/utils/bookings_generator.js @@ -1,4 +1,6 @@ +import { use } from "chai"; import bookings_helpers from "../utils/bookings_helpers"; +import { faker } from "@faker-js/faker"; let firstNames = [ "Emily", @@ -49,30 +51,46 @@ let lastNames = [ let needs = ["breakfast", "lunch", "early checkin", "late checkout", null]; const bookings_generator = { - generate_firstname: function () { - return firstNames[Cypress._.random(firstNames.length - 1)]; + generate_firstname: function (useFaker = false) { + return useFaker + ? faker.person.firstName() + : firstNames[Cypress._.random(firstNames.length - 1)]; }, - generate_lastname: function () { - return lastNames[Cypress._.random(lastNames.length - 1)]; + generate_lastname: function (useFaker = false) { + return useFaker + ? faker.person.lastName() + : lastNames[Cypress._.random(lastNames.length - 1)]; }, - generate_price: function () { - return Cypress._.random(50, 250); + generate_price: function (useFaker = false) { + return useFaker + ? faker.number.int({ min: 50, max: 250 }) + : Cypress._.random(50, 250); }, - generate_boolean: function () { - return Cypress._.random(1) === 1; + generate_boolean: function (useFaker = false) { + return useFaker ? faker.datatype.boolean() : Cypress._.random(1) === 1; }, - generate_bookingdates: function () { + generate_bookingdates: function (useFaker = false) { const checkin = new Date(); - checkin.setDate(checkin.getDate() + Cypress._.random(1, 180)); + checkin.setDate( + checkin.getDate() + + (useFaker + ? faker.number.int({ min: 1, max: 180 }) + : Cypress._.random(1, 180)), + ); cy.log("checkin: " + checkin.toDateString()); let checkinString = bookings_helpers.convertToBookingDateString(checkin); cy.log("checkinString: " + checkinString); const checkout = new Date( - checkin.setDate(checkin.getDate() + Cypress._.random(1, 14)), + checkin.setDate( + checkin.getDate() + + (useFaker + ? faker.number.int({ min: 1, max: 14 }) + : Cypress._.random(1, 14)), + ), ); cy.log("checkout: " + checkout.toDateString()); let checkoutString = bookings_helpers.convertToBookingDateString(checkout); @@ -85,18 +103,20 @@ const bookings_generator = { return bookingdates; }, - generate_additionalneeds: function () { - return needs[Cypress._.random(needs.length - 1)]; + generate_additionalneeds: function (useFaker = false) { + return useFaker + ? faker.helpers.arrayElement(needs) + : needs[Cypress._.random(needs.length - 1)]; }, - generate_booking: function () { + generate_booking: function (useFaker = false) { const booking = { - firstname: this.generate_firstname(), - lastname: this.generate_lastname(), - depositpaid: this.generate_boolean(), - totalprice: this.generate_price(), - bookingdates: this.generate_bookingdates(), - additionalneeds: this.generate_additionalneeds(), + firstname: this.generate_firstname(useFaker), + lastname: this.generate_lastname(useFaker), + depositpaid: this.generate_boolean(useFaker), + totalprice: this.generate_price(useFaker), + bookingdates: this.generate_bookingdates(useFaker), + additionalneeds: this.generate_additionalneeds(useFaker), }; return booking; }, diff --git a/package.json b/package.json index 06ed8c7..aae2f74 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "xml2js": "^0.4.23" }, "devDependencies": { + "@faker-js/faker": "^8.4.0", "chai": "^4.3.7", "cypress": "^13.6.2", "eslint": "^8.56.0", From c3e56e84a87915fd0d037735cc3e6ff5feda143f Mon Sep 17 00:00:00 2001 From: Demian Godon Date: Fri, 2 Feb 2024 18:51:38 -0800 Subject: [PATCH 2/2] remove extraneous import --- cypress/utils/bookings_generator.js | 1 - 1 file changed, 1 deletion(-) diff --git a/cypress/utils/bookings_generator.js b/cypress/utils/bookings_generator.js index 6bf0f38..83ba982 100644 --- a/cypress/utils/bookings_generator.js +++ b/cypress/utils/bookings_generator.js @@ -1,4 +1,3 @@ -import { use } from "chai"; import bookings_helpers from "../utils/bookings_helpers"; import { faker } from "@faker-js/faker";