friendica-addons/advancedcontentfilter/vendor/asset/vue-resource/test/http.js

200 lines
4.4 KiB
JavaScript

import Vue from 'vue';
describe('Vue.http', function () {
it('get("data/text.txt")', done => {
Vue.http.get('data/text.txt').then(res => {
expect(res.ok).toBe(true);
expect(res.status).toBe(200);
expect(res.body).toBe('text');
expect(res.data).toBe(res.body);
expect(res.headers.get('Content-Type')).toBe('text/plain');
done();
});
});
it('get("data/valid.json")', done => {
Vue.http.get('data/valid.json').then(res => {
expect(res.ok).toBe(true);
expect(res.status).toBe(200);
expect(typeof res.body).toBe('object');
expect(res.body.foo).toBe('bar');
done();
});
});
it('get("data/invalid.json")', done => {
Vue.http.get('data/invalid.json').then(res => {
expect(res.ok).toBe(true);
expect(res.status).toBe(200);
expect(res.body).toBeNull();
done();
});
});
it('get("github.com/avatar")', done => {
Vue.http.get('https://avatars1.githubusercontent.com/u/6128107', {responseType: 'blob'}).then(res => {
expect(res.ok).toBe(true);
expect(res.status).toBe(200);
expect(res.body instanceof Blob).toBe(true);
expect(res.body.type).toBe('image/png');
done();
});
});
it('get("cors-api.appspot.com")', done => {
Vue.http.get('http://server.cors-api.appspot.com/server?id=1&enable=true').then(res => {
expect(res.ok).toBe(true);
expect(res.status).toBe(200);
expect(typeof res.body).toBe('object');
expect(res.body.shift().requestType).toBe('cors');
if (res.headers.get('Content-Type')) {
expect(res.headers.get('Content-Type')).toBe('application/json');
}
done();
});
});
it('jsonp("jsfiddle.net/jsonp")', done => {
Vue.http.jsonp('http://jsfiddle.net/echo/jsonp/', {params: {foo: 'bar'}}).then(res => {
expect(res.ok).toBe(true);
expect(res.status).toBe(200);
expect(typeof res.body).toBe('object');
expect(res.body.foo).toBe('bar');
done();
});
});
});
describe('this.$http', function () {
it('get("data/valid.json")', done => {
var vm = new Vue({
created() {
this.$http.get('data/valid.json').then(res => {
expect(this).toBe(vm);
expect(res.ok).toBe(true);
expect(res.status).toBe(200);
expect(typeof res.body).toBe('object');
expect(res.body.foo).toBe('bar');
done();
});
}
});
});
it('get("data/valid.json") with timeout', done => {
var vm = new Vue({
created() {
var random = Math.random().toString(36).substr(2);
this.$http.get(`data/valid.json?${random}`, {timeout: 1}).then(res => {
fail('Callback has been called');
}, res => {
expect(res.ok).toBe(false);
expect(res.status).toBe(0);
done();
});
}
});
});
it('get("data/valid.json") with abort()', done => {
var vm = new Vue({
created() {
var random = Math.random().toString(36).substr(2);
this.$http.get(`data/valid.json?${random}`, {
before(req) {
setTimeout(() => {
expect(typeof req.abort).toBe('function');
req.abort();
}, 0);
}
}).then(res => {
fail('Callback has been called');
}, res => {
done();
});
}
});
});
it('get("data/notfound.json") using catch()', done => {
var vm = new Vue({
created() {
this.$http.get('data/notfound.json').catch(res => {
expect(this).toBe(vm);
expect(res.ok).toBe(false);
expect(res.status).toBe(404);
done();
});
}
});
});
});