public void Should_Return_Not_Found_When_Not_Found() { progDatastoreActor.SetResponseForRequest <RelationalDataStoreActor.ExecuteScalar>(request => new RelationalDataStoreActor.ScalarResult(null)); Subject.Tell(input); Kit.ExpectMsg <ProductActor.ProductNotFound>(); }
public void Should_Return_Failure_When_Could_Not_Retrieve_Data() { progDatastoreActor.SetResponseForRequest <RelationalDataStoreActor.ExecuteScalar>(request => new RelationalDataStoreActor.ExecuteFailed()); Subject.Tell(input); Kit.ExpectMsg <ProductActor.ProductRetrievalFailed>(); }
public void Should_Return_Order_Processed_When_Processing_Successful() { // Act Subject.Tell(message); // Assert Kit.ExpectMsg <ProcessingCoordinatorActor.OrderIsProcessed>(); progHttpRequestActor.GetRequest <HttpRequestActor.Get>().Should().BeEquivalentTo( new HttpRequestActor.Get { ServiceUrl = "http://order-service:5000", Path = "/private/order/5" }); progHttpRequestActor.GetRequest <HttpRequestActor.Post>().Should().BeEquivalentTo( new HttpRequestActor.Post { ServiceUrl = "http://product-service:5000", Path = $"/private/product/list", Data = new { ProductIds = new[] { 5, 10 } } }); progWarehouseSendActor.GetRequests <Models.WarehouseOrderModel>().Should().BeEquivalentTo( new[] { new Models.WarehouseOrderModel { Id = "5-1", OrderId = 5, WarehouseId = 1, OrderDate = DateTimeOffset.Parse("2020-07-01T19:00:00Z", CultureInfo.InvariantCulture), Lines = new[] { new Models.WarehouseOrderModel.OrderLine { Line = 1, ProductId = 5, Description = "product 1", Amount = 5 } } }, new Models.WarehouseOrderModel { Id = "5-2", OrderId = 5, WarehouseId = 2, OrderDate = DateTimeOffset.Parse("2020-07-01T19:00:00Z", CultureInfo.InvariantCulture), Lines = new[] { new Models.WarehouseOrderModel.OrderLine { Line = 2, ProductId = 10, Description = "product 2", Amount = 2 } } } }); }
public void Should_Return_Order_Processing_Failed_When_Product_Service_Communication_Failure() { // Arrange progHttpRequestActor.SetResponseForRequest <HttpRequestActor.Post>(_ => new HttpRequestActor.ServiceRequestFailed(HttpRequestActor.ServiceRequestFailed.FailureReason.ServiceRequestTimeout)); // Act Subject.Tell(message); // Assert Kit.ExpectMsg <ProcessingCoordinatorActor.OrderFailedToProcess>(); }
public void Should_Return_Order_Processing_Failed_When_Product_Service_Returns_Non_OK() { // Arrange progHttpRequestActor.SetResponseForRequest <HttpRequestActor.Post>(_ => new HttpRequestActor.ReceivedNonSuccessServiceResponse(HttpStatusCode.BadGateway, Array.Empty <byte>())); // Act Subject.Tell(message); // Assert Kit.ExpectMsg <ProcessingCoordinatorActor.OrderFailedToProcess>(); }
public void Should_Return_Order_Duplicate_When_Has_Existing_Order() { Subject.As <TestActorRef <ActorUnderTest> >().UnderlyingActor.HasExistingOrder = true; Subject.Tell( new ProcessingCoordinatorActor.ProcessOrder { OrderId = 5, OrderDate = DateTimeOffset.Parse("2020-07-01T19:00:00Z", CultureInfo.InvariantCulture) }); Kit.ExpectMsg <ProcessingCoordinatorActor.OrderIsDuplicate>(); }
public void Should_Return_Order_Partially_Processed_When_Processing_Unit_Actor_Returns_Partially_Processed() { progProcessingUnitActor.SetResponseForRequest <ProcessingUnitActor.StartProcessing>( r => new ProcessingCoordinatorActor.OrderIsPartiallyProcessed()); Subject.Tell( new ProcessingCoordinatorActor.ProcessOrder { OrderId = 5, OrderDate = DateTimeOffset.Parse("2020-07-01T19:00:00Z", CultureInfo.InvariantCulture) }); Kit.ExpectMsg <ProcessingCoordinatorActor.OrderIsPartiallyProcessed>(); }
public void Should_Return_Order_Processing_Failed_When_All_Warehouse_Orders_Are_Not_Sent() { // Arrange progWarehouseSendActor.SetResponseForRequest <Models.WarehouseOrderModel>(m => new WarehouseSendActor.OrderIsNotSent { WarehouseId = m.WarehouseId }); // Act Subject.Tell(message); // Assert Kit.ExpectMsg <ProcessingCoordinatorActor.OrderFailedToProcess>(); }
public void Should_Return_Order_Processing_Failed_When_One_Warehouse_Order_Is_Not_Sent() { // Arrange progWarehouseSendActor.SetResponseForRequest <Models.WarehouseOrderModel>(m => m.WarehouseId == 1 ? new WarehouseSendActor.OrderIsSent { WarehouseId = m.WarehouseId } : new WarehouseSendActor.OrderIsNotSent { WarehouseId = m.WarehouseId }); // Act Subject.Tell(message); // Assert Kit.ExpectMsg <ProcessingCoordinatorActor.OrderIsPartiallyProcessed>(); }
public void Should_Return_Product_When_Found() { var document = new ProductDocument { Description = "shirt", Price = 13000, WarehouseId = 2, Properties = new[] { new ProductDocument.Property { Name = "color", Value = "blue" }, new ProductDocument.Property { Name = "size", Value = "M" } } }; progDatastoreActor.SetResponseForRequest <RelationalDataStoreActor.ExecuteScalar>(request => new RelationalDataStoreActor.ScalarResult(JsonSerializer.Serialize(document))); Subject.Tell(input); Kit.ExpectMsg <ProductActor.ProductFound>().Should().BeEquivalentTo( new ProductActor.ProductFound { Id = 12, Document = document }); progDatastoreActor.GetRequest <RelationalDataStoreActor.ExecuteScalar>() .Should().BeEquivalentTo(new RelationalDataStoreActor.ExecuteScalar( DataStoreStatements.GetProductById, new { Id = 12 })); }
public void Should_Return_Order_When_Found() { var document = new OrderDocument { OrderDate = DateTimeOffset.Parse("2020-07-01T19:00:00Z", CultureInfo.InvariantCulture), Lines = new[] { new OrderDocument.OrderLine { ProductId = 5, Amount = 1 }, new OrderDocument.OrderLine { ProductId = 7, Amount = 5 } } }; progDatastoreActor.SetResponseForRequest <RelationalDataStoreActor.ExecuteScalar>(request => new RelationalDataStoreActor.ScalarResult(JsonSerializer.Serialize(document))); Subject.Tell(input); Kit.ExpectMsg <OrderActor.OrderFound>().Should().BeEquivalentTo( new OrderActor.OrderFound { Id = 501, Document = document }); progDatastoreActor.GetRequest <RelationalDataStoreActor.ExecuteScalar>() .Should().BeEquivalentTo(new RelationalDataStoreActor.ExecuteScalar( DataStoreStatements.GetOrderById, new { Id = 501 })); }