@schukai/monster
Version:
Monster is a simple library for creating fast, robust and lightweight websites.
96 lines (73 loc) • 2.88 kB
JavaScript
;
import {expect} from "chai"
import {RestAPI} from "../../../../../source/data/datasource/server/restapi.mjs";
import {validateObject} from "../../../../../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
});
})
})