/// <summary> /// DELETE /api/employees/{id} /// </summary> /// <param name="id"></param> /// <param name="data"></param> /// <returns></returns> public HttpResponseMessage Delete(int id, EmployeeModel model) { var context = this.DbContext; var entity = context.Employees.Find(id); if (entity == null) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)); } if (!this.User.CanDelete(entity)) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Forbidden)); } // create the web event var webEvent = new EmployeeDeletedEvent(entity); // delete the entity context.Employees.Remove(entity); // persist changes to the database context.SaveChanges(); // fire the web event webEvent.Raise(); return(new HttpResponseMessage(HttpStatusCode.NoContent)); }
public void EmployeeDeletedEventShouldReturnListOfCompanyProviders() { //Act var eae = new EmployeeDeletedEvent(_employeeWithProviders, DateTime.Now); //Assert Assert.IsNotNull(eae.IntegrationTypes); Assert.AreEqual(1, eae.IntegrationTypes.Count); }
public void EmployeeDeletedEventShouldReturnEmptyListForCompanyWithNoIntegrationTypes() { //Act var eae = new EmployeeDeletedEvent(_employee, DateTime.Now); //Assert Assert.IsNotNull(eae.IntegrationTypes); Assert.AreEqual(0, eae.IntegrationTypes.Count); }
public async Task GeotabShouldHandleEmployeeDeletedEvent() { //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 <EmployeeDeletedEvent>; var e = new EmployeeDeletedEvent(_employeeWithProviders, DateTime.Now); //Act await handler.Handle(e); //Assert employeeProvider.Verify(f => f.DeleteEmployee(_employeeWithProviders), Times.Once); logger.Verify(f => f.LogMessage(e), Times.Once); }
public async Task KeepTruckinShouldHandleEmployeeDeletedEvent() { //Arrange var logger = new Mock <ILogger>(); var employeeProvider = new Mock <IEmployeeWriteProvider>(); var keepTruckin = new KeepTruckin(logger.Object, employeeProvider.Object); var handler = keepTruckin as IHandle <EmployeeDeletedEvent>; var e = new EmployeeDeletedEvent(_employeeWithProviders, DateTime.Now); //Act await handler.Handle(e); //Assert employeeProvider.Verify(f => f.DeleteEmployee(_employeeWithProviders), Times.Once); logger.Verify(f => f.LogMessage(e), Times.Once); }
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); }
public async Task Handle(EmployeeDeletedEvent domainEvent) { await _logger.LogMessage(domainEvent); await _employeeProvider.DeleteEmployee(domainEvent.Employee); }