@umbraco/playwright-testhelpers
Version:
Test helpers for making playwright tests for Umbraco solutions
96 lines • 4.98 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) {
return await this.api.get(this.api.baseUrl + '/umbraco/delivery/api/v2/content/item/' + id);
}
async getContentItemWithRoute(route) {
return await this.api.get(this.api.baseUrl + '/umbraco/delivery/api/v2/content/item' + route);
}
async getContentItemsWithIds(ids) {
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);
}
async getContentItemsFromAQuery(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);
}
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);
// Verify route property
const contentUrl = await this.api.document.getDocumentUrl(contentData.id);
(0, test_1.expect)(contentItemJson.route.path).toBe(contentUrl);
}
async verifyEditorialPropertiesForContentItem(contentName, contentItemJson, isVariesByCulture = false) {
const contentData = await this.api.document.getByName(contentName);
let expectedProperties = {};
if (!isVariesByCulture) {
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);
}
}
exports.ContentDeliveryApiHelper = ContentDeliveryApiHelper;
//# sourceMappingURL=ContentDeliveryApiHelper.js.map
;