diff --git a/src/services/instance/fields/fields.test.js b/src/services/instance/fields/fields.test.js index d6691ae..b3367f1 100644 --- a/src/services/instance/fields/fields.test.js +++ b/src/services/instance/fields/fields.test.js @@ -73,10 +73,10 @@ test.serial("patchField:200", async(t) => { t.truthy(res.data.ZUID); }); -// Field deletion is only a soft-delete so need to skip this test to stop overpopulating the database by adding more columns without actually deleting them -test.skip("deleteField:200", async(t) => { +// Field deletion is only a soft-delete so need to also run field hard deletion to stop overpopulating the database by adding more columns without actually deleting them +test("deleteField:200", async(t) => { const name = `node-sdk_createItem_${moment().valueOf()}`; - let res = await t.context.sdk.instance.createField( + const createRes = await t.context.sdk.instance.createField( process.env.TEST_MODEL_ZUID, { datatype : "text", @@ -87,15 +87,22 @@ test.skip("deleteField:200", async(t) => { } } ) - t.is(res.statusCode, 201); - t.truthy(res.data.ZUID); - const newFieldZUID = res.data.ZUID; + t.is(createRes.statusCode, 201); + t.truthy(createRes.data.ZUID); + const newFieldZUID = createRes.data.ZUID; - res = await t.context.sdk.instance.deleteModelField( + const deleteRes = await t.context.sdk.instance.deleteModelField( process.env.TEST_MODEL_ZUID, newFieldZUID ); + t.is(deleteRes.statusCode, 200); - t.is(res.statusCode, 200); + // hard delete + const hardDeleteRes = await t.context.sdk.instance.deleteModelField( + process.env.TEST_MODEL_ZUID, + newFieldZUID, + true + ); + t.is(hardDeleteRes.statusCode, 200); }); \ No newline at end of file diff --git a/src/services/instance/fields/index.js b/src/services/instance/fields/index.js index 2328c35..41c09fa 100644 --- a/src/services/instance/fields/index.js +++ b/src/services/instance/fields/index.js @@ -7,7 +7,7 @@ module.exports = { createFieldPath: "/content/models/MODEL_ZUID/fields", updateModelField: "/content/models/MODEL_ZUID/fields/FIELD_ZUID", patchModelField: "/content/models/MODEL_ZUID/fields/FIELD_ZUID", - deleteModelField: "/content/models/MODEL_ZUID/fields/FIELD_ZUID" + deleteModelField: "/content/models/MODEL_ZUID/fields/FIELD_ZUID?hardDelete=HARD_DELETE" }, mixin: superclass => class Field extends superclass { @@ -117,7 +117,7 @@ module.exports = { ); } - async deleteModelField(modelZUID, fieldZUID) { + async deleteModelField(modelZUID, fieldZUID, hardDelete = "false") { if (!modelZUID) { throw new Error( "SDK:Instance:deleteModelField() missing required `modelZUID` argument" @@ -128,11 +128,12 @@ module.exports = { "SDK:Instance:deleteModelField() missing required `fieldZUID` argument" ); } - + return await this.deleteRequest( this.interpolate(this.API.deleteModelField, { MODEL_ZUID: modelZUID, - FIELD_ZUID: fieldZUID + FIELD_ZUID: fieldZUID, + HARD_DELETE: hardDelete }) ); }