Exemple #1
0
        public async Task ProcessEventDoesNotStoreEngagementEventOnSharepoint()
        {
            var    mockSharepointManager = new MockSharepointManager();
            var    courseCatalog         = new MockSharepointCourseCatalog();
            string courseId          = "COMP0101";
            string listToStoreEvents = "Attendance Events";

            courseCatalog.mockCatalog.Add(courseId, new CourseCatalogType {
                ListName = listToStoreEvents, JoinWebUrl = null
            });
            mockSharepointManager.CreateList(listToStoreEvents, "", new List <string>());

            var eventAggregator = new EventAggregator(mockSharepointManager, courseCatalog, new InMemoryLogger <EventAggregator>());

            StudentEvent engagementEvent = new StudentEvent
            {
                CourseID     = courseId,
                EventType    = EventType.Engagement,
                ActivityType = "Video",
                ActivityName = "Introductory Lesson",
                Timestamp    = DateTime.UtcNow,
                Student      = new Student {
                    Email = "*****@*****.**", FirstName = "a", LastName = "b", ID = " 0"
                }
            };
            await eventAggregator.ProcessEvent(engagementEvent);

            var itemsInSharepointList = await mockSharepointManager.GetItemsFromList(listToStoreEvents);

            Assert.Empty(itemsInSharepointList);
        }
Exemple #2
0
        public async Task ProcessEventIgnoresAttendanceEventIfNotFoundInCourseCatalog()
        {
            var          mockSharepointManager = new MockSharepointManager();
            var          emptyCourseCatalog    = new MockSharepointCourseCatalog();
            const string listToStoreEvents     = "Attendance Events";

            mockSharepointManager.CreateList(listToStoreEvents, "", new List <string>());
            const string courseIdNotInCatalog = "COMP0101";

            var eventAggregator = new EventAggregator(mockSharepointManager, emptyCourseCatalog, new InMemoryLogger <EventAggregator>());

            StudentEvent eventToStore = new StudentEvent
            {
                CourseID     = courseIdNotInCatalog,
                EventType    = EventType.Attendance,
                ActivityType = "Video",
                ActivityName = "Introductory Lesson",
                Timestamp    = DateTime.UtcNow,
                Student      = new Student {
                    Email = "*****@*****.**", FirstName = "a", LastName = "b", ID = " 0"
                }
            };
            await eventAggregator.ProcessEvent(eventToStore);

            var itemsInSharepointList = await mockSharepointManager.GetItemsFromList(listToStoreEvents);

            Assert.Empty(itemsInSharepointList);
        }
Exemple #3
0
        public async Task ProcessEventForgetToCreateList()
        {
            var mockSharepointManager = new MockSharepointManager();
            var courseCatalog         = new MockSharepointCourseCatalog();

            string courseId          = "COMP0101";
            string listToStoreEvents = "Attendance Events";

            courseCatalog.mockCatalog.Add(courseId, new CourseCatalogType {
                ListName = listToStoreEvents, JoinWebUrl = null
            });

            bool eventListExist = mockSharepointManager.CheckListExists(listToStoreEvents);

            Assert.False(eventListExist);

            var eventAggregator = new EventAggregator(mockSharepointManager, courseCatalog, new InMemoryLogger <EventAggregator>());

            StudentEvent eventToStore = new StudentEvent
            {
                CourseID     = courseId,
                EventType    = EventType.Attendance,
                ActivityType = "Video",
                ActivityName = "Introductory Lesson",
                Timestamp    = DateTime.UtcNow,
                Student      = new Student {
                    Email = "*****@*****.**", FirstName = "a", LastName = "b", ID = " 0"
                }
            };
            await eventAggregator.ProcessEvent(eventToStore);

            bool afterProcessEventListExist = mockSharepointManager.CheckListExists(listToStoreEvents);

            Assert.True(afterProcessEventListExist);
        }
Exemple #4
0
        public async Task ProcessTeamsMeeting()
        {
            var _graphHelper     = new MockGraphHelper();
            var _logger          = new InMemoryLogger <MsGraphAdapter>();
            var _courseCatalog   = new MockSharepointCourseCatalog();
            var _eventAggregator = new MockEventAggregator();
            var _graphAdapter    = new MsGraphAdapter(_eventAggregator, _logger, _graphHelper, _courseCatalog);


            string courseId          = "COMP0102";
            string listToStoreEvents = "Attendance Events";

            _courseCatalog.mockCatalog.Add(courseId, new CourseCatalogType {
                ListName = listToStoreEvents, JoinWebUrl = "testjoinweburl.com"
            });

            // JoinWebUrl does not exist in course catalog
            var callIdJoinWebUrlNotExist = "22222";
            await _graphAdapter.ProcessEvents(callIdJoinWebUrlNotExist);

            Assert.Empty(_eventAggregator.processedEvents);

            //Only organiser is in meeting
            var callIdJoinWebUrlOrganiserOnly = "44444";
            await _graphAdapter.ProcessEvents(callIdJoinWebUrlOrganiserOnly);

            Assert.Empty(_eventAggregator.processedEvents);

            // JoinWebUrl exists in course catalog
            var callIdJoinWebUrl = "33333";
            await _graphAdapter.ProcessEvents(callIdJoinWebUrl);

            Assert.Single(_eventAggregator.processedEvents);

            //Ensure event organiser data isn't sent to event aggregator
            Assert.True(1 == _eventAggregator.processedEvents.Count());

            //Correct student data is stored
            var processedEvent = _eventAggregator.processedEvents[0];

            Assert.Equal("COMP0102", processedEvent.CourseID);
            Assert.Equal(EventType.Attendance, processedEvent.EventType);
            Assert.Equal("Meeting", processedEvent.ActivityType);
            Assert.Equal("Weekly Lecture", processedEvent.ActivityName);
            Assert.Equal("*****@*****.**", processedEvent.Student.Email);
            Assert.Equal("John", processedEvent.Student.FirstName);
            Assert.Equal("Doe", processedEvent.Student.LastName);
            Assert.Equal("00000", processedEvent.Student.ID);
        }
Exemple #5
0
        public async Task ProcessTeamsMeetingWithoutJoinWebUrl()
        {
            var _graphHelper     = new MockGraphHelper();
            var _logger          = new InMemoryLogger <MsGraphAdapter>();
            var _courseCatalog   = new MockSharepointCourseCatalog();
            var _eventAggregator = new MockEventAggregator();
            var _graphAdapter    = new MsGraphAdapter(_eventAggregator, _logger, _graphHelper, _courseCatalog);

            var    callId            = "11111";
            string courseId          = "COMP0102";
            string listToStoreEvents = "Attendance Events";

            _courseCatalog.mockCatalog.Add(courseId, new CourseCatalogType {
                ListName = listToStoreEvents, JoinWebUrl = "testjoinweburl.com"
            });

            await _graphAdapter.ProcessEvents(callId);

            Assert.Empty(_eventAggregator.processedEvents);
        }
Exemple #6
0
        public async Task ProcessEventStoresAttendanceEventOnSharepoint()
        {
            var    mockSharepointManager = new MockSharepointManager();
            var    courseCatalog         = new MockSharepointCourseCatalog();
            string courseId          = "COMP0101";
            string listToStoreEvents = "Attendance Events";

            courseCatalog.mockCatalog.Add(courseId, listToStoreEvents);
            mockSharepointManager.CreateList(listToStoreEvents, "", new List <string>());

            var eventAggregator = new EventAggregator(mockSharepointManager, courseCatalog, new InMemoryLogger <EventAggregator>());

            StudentEvent eventToStore = new StudentEvent
            {
                CourseID     = courseId,
                EventType    = EventType.Attendance,
                ActivityType = "Video",
                ActivityName = "Introductory Lesson",
                Timestamp    = DateTime.UtcNow,
                Student      = new Student {
                    Email = "*****@*****.**", FirstName = "a", LastName = "b", ID = " 0"
                }
            };
            await eventAggregator.ProcessEvent(eventToStore);


            var itemsInSharepointList = await mockSharepointManager.GetItemsFromList(listToStoreEvents);

            Assert.Single(itemsInSharepointList);
            var itemInList = itemsInSharepointList[0];

            Assert.Equal(eventToStore.CourseID, (string)itemInList["CourseID"]);
            Assert.Equal(eventToStore.Student.Email, (string)itemInList["StudentEmail"]);
            Assert.Equal(eventToStore.EventType.ToString(), (string)itemInList["EventType"]);
            Assert.Equal(eventToStore.ActivityType, (string)itemInList["ActivityType"]);
            Assert.Equal(eventToStore.ActivityName, (string)itemInList["ActivityName"]);
            Assert.Equal(eventToStore.Timestamp, (DateTime)itemInList["Timestamp"]);
        }