@umbraco/playwright-testhelpers
Version:
Test helpers for making playwright tests for Umbraco solutions
127 lines • 6.89 kB
JavaScript
;
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