public void ShouldGetCorrectProcessManagerReferencesFromContainer() { // Arrange _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeMessage1>))).Returns(new List<HandlerReference> { new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage1) } }); _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IStartProcessManager<FakeMessage1>))).Returns(new List<HandlerReference> { new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage1) } }); _mockContainer.Setup(x => x.GetInstance(typeof(FakeProcessManager1))).Returns(new FakeProcessManager1()); var data = new FakeProcessManagerData { User = "******" }; var mockPersistanceData = new Mock<IPersistanceData<FakeProcessManagerData>>(); mockPersistanceData.Setup(x => x.Data).Returns(data); //_mockProcessManagerFinder.Setup(x => x.FindData<FakeProcessManagerData>(It.IsAny<Guid>())).Returns(mockPersistanceData.Object); //_mockProcessManagerFinder.Setup(x => x.FindData<FakeProcessManagerData>(It.IsAny<Guid>())).Returns(mockPersistanceData.Object); _mockProcessManagerFinder.Setup(x => x.FindData<FakeProcessManagerData>(It.IsAny<IProcessManagerPropertyMapper>(), It.IsAny<Message>())).Returns(mockPersistanceData.Object); var processManagerProcessor = new ProcessManagerProcessor(_mockProcessManagerFinder.Object, _mockContainer.Object); // Act processManagerProcessor.ProcessMessage<FakeMessage1>(JsonConvert.SerializeObject(new FakeMessage1(Guid.NewGuid()) { Username = "******" }), new ConsumeContext()); // Assert _mockContainer.Verify(x => x.GetHandlerTypes(typeof (IMessageHandler<FakeMessage1>)), Times.Once); _mockContainer.Verify(x => x.GetHandlerTypes(typeof (IStartProcessManager<FakeMessage1>)), Times.Once); }
public void ShouldRemoveProcessManagerDataIfProcessManagerIsComplete() { // Arrange var id = Guid.NewGuid(); var message = new FakeMessage2(id) { Email = "*****@*****.**" }; var data = new FakeProcessManagerData { User = "******" }; var mockPersistanceData = new Mock<IPersistanceData<FakeProcessManagerData>>(); mockPersistanceData.Setup(x => x.Data).Returns(data); _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeMessage2>))).Returns(new List<HandlerReference> { new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage2) } }); var processManager = new FakeProcessManager1 { Complete = true }; _mockContainer.Setup(x => x.GetInstance(typeof(FakeProcessManager1))).Returns(processManager); _mockProcessManagerFinder.Setup(x => x.FindData<FakeProcessManagerData>(It.IsAny<ProcessManagerPropertyMapper>(), It.Is<FakeMessage2>(m => m.CorrelationId == id))).Returns(mockPersistanceData.Object); _mockProcessManagerFinder.Setup(x => x.UpdateData(It.IsAny<FakePersistanceData>())); var processManagerProcessor = new ProcessManagerProcessor(_mockProcessManagerFinder.Object, _mockContainer.Object); // Act processManagerProcessor.ProcessMessage<FakeMessage2>(JsonConvert.SerializeObject(message), new ConsumeContext()); // Assert _mockProcessManagerFinder.Verify(x => x.DeleteData(It.Is<IPersistanceData<FakeProcessManagerData>>(y => y.Data.Email == "*****@*****.**" && y.Data.User == "Tim Watson")), Times.Once); }
public void ShouldStartExistingProcessManagerWithConsumerContext() { // Arrange var id = Guid.NewGuid(); var message = new FakeMessage2(id) { Email = "*****@*****.**" }; var data = new FakeProcessManagerData { User = "******" }; var mockPersistanceData = new Mock<IPersistanceData<FakeProcessManagerData>>(); mockPersistanceData.Setup(x => x.Data).Returns(data); _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeMessage2>))).Returns(new List<HandlerReference> { new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage2) } }); var processManager = new FakeProcessManager1(); _mockContainer.Setup(x => x.GetInstance(typeof(FakeProcessManager1))).Returns(processManager); _mockProcessManagerFinder.Setup(x => x.FindData<FakeProcessManagerData>(It.IsAny<ProcessManagerPropertyMapper>(), It.Is<FakeMessage2>(m => m.CorrelationId == id))).Returns(mockPersistanceData.Object); var processManagerProcessor = new ProcessManagerProcessor(_mockProcessManagerFinder.Object, _mockContainer.Object); var context = new ConsumeContext(); // Act processManagerProcessor.ProcessMessage<FakeMessage2>(JsonConvert.SerializeObject(message), context); // Assert Assert.Equal(context, processManager.Context); }
public void ShouldPersistNewProcessManagerWithExistingPersistanceData() { // Arrange _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeMessage1>))).Returns(new List<HandlerReference> { new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage1) } }); _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IStartProcessManager<FakeMessage1>))).Returns(new List<HandlerReference> { new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage1) } }); var processManager = new FakeProcessManager1(); _mockContainer.Setup(x => x.GetInstance(typeof(FakeProcessManager1))).Returns(processManager); var data = new FakeProcessManagerData { User = "******" }; var mockPersistanceData = new Mock<IPersistanceData<FakeProcessManagerData>>(); mockPersistanceData.Setup(x => x.Data).Returns(data); _mockProcessManagerFinder.Setup(x => x.FindData<FakeProcessManagerData>(It.IsAny<IProcessManagerPropertyMapper>(), It.IsAny<Message>())).Returns(mockPersistanceData.Object); var processManagerProcessor = new ProcessManagerProcessor(_mockProcessManagerFinder.Object, _mockContainer.Object); // Act processManagerProcessor.ProcessMessage<FakeMessage1>(JsonConvert.SerializeObject(new FakeMessage1(Guid.NewGuid()) { Username = "******" }), new ConsumeContext()); // Assert _mockProcessManagerFinder.Verify(x => x.UpdateData(It.Is<IPersistanceData<FakeProcessManagerData>>(y => y.Data.User == "Jakub Pachansky")), Times.Exactly(2)); }
public void ShouldStartNewProcessManagerWithConsumerContext() { // Arrange _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeMessage1>))).Returns(new List<HandlerReference> { new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage1) } }); _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IStartProcessManager<FakeMessage1>))).Returns(new List<HandlerReference> { new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage1) } }); var processManager = new FakeProcessManager1(); _mockContainer.Setup(x => x.GetInstance(typeof(FakeProcessManager1))).Returns(processManager); var data = new FakeProcessManagerData { User = "******" }; var mockPersistanceData = new Mock<IPersistanceData<FakeProcessManagerData>>(); mockPersistanceData.Setup(x => x.Data).Returns(data); _mockProcessManagerFinder.Setup(x => x.FindData<FakeProcessManagerData>(It.IsAny<IProcessManagerPropertyMapper>(), It.IsAny<Message>())).Returns(mockPersistanceData.Object); var processManagerProcessor = new ProcessManagerProcessor(_mockProcessManagerFinder.Object, _mockContainer.Object); var context = new ConsumeContext(); // Act processManagerProcessor.ProcessMessage<FakeMessage1>(JsonConvert.SerializeObject(new FakeMessage1(Guid.NewGuid()) { Username = "******" }), context); // Assert // Data.User is set by the ProcessManagers Execute method Assert.Equal(context, processManager.Context); }
public void ShouldRemoveProcessManagerDataIfProcessManagerIsComplete() { // Arrange var id = Guid.NewGuid(); var message = new FakeMessage2(id) { Email = "*****@*****.**" }; var data = new FakeProcessManagerData { User = "******" }; var mockPersistanceData = new Mock<IPersistanceData<FakeProcessManagerData>>(); mockPersistanceData.Setup(x => x.Data).Returns(data); _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeMessage2>))).Returns(new List<HandlerReference> { new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage2) } }); var processManager = new FakeProcessManager1 { Complete = true }; _mockContainer.Setup(x => x.GetInstance(typeof(FakeProcessManager1))).Returns(processManager); _mockProcessManagerFinder.Setup(x => x.FindData<FakeProcessManagerData>(id)).Returns(mockPersistanceData.Object); _mockProcessManagerFinder.Setup(x => x.UpdateData(It.IsAny<FakePersistanceData>())); _bus.StartConsuming(); // Act _fakeEventHandler(Encoding.UTF8.GetBytes(_serializer.Serialize(message))); // Assert _mockProcessManagerFinder.Verify(x => x.DeleteData(It.Is<IPersistanceData<FakeProcessManagerData>>(y => y.Data.Email == "*****@*****.**" && y.Data.User == "Tim Watson")), Times.Once); }
public void ShouldStartProcessManagerWithExistingData() { // Arrange var id = Guid.NewGuid(); var message = new FakeMessage2(id) { Email = "*****@*****.**" }; var data = new FakeProcessManagerData { User = "******" }; var mockPersistanceData = new Mock<IPersistanceData<FakeProcessManagerData>>(); mockPersistanceData.Setup(x => x.Data).Returns(data); _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeMessage2>))).Returns(new List<HandlerReference> { new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage2) } }); var processManager = new FakeProcessManager1(); _mockContainer.Setup(x => x.GetInstance(typeof(FakeProcessManager1))).Returns(processManager); _mockProcessManagerFinder.Setup(x => x.FindData<FakeProcessManagerData>(id)).Returns(mockPersistanceData.Object); _bus.StartConsuming(); // Act _fakeEventHandler(Encoding.UTF8.GetBytes(_serializer.Serialize(message))); // Assert Assert.Equal("Tim Watson", processManager.Data.User); // Can only be this if Data was set on process manager Assert.Equal("*****@*****.**", processManager.Data.Email); // Can only be this if execute was called }
public void ShouldFindExistingProcessManagerInstance() { // Arrange var id = Guid.NewGuid(); var message = new FakeMessage2(id); _mockContainer.Setup(x => x.GetHandlerTypes(typeof(IMessageHandler<FakeMessage2>))).Returns(new List<HandlerReference> { new HandlerReference { HandlerType = typeof(FakeProcessManager1), MessageType = typeof(FakeMessage2) } }); var processManager = new FakeProcessManager1(); _mockContainer.Setup(x => x.GetInstance(typeof(FakeProcessManager1))).Returns(processManager); var data = new FakeProcessManagerData { User = "******" }; var mockPersistanceData = new Mock<IPersistanceData<FakeProcessManagerData>>(); mockPersistanceData.Setup(x => x.Data).Returns(data); _mockProcessManagerFinder.Setup(x => x.FindData<FakeProcessManagerData>(id)).Returns(mockPersistanceData.Object); _bus.StartConsuming(); // Act _fakeEventHandler(Encoding.UTF8.GetBytes(_serializer.Serialize(message))); // Assert _mockContainer.Verify(x => x.GetInstance(typeof (FakeProcessManager1)), Times.Once); _mockProcessManagerFinder.Verify(x => x.FindData<FakeProcessManagerData>(id), Times.Once); }