Manual Reference Source Test

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');
// });