public void Test_CanExecute() { Order order = new Order(); CancelOrderOperation op = new CancelOrderOperation(); Assert.AreEqual(OrderStatus.SC, order.Status); Assert.IsTrue(op.CanExecute(order)); }
public void Test_CanExecute_Cancel() { Order order = new Order(); CancelOrderOperation op = new CancelOrderOperation(); order.Cancel(new OrderCancelInfo()); order.UpdateStatus(); Assert.AreEqual(OrderStatus.CA, order.Status); Assert.IsFalse(op.CanExecute(order)); }
public ResponseMessage ProcessOrder(RequestMessage reqMsg) { ResponseMessage responseToDuplicateMessage = _deduplicator.GetExistingResponseMessage(reqMsg.RequestId); if (responseToDuplicateMessage != null) { return(responseToDuplicateMessage); } ResponseMessage response; switch (reqMsg.Operation) { case CreateOrderOperation.Id: CreateOrderOperation submitOrder = new CreateOrderOperation { InventoryRepository = _InventoryRepository, OrderRepository = _orderRepository }; response = submitOrder.ExecuteOperation(reqMsg); break; case CancelOrderOperation.Id: CancelOrderOperation cancelOrder = new CancelOrderOperation { InventoryRepository = _InventoryRepository, OrderRepository = _orderRepository }; response = cancelOrder.ExecuteOperation(reqMsg); break; case GetOrderOperation.Id: GetOrderOperation getOrder = new GetOrderOperation { OrderRepository = _orderRepository }; response = getOrder.ExecuteOperation(reqMsg); break; default: _loggerService.WriteLine("Received bad message: " + reqMsg.RequestId, "ProcessOrderError"); response = _responseMessageFactory.CreateBadRequestResponseMessage(reqMsg); break; } _deduplicator.StoreResponseToMessage(reqMsg.RequestId, response); return(response); }
public void Test_Execute() { Order order = new Order(); OrderCancelInfo info = new OrderCancelInfo(); CancelOrderOperation op = new CancelOrderOperation(); Assert.AreEqual(OrderStatus.SC, order.Status); op.Execute(order, info); order.UpdateStatus(); Assert.AreEqual(OrderStatus.CA, order.Status); }
public void Test_CanExecute_InProgress() { Order order = new Order(); CancelOrderOperation op = new CancelOrderOperation(); Procedure procedure = new Procedure(); ModalityProcedureStep step = new ModalityProcedureStep(procedure, "New modality.", new Healthcare.Modality()); order.AddProcedure(procedure); step.Start(new Staff()); Assert.AreEqual(OrderStatus.IP, order.Status); Assert.IsFalse(op.CanExecute(order)); }
public void Test_Execute_InProgress() { Order order = new Order(); OrderCancelInfo info = new OrderCancelInfo(); CancelOrderOperation op = new CancelOrderOperation(); Procedure procedure = new Procedure(); ModalityProcedureStep step = new ModalityProcedureStep(procedure, "New modality.", new Healthcare.Modality()); order.AddProcedure(procedure); step.Start(new Staff()); Assert.AreEqual(OrderStatus.IP, order.Status); op.Execute(order, info); }
public void Test_Execute_Discontinue() { Order order = new Order(); OrderCancelInfo info = new OrderCancelInfo(); CancelOrderOperation op = new CancelOrderOperation(); Procedure procedure = new Procedure(); ModalityProcedureStep step = new ModalityProcedureStep(procedure, "New modality.", new Healthcare.Modality()); order.AddProcedure(procedure); step.Start(new Staff()); order.Discontinue(new OrderCancelInfo()); Assert.AreEqual(OrderStatus.DC, order.Status); op.Execute(order, info); }
public void Test_Execute_Complete() { Order order = new Order(); OrderCancelInfo info = new OrderCancelInfo(); CancelOrderOperation op = new CancelOrderOperation(); Procedure procedure = new Procedure(); ModalityProcedureStep step = new ModalityProcedureStep(procedure, "New modality.", new Healthcare.Modality()); order.AddProcedure(procedure); step.Start(new Staff()); procedure.Complete(DateTime.Now); order.UpdateStatus(); Assert.AreEqual(OrderStatus.CM, order.Status); op.Execute(order, info); }
bool OrderExecutionSourceStub.IImplementation.CloseOrCancelOrder(AccountInfo accountInfo, string orderId, string orderTag, decimal?allowedSlippage, decimal?desiredPrice, out decimal closingPrice, out DateTime closingTime, out string modifiedId, out string operationResultMessage) { operationResultMessage = string.Empty; closingPrice = 0; closingTime = DateTime.MinValue; modifiedId = orderId; string operationResultMessageLocal = string.Empty; OperationInformation operation = null; GeneralHelper.GenericReturnDelegate <string> operationDelegate = delegate() { operationResultMessageLocal = "Operation not supported."; operation = null; MbtAccount pAcct = GetAccountByInfo(accountInfo); if (pAcct == null) { operationResultMessageLocal = "Failed to retrieve account."; SystemMonitor.OperationWarning(operationResultMessageLocal); return(null); } string message = string.Empty; lock (this) {// Make sure to keep the entire package here locked, since the order operation get placed after the submit // so we need to make sure we shall catch the responce in OnSubmit() too. if (_orderClient.Cancel(orderTag, ref message) == false) {// Error requestMessage. operationResultMessageLocal = message; return(null); } operation = new CancelOrderOperation() { Id = message }; // The message, or operation Id is the order token (further stored in OrderInfo.id) _operationStub.RegisterOperation(operation, false); } return(message); }; object result; if (_messageLoopOperator.Invoke(operationDelegate, TimeSpan.FromSeconds(8), out result) == false) {// Timed out. operationResultMessage = "Timeout submiting order cancelation."; return(false); } if (string.IsNullOrEmpty((string)result)) {// Operation error. operationResultMessage = operationResultMessageLocal; return(false); } // Return the ID of the submitted order. return(true); }
bool OrderExecutionSourceStub.IImplementation.CloseOrCancelOrder(AccountInfo accountInfo, string orderId, string orderTag, decimal? allowedSlippage, decimal? desiredPrice, out decimal closingPrice, out DateTime closingTime, out string modifiedId, out string operationResultMessage) { operationResultMessage = string.Empty; closingPrice = 0; closingTime = DateTime.MinValue; modifiedId = orderId; string operationResultMessageLocal = string.Empty; OperationInformation operation = null; GeneralHelper.GenericReturnDelegate<string> operationDelegate = delegate() { operationResultMessageLocal = "Operation not supported."; operation = null; MbtAccount pAcct = GetAccountByInfo(accountInfo); if (pAcct == null) { operationResultMessageLocal = "Failed to retrieve account."; SystemMonitor.OperationWarning(operationResultMessageLocal); return null; } string message = string.Empty; lock (this) {// Make sure to keep the entire package here locked, since the order operation get placed after the submit // so we need to make sure we shall catch the responce in OnSubmit() too. if (_orderClient.Cancel(orderTag, ref message) == false) {// Error requestMessage. operationResultMessageLocal = message; return null; } operation = new CancelOrderOperation() { Id = message }; // The message, or operation Id is the order token (further stored in OrderInfo.id) _operationStub.RegisterOperation(operation, false); } return message; }; object result; if (_messageLoopOperator.Invoke(operationDelegate, TimeSpan.FromSeconds(8), out result) == false) {// Timed out. operationResultMessage = "Timeout submiting order cancelation."; return false; } if (string.IsNullOrEmpty((string)result)) {// Operation error. operationResultMessage = operationResultMessageLocal; return false; } // Return the ID of the submitted order. return true; }
public void Test_CanExecute_Discontinue() { Order order = new Order(); CancelOrderOperation op = new CancelOrderOperation(); Procedure procedure = new Procedure(); ModalityProcedureStep step = new ModalityProcedureStep(procedure, "New modality.", new Healthcare.Modality()); order.AddProcedure(procedure); step.Start(new Staff()); order.Discontinue(new OrderCancelInfo()); Assert.AreEqual(OrderStatus.DC, order.Status); Assert.IsFalse(op.CanExecute(order)); }
public void Test_CanExecute_Complete() { Order order = new Order(); CancelOrderOperation op = new CancelOrderOperation(); Procedure procedure = new Procedure(); ModalityProcedureStep step = new ModalityProcedureStep(procedure, "New modality.", new Healthcare.Modality()); order.AddProcedure(procedure); step.Start(new Staff()); procedure.Complete(DateTime.Now); order.UpdateStatus(); Assert.AreEqual(OrderStatus.CM, order.Status); Assert.IsFalse(op.CanExecute(order)); }