UNPKG

cypress-bootstrap

Version:

Cypress Bootstrap is a project scaffolding tool that sets up a Cypress automation framework with a standardized folder structure and Page Object Model (POM) design. It helps teams quickly start testing with built-in best practices and sample specs.

90 lines (84 loc) 4.35 kB
import { apiEndpoints } from '../../testbase/apiEndpoints'; import { HttpMethod, StatusCodes } from '../../support/Enums'; import { SubscriptionResponses } from '../../testbase/modals/responses/SubscriptionResponses'; import { SubscriptionRequests } from '../../testbase/modals/requests/SubscriptionRequests'; import { SUBSCRIPTION_DETAILS } from '../../testdata/dataObjects/Subscription'; import ProductTypesClient from '../../testbase/apiClients/ProductTypesClient'; import ProductsClient from '../../testbase/apiClients/ProductsClient'; import CustomersClient from '../../testbase/apiClients/CustomersClient'; import { PRODUCT_TYPE_DETAILS } from '../../testdata/dataObjects/ProductTypes'; import { PRODUCT_DETAILS } from '../../testdata/dataObjects/Product'; import { CUSTOMER_DETAILS } from '../../testdata/dataObjects/Customer'; import { ProductRequests } from '../../testbase/modals/requests/ProductRequests'; import { CustomerRequests } from '../../testbase/modals/requests/CustomerRequests'; import { ProductTypeResponses } from '../../testbase/modals/responses/ProductTypeResponses'; import { ProductResponses } from '../../testbase/modals/responses/ProductResponses'; import { CustomerResponses } from '../../testbase/modals/responses/CustomerResponses'; describe('Subscription API Test Suite', () => { it('Get all subscriptions', { tags: ['@subscriptions', '@smoke'] }, () => { cy.sendApiRequestDef(apiEndpoints.subscriptions, HttpMethod.GET, null, StatusCodes.OK).then( response => { expect(response).to.be.an('array'); expect(response).to.have.length.greaterThan(0); Cypress.env('subscriptionId', response[0].id); } ); }); it('Get subscription by Id', { tags: ['@subscriptions', '@smoke'] }, () => { cy.sendApiRequestDef( apiEndpoints.subscriptionById(Cypress.env('subscriptionId')), HttpMethod.GET, null, StatusCodes.OK ).then(response => { const responseBody = response as SubscriptionResponses.SubscriptionResponse; expect(responseBody).to.have.property('id'); expect(responseBody.id).to.eq(Cypress.env('subscriptionId')); expect(responseBody).to.have.property('productId'); expect(responseBody).to.have.property('customerId'); expect(responseBody).to.have.property('startDate'); expect(responseBody).to.have.property('status'); expect(responseBody).to.have.property('createdAt'); }); }); it('Create subscription', { tags: ['@subscriptions', '@smoke'] }, () => { // Create Product Type → Product → Customer using their clients, then create Subscription via endpoint ProductTypesClient.createProductType(PRODUCT_TYPE_DETAILS).then(ptRes => { const pt = ptRes as ProductTypeResponses.ProductTypeResponse; const productRequest = new ProductRequests.Request(); const productBody = productRequest.createProductRequest({ ...PRODUCT_DETAILS, productTypeId: pt.id, }); ProductsClient.createProduct(productBody).then(pRes => { const product = pRes as ProductResponses.ProductResponse; const customerRequest = new CustomerRequests.Request(); const customerBody = customerRequest.createCustomerRequest(CUSTOMER_DETAILS); CustomersClient.createCustomer(customerBody).then(cRes => { const customer = cRes as CustomerResponses.CustomerResponse; const subscriptionRequest = new SubscriptionRequests.Request(); const subBody = subscriptionRequest.createSubscriptionRequest({ ...SUBSCRIPTION_DETAILS, }); subBody.productId = product.id; subBody.customerId = customer.id; cy.sendApiRequestDef( apiEndpoints.subscriptions, HttpMethod.POST, null, StatusCodes.CREATED, subBody ).then(resp => { const created = resp as SubscriptionResponses.SubscriptionResponse; expect(created).to.have.property('id'); expect(created.productId).to.eq(product.id); expect(created.customerId).to.eq(customer.id); expect(created).to.have.property('startDate'); expect(created).to.have.property('status'); Cypress.env('createdSubscriptionId', created.id); }); }); }); }); }); });