public async Task UpdateInMemoryMappingGetsLatestCopyOfUnderlyingSharepointList() { var courseCatalogListName = "CourseCatalog"; SharepointSettings settings = SharepointSettingsWithCourseCatalogName(courseCatalogListName); var mockSharepointManager = new MockSharepointManager(); mockSharepointManager.CreateList(courseCatalogListName, "", new List <string>()); string courseIdThatWillBeDeleted = "COMP0100"; var itemThatWillBeDeleted = ListItemWithCourseIdAndListName(courseIdThatWillBeDeleted, "any", "any"); await mockSharepointManager.AddItemToList(courseCatalogListName, itemThatWillBeDeleted); var courseCatalog = new SharepointCourseCatalog(Options.Create(settings), new InMemoryLogger <SharepointCourseCatalog>(), mockSharepointManager); // simulate deleting an item from the sharepoint list mockSharepointManager.mockEventList[courseCatalogListName].Remove(itemThatWillBeDeleted); // simulate adding an item to the sharepoint list string courseIdThatWillBeAdded = "COMP0102"; string expectedListName = "expectedListName"; string expectedJoinWebUrl = "expectedJoinWebUrl"; await mockSharepointManager.AddItemToList(courseCatalogListName, ListItemWithCourseIdAndListName(courseIdThatWillBeAdded, expectedListName, expectedJoinWebUrl)); // update the catalog after modifying the underlying sharepoint list await courseCatalog.UpdateInMemoryMapping(); Assert.Throws <KeyNotFoundException>(() => courseCatalog.GetListNameForCourse(courseIdThatWillBeDeleted)); string actualListNameOfAddedEntry = courseCatalog.GetListNameForCourse(courseIdThatWillBeAdded); Assert.Equal(expectedListName, actualListNameOfAddedEntry); string actualCourseId = courseCatalog.GetCourseIDForJoinWebURL(expectedJoinWebUrl); Assert.Equal(courseIdThatWillBeAdded, actualCourseId); }
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); }
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); }
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); }
public void ConstructorCreatesCourseCatalogListIfNotExist() { var courseCatalogListName = "CourseCatalog"; var settings = SharepointSettingsWithCourseCatalogName(courseCatalogListName); var mockSharepointManager = new MockSharepointManager(); var courseCatalog = new SharepointCourseCatalog(Options.Create(settings), new InMemoryLogger <SharepointCourseCatalog>(), mockSharepointManager); bool catalogListWasCreated = mockSharepointManager.CheckListExists(courseCatalogListName); Assert.True(catalogListWasCreated); }
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"]); }