@t7/utils
Version:
Utility methods for T7 components.
90 lines (83 loc) • 2.35 kB
JavaScript
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);
});
});
;