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