"use strict"; import {expect} from "chai" import {RestAPI} from "../../../../../../application/source/data/datasource/server/restapi.mjs"; import {validateObject} from "../../../../../../application/source/types/validate.mjs"; describe('RestAPI', function () { let fetchReference; let returnStatus; afterEach(() => { globalThis['fetch'] = fetchReference; }); beforeEach(() => { returnStatus = 200; fetchReference = globalThis['fetch']; globalThis['fetch'] = function (options) { return new Promise((resolve, reject) => { resolve({ text: function () { return new Promise((resolve, reject) => { resolve(JSON.stringify({ a: "test" })); }); }, status: returnStatus }); }) }; }) it('should instance of RestAPI ', function () { expect(new RestAPI('https://monsterjs.org/assets/world.json')).to.be.instanceof(RestAPI) }); describe('rw', function () { it('read should return object', function (done) { const ds = new RestAPI({url: 'https://monsterjs.org/assets/world.json'}) ds.read().then(data => { validateObject(data); done(); }).catch(e => done(e)); }); it('write should ', function (done) { const ds = new RestAPI({ read: { url: 'https://monsterjs.org/assets/world.json' }, write: { url: 'https://monsterjs.org/assets/world.json', acceptedStatus: [99] } } ) ds.write().then(data => { done("should not be here"); }).catch(e => done()); }); }); describe('rw with errors', function () { it('read should throw exception', function (done) { returnStatus = 400; // fetch response with 400 const ds = new RestAPI({url: 'https://monsterjs.org/assets/world.json'}) ds.read().then(data => { done("should not run."); }).catch(e => done()); // should throw exception because returnStatus=400 }); it('write should ', function (done) { returnStatus = 400; // fetch response with 400 const ds = new RestAPI({url: 'https://monsterjs.org/assets/world.json'}, {url: 'https://monsterjs.org/assets/world.json'}) ds.write().then(data => { validateObject(data); done("error"); }).catch(e => done()); // should throw exception because returnStatus=400 }); }) })