UNPKG

@realfavicongenerator/check-favicon

Version:
159 lines (158 loc) 7.87 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const node_html_parser_1 = require("node-html-parser"); const types_1 = require("./types"); const touch_icon_1 = require("./touch-icon"); const test_helper_1 = require("./test-helper"); const helper_1 = require("./helper"); const runCheckTouchIconTitleTest = (headFragment_1, output_1, ...args_1) => __awaiter(void 0, [headFragment_1, output_1, ...args_1], void 0, function* (headFragment, output, fetchDatabase = {}) { const root = headFragment ? (0, node_html_parser_1.parse)(headFragment) : null; const result = yield (0, touch_icon_1.checkTouchIconTitle)('https://example.com/', root, (0, test_helper_1.testFetcher)(fetchDatabase)); const filteredMessages = result.messages.map(m => ({ status: m.status, id: m.id })); expect({ messages: filteredMessages, appTitle: result.appTitle }).toEqual(output); }); test('checkTouchIconTitle - noHead', () => __awaiter(void 0, void 0, void 0, function* () { yield runCheckTouchIconTitleTest(null, { messages: [{ status: types_1.CheckerStatus.Error, id: types_1.MessageId.noHead, }] }); })); test('checkTouchIconTitle - noTouchWebAppTitle', () => __awaiter(void 0, void 0, void 0, function* () { yield runCheckTouchIconTitleTest('<title>Some text</title>', { messages: [{ status: types_1.CheckerStatus.Warning, id: types_1.MessageId.noTouchWebAppTitle, }] }); })); test('checkTouchIconTitle - multipleTouchWebAppTitles', () => __awaiter(void 0, void 0, void 0, function* () { yield runCheckTouchIconTitleTest(` <meta name="apple-mobile-web-app-title" content="First title"> <meta name="apple-mobile-web-app-title" content="Second title"> `, { messages: [{ status: types_1.CheckerStatus.Error, id: types_1.MessageId.multipleTouchWebAppTitles, }] }); })); test('checkTouchIconTitle - touchWebAppTitleDeclared', () => __awaiter(void 0, void 0, void 0, function* () { yield runCheckTouchIconTitleTest(` <meta name="apple-mobile-web-app-title" content="The App Name"> `, { messages: [{ status: types_1.CheckerStatus.Ok, id: types_1.MessageId.touchWebAppTitleDeclared, }], appTitle: 'The App Name' }); })); const runCheckTouchIconTest = (headFragment_2, output_2, ...args_2) => __awaiter(void 0, [headFragment_2, output_2, ...args_2], void 0, function* (headFragment, output, fetchDatabase = {}) { const root = headFragment ? (0, node_html_parser_1.parse)(headFragment) : null; const result = yield (0, touch_icon_1.checkTouchIconIcon)('https://example.com/', root, (0, test_helper_1.testFetcher)(fetchDatabase)); const filteredMessages = result.messages.map(m => ({ status: m.status, id: m.id })); expect({ messages: filteredMessages, touchIcon: result.touchIcon }).toEqual(Object.assign(Object.assign({}, output), { touchIcon: output.touchIcon || null })); }); test('checkTouchIcon - noHead', () => __awaiter(void 0, void 0, void 0, function* () { yield runCheckTouchIconTest(null, { messages: [{ status: types_1.CheckerStatus.Error, id: types_1.MessageId.noHead, }] }); })); test('checkTouchIcon - noTouchIcon', () => __awaiter(void 0, void 0, void 0, function* () { yield runCheckTouchIconTest('<title>Some text</title>', { messages: [{ status: types_1.CheckerStatus.Error, id: types_1.MessageId.noTouchIcon, }] }); })); test('checkTouchIcon - multipleTouchIcon - no size', () => __awaiter(void 0, void 0, void 0, function* () { yield runCheckTouchIconTest(` <link rel="apple-touch-icon" href="some-icon.png"> <link rel="apple-touch-icon" href="some-other-icon.png"> `, { messages: [{ status: types_1.CheckerStatus.Ok, id: types_1.MessageId.touchIconDeclared, }, { status: types_1.CheckerStatus.Error, id: types_1.MessageId.duplicatedTouchIconSizes, }] }, { 'https://example.com/some-icon.png': { status: 200, contentType: 'image/png', readableStream: null }, 'https://example.com/some-other-icon.png': { status: 200, contentType: 'image/png', readableStream: null } }); })); test('checkTouchIcon - multipleTouchIcon - specific size', () => __awaiter(void 0, void 0, void 0, function* () { yield runCheckTouchIconTest(` <link rel="apple-touch-icon" sizes="180x180" href="some-icon.png"> <link rel="apple-touch-icon" sizes="180x180" href="some-other-icon.png"> `, { messages: [{ status: types_1.CheckerStatus.Ok, id: types_1.MessageId.touchIconDeclared, }, { status: types_1.CheckerStatus.Error, id: types_1.MessageId.duplicatedTouchIconSizes, }] }, { 'https://example.com/some-icon.png': { status: 200, contentType: 'image/png', readableStream: null }, 'https://example.com/some-other-icon.png': { status: 200, contentType: 'image/png', readableStream: null } }); })); const testIcon = './fixtures/180x180.png'; test('checkTouchIcon - Regular case', () => __awaiter(void 0, void 0, void 0, function* () { yield runCheckTouchIconTest(` <link rel="apple-touch-icon" href="some-other-icon.png"> `, { messages: [{ status: types_1.CheckerStatus.Ok, id: types_1.MessageId.touchIconDeclared, }, { status: types_1.CheckerStatus.Ok, id: types_1.MessageId.touchIconDownloadable, }, { status: types_1.CheckerStatus.Ok, id: types_1.MessageId.touchIconSquare }], touchIcon: (0, helper_1.bufferToDataUrl)(yield (0, helper_1.readableStreamToBuffer)(yield (0, helper_1.filePathToReadableStream)(testIcon)), 'image/png') }, { 'https://example.com/some-other-icon.png': { status: 200, contentType: 'image/png', readableStream: yield (0, helper_1.filePathToReadableStream)(testIcon) } }); })); test('getDuplicatedSizes', () => { // No duplicates expect((0, touch_icon_1.getDuplicatedSizes)([])).toEqual([]); expect((0, touch_icon_1.getDuplicatedSizes)([undefined])).toEqual([]); expect((0, touch_icon_1.getDuplicatedSizes)(['180x180'])).toEqual([]); expect((0, touch_icon_1.getDuplicatedSizes)([undefined, '180x180'])).toEqual([]); // Duplicates expect((0, touch_icon_1.getDuplicatedSizes)(['152x152', '180x180', '180x180'])).toEqual(['180x180']); expect((0, touch_icon_1.getDuplicatedSizes)([undefined, '180x180', undefined, undefined])).toEqual([undefined]); expect((0, touch_icon_1.getDuplicatedSizes)([ '152x152', '180x180', '152x152', undefined, '152x152', undefined ])).toEqual([ '152x152', undefined ]); });