test/unit/helpers.agreement.js
import test from 'ava';
import {
client,
Agreement,
} 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.agreementJsonApi = {
id: 10,
type: 'agreement__agreements',
attributes: {
common_id: '90e99217657b6d498f2d6c0b7bad1f80',
status: 'OUT_FOR_SIGNATURE',
completed_at: null,
document_url: null,
created_at: '2018-07-13T18:20:59Z',
updated_at: '2018-07-13T18:20:59Z'
},
relationships: {
agreement_template: {
data: {
id: 55,
type: 'agreement__templates'
}
},
mobile_user: {
data: {
id: 308,
type: 'mobile_users'
}
},
signatures: {
data: [
{
id: 2,
type: 'agreement__signatures'
}
]
}
}
};
t.context.agreementJson = {
id: 10,
type: 'agreement__agreements',
common_id: '90e99217657b6d498f2d6c0b7bad1f80',
status: 'OUT_FOR_SIGNATURE',
completed_at: null,
document_url: null,
created_at: '2018-07-13T18:20:59Z',
updated_at: '2018-07-13T18:20:59Z',
relationships: {
agreement_template: {
data: {
id: 55,
type: 'agreement__templates'
}
},
mobile_user: {
data: {
id: 308,
type: 'mobile_users'
}
},
signatures: {
data: [
{
id: 2,
type: 'agreement__signatures'
}
]
}
}
};
client.storageUtility.clear();
t.context.storage = client.storageUtility;
client.agreement = new Agreement({});
t.context.agreement = new Agreement({ data: t.context.agreementJsonApi });
});
/**
* @test {Agreement}
*/
test('[unit] Agreement should handle agreement data with a normal json format', (t) => {
const { agreementJson } = t.context;
const agreement = new Agreement(agreementJson);
t.is(agreement.id, 10);
t.is(agreement.type, 'agreement__agreements');
t.is(agreement.commonId, '90e99217657b6d498f2d6c0b7bad1f80');
t.is(agreement.status, 'OUT_FOR_SIGNATURE');
t.is(agreement.completedAt, null);
t.is(agreement.documentUrl, null);
t.is(agreement.createdAt, '2018-07-13T18:20:59Z');
t.is(agreement.updatedAt, '2018-07-13T18:20:59Z');
t.is(agreement.agreementTemplate.id, 55);
t.is(agreement.agreementTemplate.type, 'agreement__templates');
t.is(agreement.mobileUser.id, 308);
t.is(agreement.mobileUser.type, 'mobile_users');
t.is(agreement.agreementSignatures.length, 1);
t.is(agreement.agreementSignatures[0].id, 2);
t.is(agreement.agreementSignatures[0].type, 'agreement__signatures');
});
/**
* @test {Agreement}
*/
test('[unit] Agreement should handle agreement data with json api format', (t) => {
const { agreementJsonApi } = t.context;
const agreement = new Agreement({ data: agreementJsonApi });
t.is(agreement.id, 10);
t.is(agreement.type, 'agreement__agreements');
t.is(agreement.commonId, '90e99217657b6d498f2d6c0b7bad1f80');
t.is(agreement.status, 'OUT_FOR_SIGNATURE');
t.is(agreement.completedAt, null);
t.is(agreement.documentUrl, null);
t.is(agreement.createdAt, '2018-07-13T18:20:59Z');
t.is(agreement.updatedAt, '2018-07-13T18:20:59Z');
t.is(agreement.agreementTemplate.id, 55);
t.is(agreement.agreementTemplate.type, 'agreement__templates');
t.is(agreement.mobileUser.id, 308);
t.is(agreement.mobileUser.type, 'mobile_users');
t.is(agreement.agreementSignatures.length, 1);
t.is(agreement.agreementSignatures[0].id, 2);
t.is(agreement.agreementSignatures[0].type, 'agreement__signatures');
});
/**
* @test {Agreement}
*/
test('[unit] Agreement should generate json api format when converted to string', (t) => {
const { agreementJsonApi } = t.context;
let consentStrategy = new Agreement({ data: agreementJsonApi });
t.deepEqual(consentStrategy.toJSON(), agreementJsonApi);
consentStrategy = new Agreement({ data: agreementJsonApi });
t.deepEqual(consentStrategy.toJSON(), agreementJsonApi);
});