Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        public void EmployeeAddedEventShouldReturnListOfCompanyProviders()
        {
            //Act
            var eae = new EmployeeAddedEvent(_employeeWithProviders, DateTime.Now);

            //Assert
            Assert.IsNotNull(eae.IntegrationTypes);
            Assert.AreEqual(1, eae.IntegrationTypes.Count);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 7
0
        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());
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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());
        }
Ejemplo n.º 10
0
        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);
        }