Manual Reference Source Test

test/unit/helpers.agreement-signature.js

import test from 'ava';
import {
  client,
  AgreementSignature,
} 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.agreementSignatureJsonApi = {
    type: 'agreement__signatures',
    attributes: {
      role: 'role',
      status: 'status',
      sign_url: 'url',
      signed_at: '2018-05-04T18:47:01Z',
      signed_by_email: 'email@p6.com'
    }
  };

  t.context.agreementSignatureJson = {
    type: 'agreement__signatures',
    role: 'role',
    status: 'status',
    sign_url: 'url',
    signed_at: '2018-05-04T18:47:01Z',
    signed_by_email: 'email@p6.com'
  };

  client.storageUtility.clear();
  t.context.storage = client.storageUtility;
  client.agreementSignature = new AgreementSignature({});
  t.context.agreementSignature = new AgreementSignature({ data: t.context.agreementSignatureJsonApi });
});

/**
 * @test {AgreementSignature}
 */
test('[unit] AgreementSignature should handle agreementSignature data with a normal json format', (t) => {
  const { agreementSignatureJson } = t.context;
  const agreementSignature = new AgreementSignature(agreementSignatureJson);

  t.is(agreementSignature.type, 'agreement__signatures');
  t.is(agreementSignature.role, 'role');
  t.is(agreementSignature.status, 'status');
  t.is(agreementSignature.signedAt, '2018-05-04T18:47:01Z');
  t.is(agreementSignature.signedByEmail, 'email@p6.com');
});

/**
 * @test {AgreementSignature}
 */
test('[unit] AgreementSignature should handle agreementSignature data with json api format', (t) => {
  const { agreementSignatureJsonApi } = t.context;
  const agreementSignature = new AgreementSignature({ data: agreementSignatureJsonApi });
  t.is(agreementSignature.type, 'agreement__signatures');
  t.is(agreementSignature.role, 'role');
  t.is(agreementSignature.status, 'status');
  t.is(agreementSignature.signedAt, '2018-05-04T18:47:01Z');
  t.is(agreementSignature.signedByEmail, 'email@p6.com');
});

/**
 * @test {AgreementSignature}
 */
test('[unit] AgreementSignature should generate json api format when converted to string', (t) => {
  const { agreementSignatureJsonApi } = t.context;
  let consentStrategy = new AgreementSignature({ data: agreementSignatureJsonApi });
  t.deepEqual(consentStrategy.toJSON(), agreementSignatureJsonApi);

  consentStrategy = new AgreementSignature({ data: agreementSignatureJsonApi });
  t.deepEqual(consentStrategy.toJSON(), agreementSignatureJsonApi);
});