Manual Reference Source Test

test/unit/helpers.approver-group.js

import test from 'ava';
import nock from 'nock';
import {
  client,
  ApproverAssignment,
  ApproverGroup,
  ApproverGroupAssignment,
  ConsentApprover,
  ConsentFormVersion,
} from '../../src';

// See tests.js for testing client creation
test.before('start server', (t) => {
  client.apiBaseUrl = 'https://somesite.Clinical6.com';
  client.authToken = 'valid_token';

  t.context.getResponseAssignments = {
    data: [
      {
        id: '1',
        type: 'consent__approver_assignments',
        attributes: {
          created_at: '2018-04-30T08:58:08Z',
          updated_at: '2018-04-30T08:58:08Z'
        },
        relationships: {
          approver_group: {
            data: {
              id: '1',
              type: 'consent__approver_groups'
            }
          },
          approver: {
            data: {
              id: '1',
              type: 'consent__approvers'
            }
          }
        }
      },
      {
        id: '2',
        type: 'consent__approver_assignments',
        attributes: {
          created_at: '2018-04-30T08:58:27Z',
          updated_at: '2018-04-30T08:58:27Z'
        },
        relationships: {
          approver_group: {
            data: {
              id: '1',
              type: 'consent__approver_groups'
            }
          },
          approver: {
            data: {
              id: '2',
              type: 'consent__approvers'
            }
          }
        }
      },
      {
        id: '3',
        type: 'consent__approver_assignments',
        attributes: {
          created_at: '2018-04-30T08:58:48Z',
          updated_at: '2018-04-30T08:58:48Z'
        },
        relationships: {
          approver_group: {
            data: {
              id: '1',
              type: 'consent__approver_groups'
            }
          },
          approver: {
            data: {
              id: '3',
              type: 'consent__approvers'
            }
          }
        }
      }
    ],
    included: [
      {
        id: '1',
        type: 'consent__approver_groups',
        attributes: {
          name: 'Testing123'
        },
        relationships: {
          approver_assignments: {
            data: [
              {
                id: '1',
                type: 'consent__approver_assignments'
              },
              {
                id: '2',
                type: 'consent__approver_assignments'
              },
              {
                id: '3',
                type: 'consent__approver_assignments'
              }
            ]
          },
          approvers: {
            data: [
              {
                id: '1',
                type: 'consent__approvers'
              },
              {
                id: '2',
                type: 'consent__approvers'
              },
              {
                id: '3',
                type: 'consent__approvers'
              }
            ]
          }
        }
      }
    ]
  };
});

test.beforeEach((t) => {
  client.cache = 'never';
  client.authToken = 'valid_token';

  t.context.insertResponse = {
    data: {
      id: 3,
      type: 'consent__approver_groups',
      attributes: {
        name: 'A group name'
      },
      relationships: {
        approver_assignments: {
          data: []
        },
        approvers: {
          data: []
        }
      }
    }
  };

  t.context.updateResponse = {
    data: {
      id: 19,
      type: 'consent__approver_groups',
      attributes: {
        name: 'A group name',
        created_at: '2018-05-04T16:44:32Z',
        updated_at: '2018-05-04T16:44:32Z'
      },
      relationships: {
        approver_assignments: {
          data: []
        },
        group_assignments: {
          data: []
        },
        approvers: {
          data: []
        },
        form_versions: {
          data: []
        }
      }
    }
  };

  t.context.insertResponseAssignment = {
    data: {
      id: 3,
      type: 'consent__approver_group_assignments',
      relationships: {
        form_version: {
          data: {
            id: 6,
            type: 'consent__form_versions'
          }
        },
        approver_group: {
          data: {
            id: 3,
            type: 'consent__approver_groups'
          }
        }
      }
    },
    included: [
      {
        id: 6,
        type: 'consent__form_versions',
        attributes: {
          archived_at: '2018-03-09T16:44:08Z'
        },
        relationships: {
          site: {
            data: {
              id: 6,
              type: 'trials__sites'
            }
          },
          agreement_template: {
            data: {
              id: 6,
              type: 'agreement__templates'
            }
          },
          language: {
            data: {
              id: 7,
              type: 'languages'
            }
          },
          consent_form: {
            data: {
              id: 6,
              type: 'consent__forms'
            }
          },
          approver_groups: {
            data: [
              {
                id: 3,
                type: 'consent__approver_groups'
              }
            ]
          },
          approvers: {
            data: [
              {
                id: 5,
                type: 'consent__approvers'
              },
              {
                id: 6,
                type: 'consent__approvers'
              }
            ]
          }
        }
      },
      {
        id: 3,
        type: 'consent__approver_groups',
        attributes: {
          name: 'Approver Group 3'
        },
        relationships: {
          approver_assignments: {
            data: [
              {
                id: 5,
                type: 'consent__approver_assignments'
              },
              {
                id: 6,
                type: 'consent__approver_assignments'
              }
            ]
          },
          approvers: {
            data: [
              {
                id: 5,
                type: 'consent__approvers'
              },
              {
                id: 6,
                type: 'consent__approvers'
              }
            ]
          }
        }
      },
      {
        id: 5,
        type: 'consent__approver_assignments',
        relationships: {
          approver_group: {
            data: {
              id: 3,
              type: 'consent__approver_groups'
            }
          },
          approver: {
            data: {
              id: 5,
              type: 'consent__approvers'
            }
          }
        }
      },
      {
        id: 5,
        type: 'consent__approvers',
        attributes: {
          first_name: 'John',
          last_name: 'Doe',
          email: 'john@example.com',
          title: null
        },
        relationships: {
          approver_groups: {
            data: [
              {
                id: 3,
                type: 'consent__approver_groups'
              }
            ]
          },
          consent_form_versions: {
            data: [
              {
                id: 6,
                type: 'consent__form_versions'
              }
            ]
          }
        }
      },
      {
        id: 6,
        type: 'consent__approver_assignments',
        relationships: {
          approver_group: {
            data: {
              id: 3,
              type: 'consent__approver_groups'
            }
          },
          approver: {
            data: {
              id: 6,
              type: 'consent__approvers'
            }
          }
        }
      },
      {
        id: 6,
        type: 'consent__approvers',
        attributes: {
          first_name: 'John',
          last_name: 'Doe',
          email: 'john@example.com',
          title: null
        },
        relationships: {
          approver_groups: {
            data: [
              {
                id: 3,
                type: 'consent__approver_groups'
              }
            ]
          },
          consent_form_versions: {
            data: [
              {
                id: 6,
                type: 'consent__form_versions'
              }
            ]
          }
        }
      }
    ]
  };

  t.context.approverGroupJsonApi = {
    id: 1,
    type: 'consent__approver_groups',
    attributes: {
      name: 'A group name',
      created_at: undefined,
      updated_at: undefined
    },
    relationships: {
      approver_assignments: {
        data: []
      },
      approvers: {
        data: []
      },
      form_versions: {
        data: []
      }
    }
  };

  t.context.approverGroupJson = {
    id: 1,
    type: 'consent__approver_groups',
    name: 'A group name',
    created_at: undefined,
    updated_at: undefined,
  };

  t.context.approverGroupAssignmentJsonApi = {
    id: 6,
    type: 'consent__approver_group_assignments',
    attributes: {},
    relationships: {
      form_version: {
        data: {
          id: 6,
          type: 'consent__form_versions'
        }
      },
      approver_group: {
        data: {
          id: 3,
          type: 'consent__approver_groups'
        }
      }
    }
  };

  t.context.approverAssignmentJsonApi = {
    id: 1,
    type: 'consent__approver_assignments',
    attributes: {},
    relationships: {
      approver_group: {
        data: {
          id: 1,
          type: 'consent__approver_groups'
        }
      },
      approver: {
        data: {
          id: 1,
          type: 'consent__approvers'
        }
      }
    }
  };


  client.storageUtility.clear();
  t.context.storage = client.storageUtility;
  client.approverGroup = new ApproverGroup({});
  t.context.approverGroup = new ApproverGroup({ data: t.context.approverGroupJsonApi });
});

/**
 * @test {ApproverGroup}
 */
test('[unit] ApproverGroup should handle approverGroup data with a normal json format', (t) => {
  const { approverGroupJson } = t.context;
  const approverGroup = new ApproverGroup(approverGroupJson);
  t.is(approverGroup.type, 'consent__approver_groups');
  t.is(approverGroup.name, 'A group name');
  t.is(approverGroup.createdAt, undefined);
  t.is(approverGroup.updatedAt, undefined);
});

/**
 * @test {ApproverGroup}
 */
test('[unit] ApproverGroup should handle approverGroup data with json api format', (t) => {
  const { approverGroupJsonApi } = t.context;
  const approverGroup = new ApproverGroup({ data: approverGroupJsonApi });
  t.is(approverGroup.type, 'consent__approver_groups');
  t.is(approverGroup.name, 'A group name');
  t.is(approverGroup.createdAt, undefined);
  t.is(approverGroup.updatedAt, undefined);
});

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

  approverGroup = new ApproverGroup({ data: approverGroupJsonApi });
  t.deepEqual(approverGroup.toJSON(), approverGroupJsonApi);
});


// ApproverGroup.save
/**
 * @test {ApproverGroup.save}
 */
test('[unit] ApproverGroup.save should successfully save a new approverGroup when id does not exist', async (t) => {
  const { approverGroupJsonApi, insertResponse } = t.context;
  const json = JSON.parse(JSON.stringify(approverGroupJsonApi));
  delete json.id;
  const approverGroup = new ApproverGroup({ data: json });
  let request = {};
  nock(client.apiBaseUrl).post(`/v3/consent/approver_groups`).reply(function (uri, requestBody) {
    request = this.req;
    request.requestBody = requestBody;
    return [201, insertResponse];
  });

  const response = await approverGroup.save();

  t.is(request.path, `/v3/consent/approver_groups`);
  t.is(request.headers.accept, 'application/json');
  t.deepEqual(request.requestBody, { data: json });
  t.is(request.headers['content-type'], 'application/json');
  t.is(request.headers.authorization, 'Token token=valid_token');
  t.is(response.id, 3);
  t.is(response.type, 'consent__approver_groups');
  t.is(response.name, 'A group name');
  t.is(response.approvers.length, 0);
  t.is(response.approverAssignments.length, 0);
});

/**
 * @test {ApproverGroup.save}
 */
test('[unit] ApproverGroup.save should successfully update an approverGroup with an approverGroup object when id exists', async (t) => {
  const { updateResponse } = t.context;
  const updateAproverGroupJsonApi = {
    id: 19,
    type: 'consent__approver_groups',
    attributes: {
      name: 'A group name',
      created_at: '2018-05-04T16:44:32Z',
      updated_at: '2018-05-04T16:44:32Z'
    },
    relationships: {
      approver_assignments: {
        data: []
      },
      approvers: {
        data: []
      },
      form_versions: {
        data: []
      }
    }
  };
  const approverGroup = new ApproverGroup({ data: updateAproverGroupJsonApi });
  let request = {};
  nock(client.apiBaseUrl).patch(`/v3/consent/approver_groups/${approverGroup.id}`).reply(function (uri, requestBody) {
    request = this.req;
    request.requestBody = requestBody;
    return [200, updateResponse];
  });
  const response = await approverGroup.save();

  t.is(request.path, `/v3/consent/approver_groups/${approverGroup.id}`);
  t.is(request.headers.accept, 'application/json');
  t.deepEqual(request.requestBody, { data: updateAproverGroupJsonApi });
  t.is(request.headers['content-type'], 'application/json');
  t.is(request.headers.authorization, 'Token token=valid_token');
  t.is(response.id, 19);
  t.is(response.type, 'consent__approver_groups');
  t.is(response.createdAt, '2018-05-04T16:44:32Z');
  t.is(response.updatedAt, '2018-05-04T16:44:32Z');
  t.is(response.name, 'A group name');
  t.is(response.approverAssignments.length, 0);
  t.is(response.approvers.length, 0);
  t.is(response.formVersions.length, 0);
});


// ApproverGroup.addApprover
/**
 * @test {ApproverGroup.addApprover}
 */
test('[unit] ApproverGroup.addApprover should successfully insert a approverAssignment with a user and approverGroup when approverAssignment.id does not exist', async (t) => {
  const { approverGroupJsonApi, approverAssignmentJsonApi, insertResponseAssignment } = t.context;
  const approverGroup = new ApproverGroup({ data: approverGroupJsonApi });
  const approver = new ConsentApprover({ id: 1 });
  let request = {};
  nock(client.apiBaseUrl).post(`/v3/consent/approver_assignments`).reply(function (uri, requestBody) {
    request = this.req;
    request.requestBody = requestBody;
    return [201, insertResponseAssignment];
  });
  const response = await approverGroup.addApprover(approver);

  t.is(request.path, `/v3/consent/approver_assignments`);
  t.is(request.headers.accept, 'application/json');
  const json = JSON.parse(JSON.stringify(approverAssignmentJsonApi));
  delete json.id;
  t.deepEqual(request.requestBody, { data: json });
  t.is(request.headers['content-type'], 'application/json');
  t.is(request.headers.authorization, 'Token token=valid_token');
  t.is(response.id, 3);
  t.is(response.type, 'consent__approver_group_assignments');

  t.is(approverGroup.approverAssignments[0].id, 3);
  t.is(approverGroup.approverAssignments[0].type, 'consent__approver_group_assignments');

  t.is(approverGroup.approvers[0].id, 1);
  t.is(approverGroup.approvers[0].type, 'consent__approvers');
});


// ApproverGroup.addFormVersion
/**
 * @test {ApproverGroup.addFormVersion}
 */
test('[unit] ApproverGroup.addFormVersion should successfully insert an approverGroupAssignment with a consentFormVersion and approverGroup when approverGroupAssignment.id does not exist', async (t) => {
  const { approverGroupJsonApi, approverGroupAssignmentJsonApi, insertResponseAssignment } = t.context;
  const approverGroup = new ApproverGroup({ data: approverGroupJsonApi });
  approverGroup.id = 3;
  const consentFormVersion = new ConsentFormVersion({ id: 6 });
  let request = {};
  nock(client.apiBaseUrl).post(`/v3/consent/approver_group_assignments`).reply(function (uri, requestBody) {
    request = this.req;
    request.requestBody = requestBody;
    return [201, insertResponseAssignment];
  });
  const response = await approverGroup.addFormVersion(consentFormVersion);
  t.is(request.path, `/v3/consent/approver_group_assignments`);
  t.is(request.headers.accept, 'application/json');
  const json = JSON.parse(JSON.stringify(approverGroupAssignmentJsonApi));
  delete json.id;
  t.deepEqual(request.requestBody, { data: json });
  t.is(request.headers['content-type'], 'application/json');
  t.is(request.headers.authorization, 'Token token=valid_token');
  t.is(response.id, 3);
  t.is(response.type, 'consent__approver_group_assignments');

  t.is(approverGroup.approverAssignments[0].id, 3);
  t.is(approverGroup.approverAssignments[0].type, 'consent__approver_group_assignments');
  t.is(approverGroup.approverAssignments[0].formVersion.id, 6);
  t.is(approverGroup.approverAssignments[0].formVersion.type, 'consent__form_versions');

  t.is(approverGroup.formVersions[0].id, 6);
  t.is(approverGroup.formVersions[0].type, 'consent__form_versions');
});


// ApproverGroup.getApproverAssignments method
/**
 * @test {ApproverGroup.getApproverAssignments}
 */
test.serial('[unit] ApproverGroup.getApproverAssignments should throw an error when there is no authToken or invalid params', async (t) => {
  const { approverGroupJsonApi } = t.context;
  const approverGroup = new ApproverGroup({ data: approverGroupJsonApi });

  client.authToken = undefined;
  const title = `ApproverGroupService.getChildren error`;
  await t.throwsAsync(approverGroup.getApproverAssignments(approverGroup, { type: 'consent__approver_assignments' }), `${title}: requires authToken`);
});

/**
 * @test {ApproverGroup.getApproverAssignments}
 */
test(`[unit] ApproverGroup.getApproverAssignments should receive a valid request and response for a get request without an id`, async (t) => {
  const { approverGroupJsonApi, getResponseAssignments } = t.context;
  const approverGroup = new ApproverGroup({ data: approverGroupJsonApi });
  let request = {};
  nock(client.apiBaseUrl).get(`/v3/consent/approver_groups/${approverGroup.id}/consent/approver_assignments`).reply(function (uri, requestBody) {
    request = this.req;
    request.requestBody = requestBody;
    return [200, getResponseAssignments];
  });
  const response = await approverGroup.getApproverAssignments();
  t.is(request.path, `/v3/consent/approver_groups/${approverGroup.id}/consent/approver_assignments`);
  t.is(request.headers.accept, 'application/json');
  t.is(request.headers['content-type'], 'application/json');
  t.is(request.headers.authorization, 'Token token=valid_token');

  t.truthy(response);
  t.is(Object.keys(response).length, 3);
  t.truthy(response[0] instanceof ApproverAssignment);
  t.is(response[0].id, 1);
  t.is(response[0].type, 'consent__approver_assignments');
  t.truthy(response[0].approver);
  t.is(response[0].approver.id, 1);
  t.truthy(response[1] instanceof ApproverAssignment);
  t.is(response[1].id, 2);
  t.is(response[1].type, 'consent__approver_assignments');
  t.truthy(response[2] instanceof ApproverAssignment);
  t.is(response[2].id, 3);
  t.is(response[2].type, 'consent__approver_assignments');

  t.is(approverGroup.approverAssignments[0].id, 1);
  t.is(approverGroup.approverAssignments[0].type, 'consent__approver_assignments');

  t.truthy(approverGroup.approvers[0]);
  t.is(approverGroup.approvers[0].id, 1);
});

// /**
//  * @test {ApproverGroup.getApproverAssignments}
//  */
// test('[unit] ApproverGroup.getApproverAssignments should receive a valid response for a get request with an id', async (t) => {
//   const { approverGroupJsonApi, getResponseAssignment20 } = t.context;
//   const approverGroup = new ApproverGroup({ data: approverGroupJsonApi });
//   const approverAssignment = new ApproverAssignment({ id: 20 });
//   let request = {};
//   nock(client.apiBaseUrl).get(`/v3/consent/approver_groups/${approverGroup.id}/consent/approver_assignments/${approverAssignment.id}`).reply(function (uri, requestBody) {
//     request = this.req;
//     request.requestBody = requestBody;
//     return [200, getResponseAssignment20];
//   });
//   const response = await approverGroup.getApproverAssignments({ id: 20 });
//   t.is(request.path, `/v3/consent/approver_groups/${approverGroup.id}/consent/approver_assignments/${approverAssignment.id}`);
//   t.is(request.headers.accept, 'application/json');
//   t.is(request.headers['content-type'], 'application/json');
//   t.is(request.headers.authorization, 'Token token=valid_token');

//   t.truthy(response);
//   t.truthy(response instanceof ApproverAssignment);
//   t.is(response.id, 20);
//   t.is(response.type, 'consent__approver_assignments');
//   t.is(response.createdAt, '2018-04-17T19:59:53Z');
//   t.is(response.updatedAt, '2018-04-17T19:59:53Z');
//   t.truthy(response.approver);
//   t.is(response.approver.id, 278);
//   t.is(response.approver.createdAt, '2018-04-17T19:59:54Z');
//   t.is(response.approver.email, 'user418@fake.com');
//   t.is(response.approver.updatedAt, '2018-04-17T19:59:54Z');
//   t.is(response.approver.uuid, '7731e5db-3c94-4596-8a52-cb753b9d23bd');
//   t.truthy(response.approverGroup);
//   t.is(response.approverGroup.id, 2);
//   t.is(response.approverGroup.type, 'approverGroups');
// });


// ApproverGroup.getApprovers method
/**
 * @test {ApproverGroup.getApprovers}
 */
test.serial('[unit] ApproverGroup.getApprovers should throw an error when there is no authToken or invalid params', async (t) => {
  const { approverGroupJsonApi } = t.context;
  const approverGroup = new ApproverGroup({ data: approverGroupJsonApi });

  client.authToken = undefined;
  const title = `ApproverGroupService.getChildren error`;
  await t.throwsAsync(approverGroup.getApprovers(approverGroup, { type: 'consent__approver_assignments' }), `${title}: requires authToken`);
});

/**
 * @test {ApproverGroup.getApprovers}
 */
test(`[unit] ApproverGroup.getApprovers should receive a valid request and response for a get request without an id`, async (t) => {
  const { approverGroupJsonApi, getResponseAssignments } = t.context;
  const approverGroup = new ApproverGroup({ data: approverGroupJsonApi });
  let request = {};
  nock(client.apiBaseUrl).get(`/v3/consent/approver_groups/${approverGroup.id}/consent/approver_assignments`).reply(function (uri, requestBody) {
    request = this.req;
    request.requestBody = requestBody;
    return [200, getResponseAssignments];
  });
  const response = await approverGroup.getApprovers();
  t.is(request.path, `/v3/consent/approver_groups/${approverGroup.id}/consent/approver_assignments`);
  t.is(request.headers.accept, 'application/json');
  t.is(request.headers['content-type'], 'application/json');
  t.is(request.headers.authorization, 'Token token=valid_token');

  t.truthy(response);
  t.is(Object.keys(response).length, 3);
  t.truthy(response[0] instanceof ConsentApprover);
  t.is(response[0].id, 1);
  t.is(response[0].type, 'consent__approvers');
  t.truthy(response[1] instanceof ConsentApprover);
  t.is(response[1].id, 2);
  t.is(response[1].type, 'consent__approvers');
  t.truthy(response[2] instanceof ConsentApprover);
  t.is(response[2].id, 3);
  t.is(response[2].type, 'consent__approvers');
});


// ApproverGroup.removeApprover
/**
 * @test {ApproverGroup.removeApprover}
 */
test('[unit] ApproverGroup.removeApprover should successfully remove a approverAssignment with a approver and approverGroup given a approver', async (t) => {
  const { approverGroupJsonApi, getResponseAssignments } = t.context;
  const approverGroup = new ApproverGroup({ data: approverGroupJsonApi });
  approverGroup.id = 9;
  const approver = new ConsentApprover({ id: 1 });
  let request = {};
  nock(client.apiBaseUrl).get(`/v3/consent/approver_groups/${approverGroup.id}/consent/approver_assignments`).reply(200, getResponseAssignments);
  nock(client.apiBaseUrl).delete(`/v3/consent/approver_assignments/1`).reply(function (uri, requestBody) {
    request = this.req;
    request.requestBody = requestBody;
    return [204, ''];
  });
  const response = await approverGroup.removeApprover(approver);

  t.is(request.path, `/v3/consent/approver_assignments/1`);
  t.is(request.headers.accept, 'application/json');
  t.is(request.headers['content-type'], 'application/json');
  t.is(request.headers.authorization, 'Token token=valid_token');
  t.falsy(response);
});


// ApproverGroup.removeApprover
/**
 * @test {ApproverGroup.removeApprover}
 */
test('[unit] ApproverGroup.removeApprover should successfully remove a approverAssignment with a approver and approverGroup given an assignment', async (t) => {
  const { approverGroupJsonApi, getResponseAssignments } = t.context;
  const approverGroup = new ApproverGroup({ data: approverGroupJsonApi });
  approverGroup.id = 9;
  const assignment = new ApproverAssignment({ id: 5 });
  let request = {};
  nock(client.apiBaseUrl).get(`/v3/consent/approver_groups/${approverGroup.id}/consent/approver_assignments`).reply(200, getResponseAssignments);
  nock(client.apiBaseUrl).delete(`/v3/consent/approver_assignments/5`).reply(function (uri, requestBody) {
    request = this.req;
    request.requestBody = requestBody;
    return [204, ''];
  });
  const response = await approverGroup.removeApprover(assignment);

  t.is(request.path, `/v3/consent/approver_assignments/5`);
  t.is(request.headers.accept, 'application/json');
  t.is(request.headers['content-type'], 'application/json');
  t.is(request.headers.authorization, 'Token token=valid_token');
  t.falsy(response);
});


// ApproverGroup.removeFormVersion
/**
 * @test {ApproverGroup.removeFormVersion}
 */
test('[unit] ApproverGroup.removeFormVersion should successfully remove an approverGroupAssignment with a consentFormVersion and approverGroup given an approverGroupAssignment', async (t) => {
  const { approverGroupJsonApi } = t.context;
  const approverGroup = new ApproverGroup({ data: approverGroupJsonApi });
  approverGroup.id = 1;
  const assignment = new ApproverGroupAssignment({ id: 5 });
  let request = {};
  nock(client.apiBaseUrl).delete(`/v3/consent/approver_group_assignments/5`).reply(function (uri, requestBody) {
    request = this.req;
    request.requestBody = requestBody;
    return [204, ''];
  });
  const response = await approverGroup.removeFormVersion(assignment);

  t.is(request.path, `/v3/consent/approver_group_assignments/5`);
  t.is(request.headers.accept, 'application/json');
  t.is(request.headers['content-type'], 'application/json');
  t.is(request.headers.authorization, 'Token token=valid_token');
  t.falsy(response);
});