Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions src/services/instance/fields/fields.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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);
});
9 changes: 5 additions & 4 deletions src/services/instance/fields/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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"
Expand All @@ -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
})
);
}
Expand Down