158 lines
5.1 KiB
158 lines
5.1 KiB
'use strict';
|
|
|
|
import Vue from 'vue';
|
|
import VueResource from 'vue-resource';
|
|
import {
|
|
createReminder,
|
|
getReminder,
|
|
enableReminder,
|
|
disableReminder,
|
|
setTime,
|
|
setRecurrence
|
|
} from '../../src/api/reminder';
|
|
import {
|
|
assert
|
|
} from 'chai';
|
|
|
|
Vue.use(VueResource);
|
|
|
|
|
|
describe('Reminder', function() {
|
|
|
|
var subscriberId = 123;
|
|
var reminderID = 1;
|
|
|
|
beforeEach(function() {
|
|
Vue.http.interceptors = [];
|
|
});
|
|
|
|
it('should return 201 when creating a new reminder', function(done) {
|
|
Vue.http.interceptors.unshift((request, next) => {
|
|
assert.equal(request.url, 'api/reminders/');
|
|
assert.equal(request.body.subscriber_id, subscriberId);
|
|
assert.equal(request.body.time, '00:00');
|
|
assert.equal(request.body.recur, 'never');
|
|
assert.equal(request.body.active, false);
|
|
next(
|
|
request.respondWith('', {
|
|
status: 201,
|
|
headers: {
|
|
location: 'api/reminders/' + reminderID
|
|
}
|
|
})
|
|
)
|
|
});
|
|
createReminder(subscriberId).then((result) => {
|
|
done();
|
|
}).catch((err) => {
|
|
done(err);
|
|
});
|
|
});
|
|
|
|
it('should get the existing reminder', function(done) {
|
|
Vue.http.interceptors.unshift((request, next) => {
|
|
assert.equal(request.url, 'api/reminders/');
|
|
assert.equal(request.params.supplier_id, subscriberId);
|
|
next(request.respondWith(JSON.stringify({
|
|
"_embedded": {
|
|
"ngcp:reminders": [{
|
|
"active": true,
|
|
"id": reminderID,
|
|
"recur": "always",
|
|
"subscriber_id": 239,
|
|
"time": "18:47:00"
|
|
}]
|
|
},
|
|
"total_count": 1
|
|
}), {
|
|
status: 200
|
|
}));
|
|
});
|
|
getReminder(subscriberId).then((result) => {
|
|
var reminderData = result._embedded['ngcp:reminders'][0];
|
|
assert.property(reminderData, 'id');
|
|
assert.property(reminderData, 'active');
|
|
assert.property(reminderData, 'recur');
|
|
assert.property(reminderData, 'subscriber_id');
|
|
assert.property(reminderData, 'time');
|
|
assert.isNumber(reminderData.id);
|
|
assert.isTrue(reminderData.active);
|
|
assert.include(['always', 'once', 'weekdays'], reminderData.recur);
|
|
assert.isNumber(reminderData.subscriber_id);
|
|
assert.isString(reminderData.time)
|
|
done();
|
|
}).catch((err) => {
|
|
done(err);
|
|
});
|
|
});
|
|
|
|
it('should activate a reminder', function(done) {
|
|
Vue.http.interceptors.unshift((request, next) => {
|
|
assert.equal(request.url, 'api/reminders/' + reminderID);
|
|
assert.equal(request.body[0].op, 'replace');
|
|
assert.equal(request.body[0].path, '/active');
|
|
assert.equal(request.body[0].value, true);
|
|
next(request.respondWith('', {
|
|
status: 204
|
|
}));
|
|
});
|
|
enableReminder(reminderID).then(() => {
|
|
done();
|
|
}).catch((err) => {
|
|
done(err);
|
|
});
|
|
});
|
|
|
|
it('should deactivate a reminder', function(done) {
|
|
Vue.http.interceptors.unshift((request, next) => {
|
|
assert.equal(request.url, 'api/reminders/' + reminderID);
|
|
assert.equal(request.body[0].op, 'replace');
|
|
assert.equal(request.body[0].path, '/active');
|
|
assert.equal(request.body[0].value, false);
|
|
next(request.respondWith('', {
|
|
status: 204
|
|
}));
|
|
});
|
|
disableReminder(reminderID).then(() => {
|
|
done();
|
|
}).catch((err) => {
|
|
done(err);
|
|
});
|
|
});
|
|
|
|
it('should set reminder time', function(done) {
|
|
Vue.http.interceptors.unshift((request, next) => {
|
|
assert.equal(request.url, 'api/reminders/' + reminderID);
|
|
assert.equal(request.body[0].op, 'replace');
|
|
assert.equal(request.body[0].path, '/time');
|
|
assert.equal(request.body[0].value, '22:22:00');
|
|
next(request.respondWith('', {
|
|
status: 204
|
|
}));
|
|
});
|
|
setTime(reminderID, '22:22:00').then(() => {
|
|
done();
|
|
}).catch((err) => {
|
|
done(err);
|
|
});
|
|
});
|
|
|
|
it('should set reminder recurrence', function(done) {
|
|
Vue.http.interceptors.unshift((request, next) => {
|
|
assert.equal(request.url, 'api/reminders/' + reminderID);
|
|
assert.equal(request.body[0].op, 'replace');
|
|
assert.equal(request.body[0].path, '/recur');
|
|
assert.equal(request.body[0].value, 'always');
|
|
next(request.respondWith('', {
|
|
status: 204
|
|
}));
|
|
});
|
|
setRecurrence(reminderID, 'always').then(() => {
|
|
done();
|
|
}).catch((err) => {
|
|
done(err);
|
|
});
|
|
});
|
|
|
|
});
|