@umbraco/playwright-testhelpers
Version:
Test helpers for making playwright tests for Umbraco solutions
96 lines • 5.03 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.MediaDeliveryApiHelper = void 0;
const test_1 = require("@playwright/test");
class MediaDeliveryApiHelper {
api;
constructor(api) {
this.api = api;
}
async getMediaItemWithId(id) {
return await this.api.get(this.api.baseUrl + '/umbraco/delivery/api/v2/media/item/' + id);
}
async getMediaItemWithPath(path) {
return await this.api.get(this.api.baseUrl + '/umbraco/delivery/api/v2/media/item' + path);
}
async getMediaItemsWithIds(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/media/items' + query);
}
async getMediaItemsFromAQuery(fetch, filter, sort, skip, take) {
let query = '?';
if (!fetch) {
return null;
}
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;
}
return await this.api.get(this.api.baseUrl + '/umbraco/delivery/api/v2/media' + query);
}
async verifyDefaultMediaItemJson(mediaName, mediaItemJson, mediaPath, mediaTypeName) {
const mediaData = await this.api.media.getByName(mediaName);
// Verify path, createDate, updateDate, id, name, and mediaType are always included in the response
(0, test_1.expect)(mediaItemJson.path).toBe(mediaPath);
(0, test_1.expect)(new Date(mediaItemJson.createDate)).toEqual(new Date(mediaData.variants[0].createDate));
(0, test_1.expect)(new Date(mediaItemJson.updateDate)).toEqual(new Date(mediaData.variants[0].createDate));
(0, test_1.expect)(mediaItemJson.id).toBe(mediaData.id);
(0, test_1.expect)(mediaItemJson.name).toBe(mediaName);
const mediaTypeData = await this.api.mediaType.getByName(mediaTypeName);
(0, test_1.expect)(mediaItemJson.mediaType).toBe(mediaTypeData.alias);
// Verify url, extension and the size in bytes are included for all files (not for folders).
if (mediaTypeName !== 'Folder') {
const mediaSrc = mediaData.values[0].value.src ? mediaData.values[0].value.src : '';
(0, test_1.expect)(mediaItemJson.url).toBe(mediaSrc);
const mediaExtension = mediaData.values.find(x => x.alias === 'umbracoExtension')?.value || null;
(0, test_1.expect)(mediaItemJson.extension).toBe(mediaExtension);
const mediaBytes = mediaData.values.find(x => x.alias === 'umbracoBytes')?.value || null;
(0, test_1.expect)(mediaItemJson.bytes).toBe(mediaBytes ? Number(mediaBytes) : null);
}
else {
(0, test_1.expect)(mediaItemJson.url).toBe('');
(0, test_1.expect)(mediaItemJson.extension).toBeNull();
(0, test_1.expect)(mediaItemJson.bytes).toBeNull();
}
// Verify width and height (in pixels), focalPoint and crops are included for most images.
if (mediaTypeName === 'Image') {
const mediaWidth = mediaData.values.find(x => x.alias === 'umbracoWidth')?.value;
const mediaHeight = mediaData.values.find(x => x.alias === 'umbracoHeight')?.value;
(0, test_1.expect)(mediaItemJson.width).toBe(mediaWidth ? Number(mediaWidth) : null);
(0, test_1.expect)(mediaItemJson.height).toBe(mediaWidth ? Number(mediaHeight) : null);
(0, test_1.expect)(mediaItemJson.focalPoint).toBe(mediaData.values[0].value.focalPoint);
(0, test_1.expect)(mediaItemJson.crops).toEqual(mediaData.values[0].value.crops);
}
else {
(0, test_1.expect)(mediaItemJson.width).toBeNull();
(0, test_1.expect)(mediaItemJson.height).toBeNull();
(0, test_1.expect)(mediaItemJson.focalPoint).toBeNull();
(0, test_1.expect)(mediaItemJson.crops).toBeNull();
}
}
async verifyMultipleMediaItemsJson(mediaNames, mediaItemsJson, mediaPaths, mediaTypeNames) {
(0, test_1.expect)(mediaItemsJson.length).toBe(mediaNames.length);
for (let i = 0; i < mediaNames.length; i++) {
await this.verifyDefaultMediaItemJson(mediaNames[i], mediaItemsJson[i], mediaPaths[i], mediaTypeNames[i]);
}
}
async doesMediaItemWithIdContainValues(id, mediaName, mediaTypeName, url) {
const mediaItem = await this.getMediaItemWithId(id);
const mediaItemJson = await mediaItem.json();
return mediaItemJson.name === mediaName && mediaItemJson.mediaType === mediaTypeName && mediaItemJson.url === url;
}
}
exports.MediaDeliveryApiHelper = MediaDeliveryApiHelper;
//# sourceMappingURL=MediaDeliveryApiHelper.js.map
;