Exemple #1
0
        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());
        }
Exemple #2
0
        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"));
        }
Exemple #3
0
        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());
        }
Exemple #4
0
        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();
        }