public void GenerateEvent_ShouldCallAddToQueueOnlyOnce() { // Arrange var logger = (ListLogger)TestFactory.CreateLogger(LoggerTypes.List); var currentEventsTable = TestFactory.GetClientForTable("EventsTestTable"); var eventsQueueMock = new Mock <ICollector <Event> >(); var newEventsTableMock = new Mock <ICollector <Event> >(); // Act EventsGenerator.Run(null, logger, eventsQueueMock.Object, currentEventsTable, newEventsTableMock.Object).GetAwaiter().GetResult(); // Assert eventsQueueMock.Verify(m => m.Add(It.IsAny <Event>()), Times.Once()); }
public void AppointmentsConflictsDetector_ShoulLogMessageWhenStarted() { // Arrange var logger = (ListLogger)TestFactory.CreateLogger(LoggerTypes.List); var currentEventsTable = TestFactory.GetClientForTable("EventsTestTable"); var signalRMock = new Mock <IAsyncCollector <SignalRMessage> >(); // Act AppointmentsConflictsDetector.Run(null, currentEventsTable, signalRMock.Object, logger).GetAwaiter().GetResult(); // Assert var msg = logger.Logs[0]; Assert.AreEqual(true, msg.Contains("Appointments Conflicts Detector Timer trigger function executed at")); }
public void AppointmentsConflictsDetector_ThereIsConflictedEvents_ShouldAddMessageToSignalRService() { // Arrange var logger = (ListLogger)TestFactory.CreateLogger(LoggerTypes.List); var currentEventsTable = TestFactory.GetClientForTable("EventsTestTable"); var signalRMock = new Mock <IAsyncCollector <SignalRMessage> >(); AddConflictedEventsToTestTable(); // Act AppointmentsConflictsDetector.Run(null, currentEventsTable, signalRMock.Object, logger).GetAwaiter().GetResult(); // Assert signalRMock.Verify(m => m.AddAsync(It.IsAny <SignalRMessage>(), It.IsAny <CancellationToken>()), Times.Once()); }
public void AddConflictedEventsToTestTable() { var eventsTestTable = TestFactory.GetClientForTable("EventsTestTable"); // Add non conficted event, then add a conflicted event to this one // The conflicted event is created with an old so that it s detected as a conflict as 5 minute should pass // before showing the event as conflicted var rowId = Guid.NewGuid(); var nonConflictedTestEvent = new Event { RowKey = rowId.ToString(), PartitionKey = "BookingAppointmentEvent", EventId = rowId, PatientId = 1, DoctorId = 1, EventDate = DateTime.Now, EventCreationDate = DateTime.Now, EventType = "Booking Appointment", IsConflicted = false, IsConflictShown = false, }; rowId = Guid.NewGuid(); var conflictedTestEvent = new Event { RowKey = rowId.ToString(), PartitionKey = "BookingAppointmentEvent", EventId = rowId, PatientId = 2, DoctorId = 1, EventDate = DateTime.Now, EventCreationDate = DateTime.Now.AddMinutes(-6), EventType = "Booking Appointment", IsConflicted = true, IsConflictShown = false, OriginalEventId = nonConflictedTestEvent.EventId }; TableBatchOperation batchOperation = new TableBatchOperation(); batchOperation.Insert(nonConflictedTestEvent); batchOperation.Insert(conflictedTestEvent); eventsTestTable.ExecuteBatchAsync(batchOperation).GetAwaiter().GetResult(); }
public void AddEventsForDoctor1ToTestTable() { var eventsTestTable = TestFactory.GetClientForTable("EventsTestTable"); // Delete rows of doctor Id 1 if already exists TableQuery <Event> rangeQuery = new TableQuery <Event>(); rangeQuery.Where(TableQuery.GenerateFilterConditionForInt("DoctorId", QueryComparisons.Equal, 1)); var existingEvents = eventsTestTable.ExecuteQuerySegmentedAsync(rangeQuery, null).GetAwaiter().GetResult(); if (existingEvents.Any()) { TableBatchOperation batchDeleteOperation = new TableBatchOperation(); foreach (var item in existingEvents) { batchDeleteOperation.Delete(item); } eventsTestTable.ExecuteBatchAsync(batchDeleteOperation).GetAwaiter().GetResult(); } // Insert 2 events for patient Id = 3 var rowId = Guid.NewGuid(); var testEvent1 = new Event { RowKey = rowId.ToString(), PartitionKey = "BookingAppointmentEvent", EventId = rowId, PatientId = 3, DoctorId = 1, EventDate = DateTime.Now, EventCreationDate = DateTime.Now, EventType = "Booking Appointment", IsConflicted = false, IsConflictShown = false, }; TableBatchOperation batchInsertOperation = new TableBatchOperation(); batchInsertOperation.Insert(testEvent1); eventsTestTable.ExecuteBatchAsync(batchInsertOperation).GetAwaiter().GetResult(); }