UNPKG

@umbraco/playwright-testhelpers

Version:

Test helpers for making playwright tests for Umbraco solutions

127 lines 6.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ContentDeliveryApiHelper = void 0; const test_1 = require("@playwright/test"); class ContentDeliveryApiHelper { api; constructor(api) { this.api = api; } async getAllContentItems() { const response = await this.api.get(this.api.baseUrl + '/umbraco/delivery/api/v2/content?skip=0&take=10000'); return await response.json(); } async getContentItemWithId(id, extraHeaders, expand, fields) { if (expand || fields) { let query = '?'; if (expand) { query += 'expand=' + expand; } if (fields) { query += (query.length > 1 ? '&' : '') + 'fields=' + fields; } return await this.api.get(this.api.baseUrl + '/umbraco/delivery/api/v2/content/item/' + id + query, undefined, extraHeaders); } else { return await this.api.get(this.api.baseUrl + '/umbraco/delivery/api/v2/content/item/' + id, undefined, extraHeaders); } } async getContentItemWithRoute(route, extraHeaders) { return await this.api.get(this.api.baseUrl + '/umbraco/delivery/api/v2/content/item' + route, undefined, extraHeaders); } async getContentItemsWithIds(ids, extraHeaders) { let query = '?'; for (let i = 0; i < ids.length; i++) { query += 'id=' + ids[i] + (i < ids.length - 1 ? '&' : ''); } return await this.api.get(this.api.baseUrl + '/umbraco/delivery/api/v2/content/items' + query, undefined, extraHeaders); } async getContentItemsFromAQuery(extraHeaders, fetch, filter, sort, skip, take) { let query = ''; if (fetch) { query += ' fetch=' + fetch; } if (filter) { query += ' filter=' + filter; } if (sort) { query += ' sort=' + sort; } if (skip !== undefined) { query += ' skip=' + skip; } if (take !== undefined) { query += ' take=' + take; } if (query !== '') { query = '?' + query.trim().replace(' ', '&'); } return await this.api.get(this.api.baseUrl + '/umbraco/delivery/api/v2/content' + query, undefined, extraHeaders); } async verifyBasicPropertiesForContentItem(contentName, contentItemJson) { const contentData = await this.api.document.getByName(contentName); // Verify name, createDate, updateDate, id and contentType are always included in the response (0, test_1.expect)(contentItemJson.name).toBe(contentName); (0, test_1.expect)(new Date(contentItemJson.createDate)).toEqual(new Date(contentData.variants[0].createDate)); (0, test_1.expect)(new Date(contentItemJson.createDate)).toEqual(new Date(contentData.variants[0].createDate)); (0, test_1.expect)(contentItemJson.id).toBe(contentData.id); const contentTypeData = await this.api.documentType.get(contentData.documentType.id); (0, test_1.expect)(contentItemJson.contentType).toBe(contentTypeData.alias); } async verifyRoutePropertyForContentItem(contentName, contentItemJson, expectedRoutePath) { // Verify route property if (expectedRoutePath !== undefined) { (0, test_1.expect)(contentItemJson.route.path).toBe(expectedRoutePath); } else { const contentData = await this.api.document.getByName(contentName); const contentUrl = await this.api.document.getDocumentUrl(contentData.id); (0, test_1.expect)(contentItemJson.route.path).toBe(contentUrl); } } async verifyEditorialPropertiesForInvariantContentItem(contentName, contentItemJson) { const contentData = await this.api.document.getByName(contentName); let expectedProperties = {}; for (const property of contentData.values) { expectedProperties[property.alias] = property.value; } (0, test_1.expect)(contentItemJson.properties).toEqual(expectedProperties); } async verifyCulturePropertyForContentItem(contentName, contentItemJson, isVariesByCulture = false) { const contentData = await this.api.document.getByName(contentName); if (!isVariesByCulture) { (0, test_1.expect)(contentItemJson.cultures).toEqual({}); } else { (0, test_1.expect)(Object.keys(contentItemJson.cultures).length).toBe(contentData.variants.length); } } async verifyEditorialPropertiesForContentItemWithMultiURLPicker(contentName, contentItemJson, pickerType) { const contentData = await this.api.document.getByName(contentName); const multiUrlPickerProperty = contentData.values.find((p) => p.alias === 'multiUrlPicker'); const expectedMultiUrlPickerValue = multiUrlPickerProperty.value; const actualMultiUrlPickerValue = contentItemJson.properties['multiUrlPicker']; // Verify that the multi URL picker property has the expected structure and values (0, test_1.expect)(actualMultiUrlPickerValue[0].queryString).toBe(expectedMultiUrlPickerValue[0].queryString); (0, test_1.expect)(actualMultiUrlPickerValue[0].title).toBe(expectedMultiUrlPickerValue[0].name); (0, test_1.expect)(actualMultiUrlPickerValue[0].target).toBe(expectedMultiUrlPickerValue[0].target); (0, test_1.expect)(actualMultiUrlPickerValue[0].destinationId).toBe(expectedMultiUrlPickerValue[0].unique); (0, test_1.expect)(actualMultiUrlPickerValue[0].route.path).toBe(expectedMultiUrlPickerValue[0].url); (0, test_1.expect)(actualMultiUrlPickerValue[0].linkType).toBe(pickerType); } async verifyPropertiesForMediaItem(mediaName, mediaItemJson) { const mediaData = await this.api.media.getByName(mediaName); (0, test_1.expect)(mediaItemJson.name).toBe(mediaName); (0, test_1.expect)(mediaItemJson.focalPoint).toEqual(mediaData.values[0].value.focalPoint); (0, test_1.expect)(mediaItemJson.crops).toEqual(mediaData.values[0].value.crops); (0, test_1.expect)(mediaItemJson.id).toEqual(mediaData.id); const expectedWidthValue = mediaData.values.find((p) => p.alias === 'umbracoWidth').value; (0, test_1.expect)(mediaItemJson.width).toEqual(Number(expectedWidthValue)); const expectedHeightValue = mediaData.values.find((p) => p.alias === 'umbracoHeight').value; (0, test_1.expect)(mediaItemJson.height).toEqual(Number(expectedHeightValue)); const expectedBytesValue = mediaData.values.find((p) => p.alias === 'umbracoBytes').value; (0, test_1.expect)(mediaItemJson.bytes).toEqual(Number(expectedBytesValue)); } } exports.ContentDeliveryApiHelper = ContentDeliveryApiHelper; //# sourceMappingURL=ContentDeliveryApiHelper.js.map