public async Task EventSubsriptionsShouldThrowErrorForTwoStoreOfTheSameIntegrationProvider() { //Arrange var e = new EmployeeAddedEvent( new Employee(new Company(1, "", new List <EldProvider>() { new KeepTruckinEldProvider("sdlkfj") }), 1, "", "", ""), DateTime.Now); var store = new TestEventHanlderStore(); var store2 = new TestEventHanlderDuplicateStore(); var service = new EventSubscriptions(new List <IntegrationStore>() { store, store2 }); //Act try { await service.GetSubscriptions <EmployeeAddedEvent>(e); } catch (Exception exception) { //Assert Assert.AreEqual("There are more than one IntegrationStores for integration KeepTruckin", exception?.InnerException?.Message); throw; } }
public async Task EventSubsriptionsShouldThrowErrorForEventThatDoesNotHaveAStore() { //Arrange var e = new EmployeeAddedEvent( new Employee(new Company(1, "", new List <EldProvider>() { new JjKellerEldProvider("sdlkfj") }), 1, "", "", ""), DateTime.Now); var store = new TestEventHanlderStore(); var service = new EventSubscriptions(new List <IntegrationStore>() { store }); //Act try { await service.GetSubscriptions <EmployeeAddedEvent>(e); } catch (Exception exception) { //Assert Assert.AreEqual("IntegrationStore for integration type JjKeller has not implemented.", exception?.InnerException?.Message); throw; } }
public void EmployeeAddedEventShouldReturnListOfCompanyProviders() { //Act var eae = new EmployeeAddedEvent(_employeeWithProviders, DateTime.Now); //Assert Assert.IsNotNull(eae.IntegrationTypes); Assert.AreEqual(1, eae.IntegrationTypes.Count); }
public void EmployeeAddedEventShouldReturnEmptyListForCompanyWithNoIntegrationTypes() { //Act var eae = new EmployeeAddedEvent(_employee, DateTime.Now); //Assert Assert.IsNotNull(eae.IntegrationTypes); Assert.AreEqual(0, eae.IntegrationTypes.Count); }
public async Task GeotabShouldHandleEmployeeAddedEvent() { //Arrange var logger = new Mock <ILogger>(); var employeeProvider = new Mock <IEmployeeWriteProvider>(); var geotab = new Trucking.Business.Providers.Geotab.Geotab(logger.Object, employeeProvider.Object); var handler = geotab as IHandle <EmployeeAddedEvent>; var e = new EmployeeAddedEvent(_employeeWithProviders, DateTime.Now); //Act await handler.Handle(e); //Assert employeeProvider.Verify(f => f.AddEmployee(_employeeWithProviders), Times.Once); logger.Verify(f => f.LogMessage(e), Times.Once); }
public async Task KeepTruckinShouldHandleEmployeeAddedEvent() { //Arrange var logger = new Mock <ILogger>(); var employeeProvider = new Mock <IEmployeeWriteProvider>(); var keepTruckin = new KeepTruckin(logger.Object, employeeProvider.Object); var handler = keepTruckin as IHandle <EmployeeAddedEvent>; var e = new EmployeeAddedEvent(_employeeWithProviders, DateTime.Now); //Act await handler.Handle(e); //Assert employeeProvider.Verify(f => f.AddEmployee(_employeeWithProviders), Times.Once); logger.Verify(f => f.LogMessage(e), Times.Once); }
public async Task EventSubsriptionsShouldReturnListOfValidHandlers() { //Arrange var e = new EmployeeAddedEvent( new Employee(new Company(1, "", new List <EldProvider>() { new KeepTruckinEldProvider("sdlkfj") }), 1, "", "", ""), DateTime.Now); var store = new TestEventHanlderStore(); var service = new EventSubscriptions(new List <IntegrationStore>() { store }); //Act var subscriptions = await service.GetSubscriptions <EmployeeAddedEvent>(e); //Assert Assert.AreEqual(1, subscriptions.Count()); }
public async Task EventPublisherShouldCallHandleOnEventHandlerWhenEventIsPublished() { //Arrange var logger = new Mock <ILogger>(); var e = new EmployeeAddedEvent( new Employee(new Company(1, ""), 1, "", "", ""), DateTime.Now); var t = new List <Trucking.Business.Providers.Integration>(); var kt = new Mock <TestEventHandler>(); t.Add(kt.Object); var service = new Mock <ISubscriptionService>(); service.Setup(f => f.GetSubscriptions <EmployeeAddedEvent>(e)) .Returns(Task.FromResult(t.Cast <IHandle <EmployeeAddedEvent> >())); var publisher = new EventPublisher(logger.Object, service.Object); //Act await publisher.Publish(e); //Assert kt.Verify(f => f.Handle(e), Times.Once); }
public async Task EventSubsriptionsShouldReturnEmptyListWhenEventProviderListDoesNotMatchProvidersReturnedFromSubscription() { //Arrange var e = new EmployeeAddedEvent( new Employee(new Company(1, "", new List <EldProvider>() { new JjKellerEldProvider("sdlkfj") }), 1, "", "", ""), DateTime.Now); var store = new TestEventHanlderStore(); var store2 = new TestJjKellerEventHanlderStore(); var service = new EventSubscriptions(new List <IntegrationStore>() { store, store2 }); //Act var subscriptions = await service.GetSubscriptions <EmployeeAddedEvent>(e); //Assert Assert.AreEqual(0, subscriptions.Count()); }
public async Task ShouldLogAllHandledEventsAndNotLogEventsThatWereNotHandled() { var tasks = new ConcurrentBag <Task>(); var sw = new Stopwatch(); var container = Core.IoC.Container; TestIoC.InitBusiness(container); #region events var e = new EmployeeAddedEvent( new Employee( new Company(2, "", new List <EldProvider>() { new KeepTruckinEldProvider("1234567890") }), 1, "James", "Kesinger", "jakesinger"), DateTime.UtcNow); var f = new EmployeeDeletedEvent( new Employee( new Company(2, "", new List <EldProvider>() { new GeotabEldProvider("jkes", "sdlkj", "company") }), 3, "Justin", "Kesinger", "jukesinger"), DateTime.UtcNow); var g = new EmployeeUpdatedEvent( new Employee( new Company(3, "", new List <EldProvider>() { new JjKellerEldProvider("654654654") }), 2, "Jason", "Kesinger", "jkesinger"), DateTime.UtcNow); var h = new TruckAddedEvent( new Truck(1, new Company(3, "Unit 204", new List <EldProvider>() { new KeepTruckinEldProvider("654654654") })), DateTime.UtcNow); #endregion var publisher = Core.IoC.Container.Resolve <IEventPublisher>(); sw.Start(); Parallel.For(0, 2000, (i) => { if (i % 2 == 0) { tasks.Add(publisher.Publish(e)); } else if (i % 3 == 0) { tasks.Add(publisher.Publish(g)); } else { tasks.Add(publisher.Publish(f)); } tasks.Add(publisher.Publish(h)); //no one listening to this event }); await Task.WhenAll(tasks); sw.Stop(); FakeLogger.Dictionary.TryGetValue(e, out var addCnt); FakeLogger.Dictionary.TryGetValue(g, out var updateCnt); FakeLogger.Dictionary.TryGetValue(f, out var deleteCnt); var hasHEvents = FakeLogger.Dictionary.TryGetValue(h, out var hCnt); Assert.AreEqual(1000, addCnt); Assert.AreEqual(333, updateCnt); Assert.AreEqual(667, deleteCnt); Assert.IsFalse(hasHEvents); Assert.AreEqual(0, hCnt); Assert.IsTrue(sw.Elapsed.TotalSeconds < 60); }