From 1bd2eaa5a64df832803c03a560445e1b8f3d4923 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 11 May 2020 00:37:58 +0000 Subject: [PATCH] --- WorkOrder/WorkOrderCrud.cs | 165 ++++++++++++++++++++++++++++++++++++- 1 file changed, 164 insertions(+), 1 deletion(-) diff --git a/WorkOrder/WorkOrderCrud.cs b/WorkOrder/WorkOrderCrud.cs index 90d40f7..aa75cb9 100644 --- a/WorkOrder/WorkOrderCrud.cs +++ b/WorkOrder/WorkOrderCrud.cs @@ -362,7 +362,7 @@ namespace raven_integration Util.ValidateDataReturnResponseOk(a); var w = a.ObjectResponse["data"]; - w["items"].Count().Should().Be(2); + w["items"].Count().Should().Be(2); var woitem1 = w["items"].FirstOrDefault(z => (long)z["id"] == WorkOrderItem1Id); woitem1["labors"].Count().Should().Be(2); @@ -377,6 +377,169 @@ namespace raven_integration } + + + /// + /// Test all CRUD routes for a WorkOrder + /// Build up graph, update graph, remove graph bit by bit + /// + [Fact] + public async void DuplicateWorks() + { + ///////////////////////////////////////////////////////////////////////// + // CREATE + // + dynamic d = new JObject(); + d.active = true; + d.notes = "WOHEADER DuplicateWorks"; + d.wiki = "DuplicateWorks integration test"; + + ApiResponse a = await Util.PostAsync("workorders", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + dynamic WorkorderToUpdate = a.ObjectResponse["data"]; + long WorkOrderId = a.ObjectResponse["data"]["id"].Value(); + + #region CREATE first woitem + + //CREATE WOITEM 1 + d = new JObject(); + d.active = true; + d.notes = "woitem DuplicateWorks"; + d.wiki = "# woitem test wiki"; + d.workOrderId = WorkOrderId; + + a = await Util.PostAsync("workorders/items", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + dynamic WorkOrderItemToUpdate = a.ObjectResponse["data"]; + long WorkOrderItem1Id = a.ObjectResponse["data"]["id"].Value(); + + //CREATE WOITEMPART + d = new JObject(); + d.active = true; + d.notes = "woitempart DuplicateWorks"; + d.wiki = "# woitempart test wiki"; + d.workOrderItemId = WorkOrderItem1Id; + + a = await Util.PostAsync("workorders/items/parts", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + dynamic dPartToUpdate = a.ObjectResponse["data"]; + long PartId = (long)a.ObjectResponse["data"]["id"]; + + //CREATE TWO WOITEMLABORS + //ONE + d = new JObject(); + d.active = true; + d.notes = "woitemlabor DuplicateWorks"; + d.wiki = "# woitemlabor test wiki"; + d.workOrderItemId = WorkOrderItem1Id; + + + a = await Util.PostAsync("workorders/items/labors", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + dynamic dLaborOne = a.ObjectResponse["data"]; + long Labor1Id = a.ObjectResponse["data"]["id"].Value(); + + //TWO + d = new JObject(); + d.active = true; + d.notes = "woitemlabor2 DuplicateWorks"; + d.wiki = "# woitemlabor2 test wiki"; + d.workOrderItemId = WorkOrderItem1Id; + + + a = await Util.PostAsync("workorders/items/labors", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + long WorkOrderItemLaborId2 = a.ObjectResponse["data"]["id"].Value(); + + #endregion create first woitem + + #region CREATE Second woitem + ///////////////////////////////////////// + // Second woitem + // + //CREATE WOITEM-2 + d = new JObject(); + d.active = true; + d.notes = "woitem-2 DuplicateWorks"; + d.wiki = "# woitem test wiki"; + d.workOrderId = WorkOrderId; + + a = await Util.PostAsync("workorders/items", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + long WorkOrderItem2Id = a.ObjectResponse["data"]["id"].Value(); + + //CREATE WOITEMPART-2 + d = new JObject(); + d.active = true; + d.notes = "woitem-2-partDuplicateWorks"; + d.wiki = "# woitempart test wiki"; + d.workOrderItemId = WorkOrderItem2Id; + + a = await Util.PostAsync("workorders/items/parts", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + + //CREATE WOITEMLABOR(S)-2 + //ONE-2 + d = new JObject(); + d.active = true; + d.notes = "woitem-2-laborDuplicateWorks"; + d.wiki = "# woitemlabor test wiki"; + d.workOrderItemId = WorkOrderItem2Id; + a = await Util.PostAsync("workorders/items/labors", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + + //TWO-2 + d = new JObject(); + d.active = true; + d.notes = "woitem-2-labor2DuplicateWorks"; + d.wiki = "# woitemlabor2 test wiki"; + d.workOrderItemId = WorkOrderItem2Id; + a = await Util.PostAsync("workorders/items/labors", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + + #endregion create second woitem + + + + #region Duplicate and Validate + + //DUPLICATE - should make a copy of above, save and return entire object graph just like a get operation + a = await Util.PostAsync("workorders/duplicate/" + WorkOrderId.ToString(), await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + long DuplicateWorkOrderId = a.ObjectResponse["data"]["id"].Value(); + DuplicateWorkOrderId.Should().NotBe(WorkOrderId); + + // //RETRIEVE WORKORDER AND VALIDATE ENTIRE + // a = await Util.GetAsync("workorders/" + WorkOrderId.ToString(), await Util.GetTokenAsync("manager", "l3tm3in")); + // Util.ValidateDataReturnResponseOk(a); + + var w = a.ObjectResponse["data"]; + w["items"].Count().Should().Be(2); + ((string)w["notes"]).Should().Be("WOHEADER DuplicateWorks"); + + + var woitem1 = w["items"].FirstOrDefault(z => (long)z["id"] == WorkOrderItem1Id); + woitem1["labors"].Count().Should().Be(2); + woitem1["parts"].Count().Should().Be(1); + ((string)woitem1["notes"]).Should().Be("woitem DuplicateWorks"); + ((string)woitem1["labors"].FirstOrDefault(z => (long)z["id"] == Labor1Id)["notes"]).Should().Be("woitemlabor DuplicateWorks"); + ((string)woitem1["parts"].FirstOrDefault(z => (long)z["id"] == PartId)["notes"]).Should().Be("woitempart DuplicateWorks"); + + var woitem2 = w["items"].FirstOrDefault(z => (long)z["id"] == WorkOrderItem2Id); + woitem2["labors"].Count().Should().Be(2); + woitem2["parts"].Count().Should().Be(1); + ((string)woitem2["notes"]).Should().Be("woitem-2 DuplicateWorks"); + woitem2["labors"].FirstOrDefault(z => (string)z["notes"] == "woitem-2-labor2DuplicateWorks").Should().NotBeNull(); + woitem2["parts"].FirstOrDefault(z => (string)z["notes"] == "woitem-2-partDuplicateWorks").Should().NotBeNull(); + + #endregion validate entire + + + + } + + + //================================================== }//eoc