Files

53 lines
1.7 KiB
JavaScript

const external = require('../../src/extension-support/tw-external');
const {test} = require('node:test');
const assert = require('node:assert');
test('importModule', async () => {
const mod = await external.importModule('data:text/javascript;,export%20default%201');
assert.strictEqual(mod.default, 1);
});
test('fetch', async () => {
const res = await external.fetch('data:text/plain;,test');
const text = await res.text();
assert.strictEqual(text, 'test');
});
test('dataURL', async () => {
global.FileReader = class {
readAsDataURL (blob) {
blob.arrayBuffer().then(arrayBuffer => {
const base64 = Buffer.from(arrayBuffer).toString('base64');
this.result = `data:${blob.type};base64,${base64}`;
this.onload();
});
}
};
const dataURL = await external.dataURL('data:text/plain;,doesthiswork');
assert.strictEqual(dataURL, `data:text/plain;base64,${btoa('doesthiswork')}`);
});
test('blob', async () => {
const blob = await external.blob('data:text/plain;,test');
const blobText = await blob.text();
assert.strictEqual(blobText, 'test');
});
test('evalAndReturn', async () => {
const result = await external.evalAndReturn('data:text/plain;,var%20x=20', 'x');
assert.strictEqual(result, 20);
});
test('evalAndReturn with a trailing comment without newline', async () => {
const result = await external.evalAndReturn('data:text/plain;,var%20x=20 // whatever', 'x');
assert.strictEqual(result, 20);
});
test('relative URL throws', (t, done) => {
external.fetch('./test.js').catch(err => {
assert.strictEqual(err.message, `Unsupported URL: ./test.js`);
done();
});
});