diff --git a/WorkOrder/WorkOrderCrud.cs b/WorkOrder/WorkOrderCrud.cs index 7db11a1..a274d19 100644 --- a/WorkOrder/WorkOrderCrud.cs +++ b/WorkOrder/WorkOrderCrud.cs @@ -140,13 +140,56 @@ namespace raven_integration long WorkOrderItemOutsideServiceToBeUpdatedId = a.ObjectResponse["data"]["id"].Value(); + //////////////////////////////////////// + /// 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(); - - //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(); - - //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); - - } - - }