test/unit/helpers.agreement-template-field.js
import test from 'ava';
import nock from 'nock';
import {
client,
AgreementTemplateField,
} 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';
nock(client.apiBaseUrl)
.delete(/\/v3\/agreement\/template_fields\/([0-9]*)$/)
.reply(200, '');
client.storageUtility.clear();
t.context.storage = client.storageUtility;
client.agreementTemplateField = new AgreementTemplateField({});
t.context.agreementTemplateFieldJsonApi = {
type: 'agreement__template_fields',
attributes: {
label: 'Label for field 1',
field_name: 'template_field_1',
required: false,
default_value: 'DEFAULT_VALUE',
attribute_name: 'template_field_1_attribute',
signer_index: 1,
source_type: 'mobile_user'
},
relationships: {
agreement_template: {
data: {
type: 'agreement__templates',
id: 1
}
}
}
};
t.context.agreementTemplateFieldJson = {
type: 'agreement__template_fields',
label: 'Label for field 1',
field_name: 'template_field_1',
required: false,
default_value: 'DEFAULT_VALUE',
attribute_name: 'template_field_1_attribute',
signer_index: 1,
source_type: 'mobile_user',
relationships: {
agreement_template: {
data: {
type: 'agreement__templates',
id: 1
}
}
}
};
t.context.field = new AgreementTemplateField({ data: t.context.agreementTemplateFieldJsonApi });
});
// test.afterEach(t => t.context.server.restore());
/**
* @test {AgreementTemplateField}
*/
test('[unit] AgreementTemplateField should handle agreementTemplateField data with a normal json format', (t) => {
const { agreementTemplateFieldJson } = t.context;
const agreementTemplateField = new AgreementTemplateField(agreementTemplateFieldJson);
t.is(agreementTemplateField.type, 'agreement__template_fields');
t.is(agreementTemplateField.label, 'Label for field 1');
t.is(agreementTemplateField.fieldName, 'template_field_1');
t.is(agreementTemplateField.required, false);
t.is(agreementTemplateField.defaultValue, 'DEFAULT_VALUE');
t.is(agreementTemplateField.attributeName, 'template_field_1_attribute');
t.is(agreementTemplateField.signerIndex, 1);
t.is(agreementTemplateField.sourceType, 'mobile_user');
t.is(agreementTemplateField.agreementTemplate.id, 1);
t.is(agreementTemplateField.agreementTemplate.type, 'agreement__templates');
});
/**
* @test {AgreementTemplateField}
*/
test('[unit] AgreementTemplateField should handle AgreementTemplateField data with json api format', (t) => {
const { agreementTemplateFieldJsonApi } = t.context;
const agreementTemplateField = new AgreementTemplateField({ data: agreementTemplateFieldJsonApi });
t.is(agreementTemplateField.type, 'agreement__template_fields');
t.is(agreementTemplateField.label, 'Label for field 1');
t.is(agreementTemplateField.fieldName, 'template_field_1');
t.is(agreementTemplateField.required, false);
t.is(agreementTemplateField.defaultValue, 'DEFAULT_VALUE');
t.is(agreementTemplateField.attributeName, 'template_field_1_attribute');
t.is(agreementTemplateField.signerIndex, 1);
t.is(agreementTemplateField.sourceType, 'mobile_user');
t.is(agreementTemplateField.agreementTemplate.id, 1);
t.is(agreementTemplateField.agreementTemplate.type, 'agreement__templates');
});
/**
* @test {AgreementTemplateField}
*/
test('[unit] AgreementTemplateField should generate json api format when converted to string', (t) => {
const { agreementTemplateFieldJsonApi } = t.context;
let agreementTemplateField = new AgreementTemplateField({ data: agreementTemplateFieldJsonApi });
t.deepEqual(agreementTemplateField.toJSON(), agreementTemplateFieldJsonApi);
agreementTemplateField = new AgreementTemplateField({ data: agreementTemplateFieldJsonApi });
t.deepEqual(agreementTemplateField.toJSON(), agreementTemplateFieldJsonApi);
});
// /**
// * @test {AgreementTemplateField.delete}
// */
// test('[unit] AgreementTemplateField.delete should successfully delete a field', async (t) => {
// const { field } = t.context;
// field.id = 5;
// await field.delete();
// const request = t.context.server.requests[0];
// t.is(request.method, 'DELETE');
// t.is(request.url, `${client.apiBaseUrl}/v3/agreement/template_fields/${field.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 {AgreementTemplateField.save}
*/
test('[unit] AgreementTemplateField.save should successfully insert an agreementTemplateField with an agreementTemplateField object when id does not exist', async (t) => {
const { agreementTemplateFieldJsonApi } = t.context;
let requestBody = {};
const server = nock(client.apiBaseUrl)
.post('/v3/agreement/template_fields', (body) => {
requestBody = body;
return { data: json };
})
.reply(201, {
data: {
id: 1,
type: 'agreement__template_fields',
attributes: {
source_type: 'mobile_user'
}
}
});
const json = JSON.parse(JSON.stringify(agreementTemplateFieldJsonApi));
delete json.id;
const agreementTemplateField = new AgreementTemplateField({ data: json });
const response = await agreementTemplateField.save();
t.deepEqual(requestBody, { data: json });
server.done();
// const request = t.context.server.requests[0];
// t.is(request.method, 'POST');
// t.is(request.url, `${client.apiBaseUrl}/v3/agreement/template_fields`);
// 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.id, 1);
t.is(response.type, 'agreement__template_fields');
t.is(response.sourceType, 'mobile_user');
});