This commit is contained in:
2026-02-27 14:20:45 -08:00
parent 1c26163065
commit 06e46ba5ac

View File

@@ -140,13 +140,56 @@ namespace raven_integration
long WorkOrderItemOutsideServiceToBeUpdatedId = a.ObjectResponse["data"]["id"].Value<long>();
////////////////////////////////////////
/// STATE
///
///
//set locking state "Closed", confirm frozen then unlock state for remainder
payload = $$"""
{"workOrderId":{{WorkOrderId}},"workOrderStatusId":9}
""";
a = await Util.PostAsync("workorder/states", await Util.GetTokenAsync("BizAdmin"), payload);
Util.ValidateDataReturnResponseOk(a);
//confirm update fails
a = await Util.GetAsync($"workorder/{WorkOrderId}", await Util.GetTokenAsync("BizAdmin"));
Util.ValidateDataReturnResponseOk(a);
var o = a.ObjectResponse["data"];
((JObject)o).Remove("items");
o["notes"] = "thisshouldfail";
a = await Util.PutAsync("workorder", await Util.GetTokenAsync("BizAdmin"), o.ToString());
Util.ValidateErrorCodeResponse(a,2200,400);
// {{
// "error": {
// "code": "2200",
// "details": [
// {
// "message": "Work order is set to a locked status and can't be changed",
// "target": "generalerror",
// "error": "2209"
// }
// ],
// "message": "ErrorAPI2200"
// }
// }}
//unlocked status "Scheduled"
payload = $$"""
{"workOrderId":{{WorkOrderId}},"workOrderStatusId":3}
""";
a = await Util.PostAsync("workorder/states", await Util.GetTokenAsync("BizAdmin"), payload);
Util.ValidateDataReturnResponseOk(a);
/////////////////////////////////////////////////////////////////////////
//UPDATES
//
a = await Util.GetAsync($"workorder/items/labors/{WorkOrderItemLaborToBeUpdatedId}", await Util.GetTokenAsync("BizAdmin"));
Util.ValidateDataReturnResponseOk(a);
var o = a.ObjectResponse["data"];
o = a.ObjectResponse["data"];
o["serviceDetails"] = "UpdatedLaborNotes";
a = await Util.PutAsync("workorder/items/labors", await Util.GetTokenAsync("BizAdmin"), o.ToString());
Util.ValidateDataReturnResponseOk(a);
@@ -234,7 +277,7 @@ namespace raven_integration
o = w["items"].FirstOrDefault(z => (long)z["id"] == WorkOrderItem1Id);
o["labors"].Count().Should().Be(2);
o["parts"].Count().Should().Be(1);
((string)o["notes"]).Should().Be("UpdatedWoItemNotes");
((string)o["notes"]).Should().Be("UpdatedWoItemNotes");
((string)o["labors"].FirstOrDefault(z => (long)z["id"] == WorkOrderItemLaborToBeUpdatedId)["serviceDetails"]).Should().Be("UpdatedLaborNotes");
((long)o["parts"].FirstOrDefault(z => (long)z["id"] == WorkOrderItemPartToBeUpdatedId)["suggestedQuantity"]).Should().Be(2);
@@ -295,107 +338,8 @@ namespace raven_integration
}
[Fact]
public async Task ConfirmDeleteTransactionWorksAtServer()
{
ApiResponse a = await Util.GetAsync("build-mode", await Util.GetTokenAsync("BizAdmin"));
Util.ValidateDataReturnResponseOk(a);
var BuildMode = (string)a.ObjectResponse["data"]["buildMode"];
if (BuildMode == "DEBUG")//The key phrase that triggers exception during delete only exists in debug builds of server
{
dynamic d = new JObject();
d.active = true;
d.notes = "WOHEADER";
d.wiki = "INTEGRATION_DELETE_TEST_FAIL_BEFORE_COMMIT";//<-- key phrase triggers server exception in Workorder immediately before it would normally commit the whole thing
a = await Util.PostAsync("workorder", await Util.GetTokenAsync("BizAdmin"), d.ToString());
Util.ValidateDataReturnResponseOk(a);
long WorkOrderId = a.ObjectResponse["data"]["id"].Value<long>();
//CREATE WOITEM 1
d = new JObject();
d.active = true;
d.workOrderId = WorkOrderId;
a = await Util.PostAsync("workorder/items", await Util.GetTokenAsync("BizAdmin"), d.ToString());
Util.ValidateDataReturnResponseOk(a);
long WorkOrderItem1Id = a.ObjectResponse["data"]["id"].Value<long>();
//CREATE WOITEMPART
d = new JObject();
d.active = true;
d.workOrderItemId = WorkOrderItem1Id;
a = await Util.PostAsync("workorder/items/parts", await Util.GetTokenAsync("BizAdmin"), d.ToString());
Util.ValidateDataReturnResponseOk(a);
//CREATE TWO WOITEMLABORS
//ONE
d = new JObject();
d.active = true;
d.workOrderItemId = WorkOrderItem1Id;
a = await Util.PostAsync("workorder/items/labors", await Util.GetTokenAsync("BizAdmin"), d.ToString());
Util.ValidateDataReturnResponseOk(a);
//TWO
d = new JObject();
d.active = true;
d.workOrderItemId = WorkOrderItem1Id;
a = await Util.PostAsync("workorder/items/labors", await Util.GetTokenAsync("BizAdmin"), d.ToString());
Util.ValidateDataReturnResponseOk(a);
//CREATE WOITEM-2
d = new JObject();
d.active = true;
d.workOrderId = WorkOrderId;
a = await Util.PostAsync("workorder/items", await Util.GetTokenAsync("BizAdmin"), d.ToString());
Util.ValidateDataReturnResponseOk(a);
long WorkOrderItem2Id = (long)a.ObjectResponse["data"]["id"];
//CREATE WOITEMPART-2
d = new JObject();
d.active = true;
d.workOrderItemId = WorkOrderItem2Id;
a = await Util.PostAsync("workorder/items/parts", await Util.GetTokenAsync("BizAdmin"), d.ToString());
Util.ValidateDataReturnResponseOk(a);
//CREATE WOITEMLABOR(S)-2
//ONE-2
d = new JObject();
d.active = true;
d.workOrderItemId = WorkOrderItem2Id;
a = await Util.PostAsync("workorder/items/labors", await Util.GetTokenAsync("BizAdmin"), d.ToString());
Util.ValidateDataReturnResponseOk(a);
//TWO-2
d = new JObject();
d.active = true;
d.workOrderItemId = WorkOrderItem2Id;
a = await Util.PostAsync("workorder/items/labors", await Util.GetTokenAsync("BizAdmin"), d.ToString());
Util.ValidateDataReturnResponseOk(a);
a = await Util.DeleteAsync("workorder/" + WorkOrderId.ToString(), await Util.GetTokenAsync("BizAdmin"));
Util.ValidateErrorCodeResponse(a, 2200, 400);
//now confirm the workorder is still there and with it's children intact
//RETRIEVE WORKORDER AND VALIDATE ENTIRE
a = await Util.GetAsync("workorder/" + WorkOrderId.ToString(), await Util.GetTokenAsync("BizAdmin"));
Util.ValidateDataReturnResponseOk(a);
var w = a.ObjectResponse["data"];
w["items"].Count().Should().Be(2);
var woitem1 = w["items"].FirstOrDefault(z => (long)z["id"] == WorkOrderItem1Id);
woitem1["labors"].Count().Should().Be(2);
woitem1["parts"].Count().Should().Be(1);
var woitem2 = w["items"].FirstOrDefault(z => (long)z["id"] == WorkOrderItem2Id);
woitem2["labors"].Count().Should().Be(2);
woitem2["parts"].Count().Should().Be(1);
}
}