UNPKG

@umbraco/playwright-testhelpers

Version:

Test helpers for making playwright tests for Umbraco solutions

96 lines 5.03 kB
"use strict"; 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