TT#23436 Add first api client test as template

Change-Id: Id58d18d5f9ac2ec16707e35bb7710fbbc914763f
changes/16/16216/4
Hans-Peter Herzog 8 years ago
parent dd4ea075de
commit 077393c1dd

@ -13,6 +13,7 @@
}
</script>
<style>
.q-field-icon,
.q-item-icon {

@ -1,11 +1,12 @@
import _ from 'lodash';
import Vue from 'vue';
import { getJsonBody } from './utils'
export function getPreferences(id) {
return new Promise((resolve, reject)=>{
Vue.http.get('/api/subscriberpreferences/' + id).then((result)=>{
resolve(JSON.parse(result.body));
resolve(getJsonBody(result.body));
}).catch((err)=>{
reject(err);
});
@ -14,13 +15,14 @@ export function getPreferences(id) {
export function setPreference(id, field, value) {
return new Promise((resolve, reject)=>{
Promise.resolve().then(()=>{
return getPreferences(id);
}).then((result)=>{
var prefs = _.cloneDeep(result);
delete prefs._links;
prefs[field] = value;
return Vue.http.put('/api/subscriberpreferences/' + id, prefs);
var headers = {};
headers['Content-Type'] = 'application/json-patch+json';
Promise.resolve().then((result)=>{
return Vue.http.patch('/api/subscriberpreferences/' + id, [{
op: 'replace',
path: '/'+ field,
value: value
}], { headers: headers });
}).then(()=>{
resolve();
}).catch((err)=>{

@ -0,0 +1,14 @@
import _ from 'lodash';
export function getJsonBody(body) {
if(_.isString(body)) {
try {
return JSON.parse(body);
} catch(err) {
return body;
}
}
return body;
}

@ -0,0 +1,47 @@
'use strict';
import Vue from 'vue';
import VueResource from 'vue-resource';
import { getPreferences } from '../../src/api/subscriber';
import { assert } from 'chai';
Vue.use(VueResource);
describe('Subscriber', function(){
it('should get all subscriber preferences', function(done) {
Vue.http.interceptors = [];
Vue.http.interceptors.unshift((request, next)=>{
next(request.respondWith(JSON.stringify({
block_in_mode: false
}), {
status: 200
}));
});
getPreferences('123').then((result)=>{
assert.property(result, 'block_in_mode');
assert.isFalse(result.block_in_mode);
done();
}).catch((err)=>{
done(err);
});
});
it('should handle a 403 Forbidden while requesting the preferences', function(done) {
Vue.http.interceptors = [];
Vue.http.interceptors.unshift((request, next)=>{
next(request.respondWith(JSON.stringify({
message: '403 Forbidden'
}), {
status: 403
}));
});
getPreferences('123').then(()=>{
done(new Error('Test failed'));
}).catch((err)=>{
assert.equal(err.status, 403);
done();
});
});
});
Loading…
Cancel
Save