test/unit/helpers.analytics-metric.js
import test from 'ava';
import sinon from 'sinon';
import {
client,
AnalyticsMetric,
} from '../../src';
// See tests.js for testing client creation
test.before('start server', () => {
client.apiBaseUrl = 'https://somesite.Clinical6.com';
client.authToken = 'valid_token';
});
test.beforeEach((t) => {
client.cache = 'never';
client.authToken = 'valid_token';
t.context.server = sinon.fakeServer.create();
t.context.server.autoRespond = true;
t.context.analyticsMetricJsonApi = {
id: 'c943d907-d54f-4eda-9d11-2d98d7e761a8',
type: 'analytics__metrics',
attributes: {
value: 0,
unit: 'Users',
name: 'accepted_users'
}
};
t.context.analyticsMetricJson = {
id: 'c943d907-d54f-4eda-9d11-2d98d7e761a8',
type: 'analytics__metrics',
attributes: {
value: 0,
unit: 'Users',
name: 'accepted_users'
}
};
t.context.analyticsMetric = new AnalyticsMetric(t.context.analyticsMetricJsonApi);
// t.context.server.respondWith('DELETE', `${client.apiBaseUrl}/v3/analytics/metrics/:id`,
// [200, { 'Content-Type': 'application/json' }, JSON.stringify({ status: 'ok' })]
// );
// t.context.server.respondWith('PATCH', `${client.apiBaseUrl}/v3/analytics/metrics/:id`,
// [200, { 'Content-Type': 'application/json' }, JSON.stringify({
// data: {
// id: 'c943d907-d54f-4eda-5c31-2d98d7e761a8',
// type: 'analytics__metrics',
// attributes: {
// value: 20,
// unit: 'Users',
// name: 'accepted_users'
// }
// }
// })]
// );
// t.context.server.respondWith('POST', `${client.apiBaseUrl}/v3/analytics/metrics`,
// [200, { 'Content-Type': 'application/json' }, JSON.stringify({
// data: {
// id: 'c943d907-d54f-4eda-9d11-2d98d7e761a8',
// type: 'analytics__metrics',
// attributes: {
// value: 0,
// unit: 'Humans',
// name: 'accepted_users'
// }
// }
// })]
// );
t.context.storage = client.storageUtility;
t.context.analyticsMetric = new AnalyticsMetric(t.context.analyticsMetricJsonApi);
});
test.afterEach(t => t.context.server.restore());
/**
* @test {AnalyticsMetric}
*/
test('[unit] AnalyticsMetric should handle analyticsMetric data with a normal json format', (t) => {
const { analyticsMetricJson } = t.context;
const analyticsMetric = new AnalyticsMetric(analyticsMetricJson);
t.is(analyticsMetric.id, 'c943d907-d54f-4eda-9d11-2d98d7e761a8');
t.is(analyticsMetric.type, 'analytics__metrics');
t.is(analyticsMetric.value, 0);
t.is(analyticsMetric.unit, 'Users');
t.is(analyticsMetric.name, 'accepted_users');
});
/**
* @test {AnalyticsMetric}
*/
test('[unit] AnalyticsMetric should handle analyticsMetric data with json api format', (t) => {
const { analyticsMetricJsonApi } = t.context;
const analyticsMetric = new AnalyticsMetric({ data: analyticsMetricJsonApi });
t.is(analyticsMetric.id, 'c943d907-d54f-4eda-9d11-2d98d7e761a8');
t.is(analyticsMetric.type, 'analytics__metrics');
t.is(analyticsMetric.value, 0);
t.is(analyticsMetric.unit, 'Users');
t.is(analyticsMetric.name, 'accepted_users');
});
/**
* @test {analyticsMetric}
*/
test('[unit] analyticsMetric should generate json api format when converted to string', (t) => {
const { analyticsMetricJsonApi } = t.context;
let analyticsMetric = new AnalyticsMetric({ data: analyticsMetricJsonApi });
t.deepEqual(analyticsMetric.toJSON(), analyticsMetricJsonApi);
analyticsMetric = new AnalyticsMetric({ data: analyticsMetricJsonApi });
t.deepEqual(analyticsMetric.toJSON(), analyticsMetricJsonApi);
});
// /**
// * @test {analyticsMetric.delete}
// */
// test('[unit] analyticsMetric.delete should successfully delete a analyticsMetric', async (t) => {
// const analyticsMetric = new AnalyticsMetric({ data: analyticsMetricJsonApi });
// await analyticsMetric.delete();
// const request = t.context.server.requests[0];
// t.is(request.method, 'DELETE');
// t.is(request.url, `${client.apiBaseUrl}/v3/analytics/metrics/${analyticsMetric.id}`);
// t.is(request.requestHeaders.Accept, 'application/json');
// t.is(request.requestHeaders['Content-Type'], 'application/json;charset=utf-8');
// t.is(request.requestHeaders.Authorization, 'Token token=valid_token');
// });
// /**
// * @test {analyticsMetric.save}
// */
// test('[unit] analyticsMetric.save should successfully insert a analyticsMetric with a analyticsMetric object when id does not exist', async (t) => {
// const json = JSON.parse(JSON.stringify(analyticsMetricJsonApi));
// delete json.id;
// const analyticsMetric = new AnalyticsMetric({ data: json });
// const response = await analyticsMetric.save();
// const request = t.context.server.requests[0];
// t.is(request.method, 'POST');
// t.is(request.url, `${client.apiBaseUrl}/v3/analytics/metrics`);
// t.is(request.requestHeaders.Accept, 'application/json');
// t.deepEqual(JSON.parse(request.requestBody), { data: json });
// t.is(request.requestHeaders['Content-Type'], 'application/json;charset=utf-8');
// t.is(request.requestHeaders.Authorization, 'Token token=valid_token');
// t.is(response.type, 'analytics__metrics');
// });
// /**
// * @test {analyticsMetric.save}
// */
// test('[unit] analyticsMetric.save should successfully update a analyticsMetric with a analyticsMetric object when id exists', async (t) => {
// const analyticsMetric = new AnalyticsMetric({ data: analyticsMetricJsonApi });
// const response = await analyticsMetric.save();
// const request = t.context.server.requests[0];
// t.is(request.method, 'PATCH');
// t.is(request.url, `${client.apiBaseUrl}/v3/analytics/metrics/${analyticsMetric.id}`);
// t.is(request.requestHeaders.Accept, 'application/json');
// t.deepEqual(JSON.parse(request.requestBody), { data: analyticsMetricJsonApi });
// t.is(request.requestHeaders['Content-Type'], 'application/json;charset=utf-8');
// t.is(request.requestHeaders.Authorization, 'Token token=valid_token');
// t.is(response.id, 'c943d907-d54f-4eda-5c31-2d98d7e761a8');
// t.is(response.type, 'analytics__metrics');
// });