UNPKG

@t7/utils

Version:

Utility methods for T7 components.

90 lines (83 loc) 2.35 kB
"use strict"; var _ = require("./"); // Dependencies. // Describe test. describe('save', function () { // ============= // Unhappy path. // ============= Object.defineProperty(window, 'Blob', { writable: true, value: null }); Object.defineProperty(window.URL, 'createObjectURL', { writable: true, value: null }); Object.defineProperty(document, 'createElement', { writable: true, value: null }); Object.defineProperty(document, 'createEvent', { writable: true, value: null }); // Fire, for coverage. (0, _.save)(); // ============= // Dummy values. // ============= var EXAMPLE_BLOB = 'EXAMPLE_BLOB'; var EXAMPLE_NAME = 'FILE_NAME.json'; var EXAMPLE_TYPE = 'text/json'; var EXAMPLE_DATA = { foo: 1 }; var EXAMPLE_EVENT = { initMouseEvent: jest.fn() // ======== // Tracker. // ======== }; var TRACKER = { dataset: {}, dispatchEvent: jest.fn() // ========== // Overrides. // ========== }; Object.defineProperty(window, 'Blob', { writable: true, value: function value() { var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var obj = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; TRACKER.json = arr[0]; TRACKER.type = obj.type; } }); Object.defineProperty(window.URL, 'createObjectURL', { writable: true, value: function value() { return EXAMPLE_BLOB; } }); Object.defineProperty(document, 'createElement', { writable: true, value: function value(tagName) { TRACKER.tagName = tagName; return TRACKER; } }); Object.defineProperty(document, 'createEvent', { writable: true, value: function value() { return EXAMPLE_EVENT; } }); // ====================== // Test for "save" event. // ====================== it('handles "save" event', function () { // Fire event. (0, _.save)(EXAMPLE_DATA, EXAMPLE_NAME); expect(JSON.parse(TRACKER.json)).toEqual(EXAMPLE_DATA); expect(TRACKER.type).toBe(EXAMPLE_TYPE); expect(TRACKER.dataset.downloadurl).toBe([EXAMPLE_TYPE, EXAMPLE_NAME, EXAMPLE_BLOB].join(':')); expect(EXAMPLE_EVENT.initMouseEvent).toBeCalledWith('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); }); });