Example #1
0
        /// <summary>
        /// Returns a mock submission downloader.
        /// </summary>
        private Mock <ISubmissionDownloader> GetMockSubmissionDownloader(
            IArchive templateContents,
            StudentSubmissions studentSubmissions)
        {
            var submissionDownloader = new Mock <ISubmissionDownloader>();

            submissionDownloader
            .Setup
            (
                sd => sd.DownloadTemplateContentsAsync
                (
                    It.Is <Project>(p => p.Name == "Project1")
                )
            ).ReturnsAsync(templateContents);

            submissionDownloader
            .Setup
            (
                sd => sd.DownloadSubmissionsAsync
                (
                    It.Is <Checkpoint>(c => c.Name == "Checkpoint2"),
                    It.Is <IList <StudentDownloadRequest> >
                    (
                        requests =>
                        requests.Count == 2 &&
                        requests[0].Student.User.UserName == "Student1" &&
                        requests[0].Submitted == false &&
                        requests[1].Student.User.UserName == "Student2" &&
                        requests[1].Submitted == true
                    )
                )
            ).ReturnsAsync(studentSubmissions);

            return(submissionDownloader);
        }
Example #2
0
        /// <summary>
        /// Returns a mock submission archive builder.
        /// </summary>
        private Mock <ISubmissionArchiveBuilder> GetMockSubmissionArchiveBuilder(
            IArchive templateContents,
            StudentSubmissions studentSubmissions,
            Stream expectedArchive)
        {
            var archiveBuilder = new Mock <ISubmissionArchiveBuilder>();

            archiveBuilder
            .Setup
            (
                builder => builder.BuildSubmissionArchiveAsync
                (
                    It.Is <Project>(p => p.Name == "Project1"),
                    templateContents,
                    studentSubmissions
                )
            ).ReturnsAsync(expectedArchive);

            return(archiveBuilder);
        }
Example #3
0
        public async Task DownloadSubmissionsAsync_DownloasdSubmissions()
        {
            var database = GetDatabaseBuilder().Build();

            var templateContents   = new Mock <IArchive>().Object;
            var studentSubmissions = new StudentSubmissions(new List <StudentSubmission>());
            var expectedResult     = new MemoryStream();

            var submissionDownloader = GetMockSubmissionDownloader
                                       (
                templateContents,
                studentSubmissions
                                       );

            var submissionArchiveBuilder = GetMockSubmissionArchiveBuilder
                                           (
                templateContents,
                studentSubmissions,
                expectedResult
                                           );

            var submissionService = GetSubmissionService
                                    (
                database.Context,
                submissionDownloader: submissionDownloader.Object,
                submissionArchiveBuilder: submissionArchiveBuilder.Object
                                    );

            var result = await submissionService.DownloadSubmissionsAsync
                         (
                "Class1",
                "Project1",
                "Checkpoint2",
                "Period1"
                         );

            Assert.Equal(result, expectedResult);
        }
		/// <summary>
		/// Returns a mock submission archive builder.
		/// </summary>
		private Mock<ISubmissionArchiveBuilder> GetMockSubmissionArchiveBuilder(
			IArchive templateContents,
			StudentSubmissions studentSubmissions,
			Stream expectedArchive)
		{
			var archiveBuilder = new Mock<ISubmissionArchiveBuilder>();

			archiveBuilder
				.Setup
				(
					builder => builder.BuildSubmissionArchiveAsync
					(
						It.Is<Project>(p => p.Name == "Project1"),
						templateContents,
						studentSubmissions
					)
				).ReturnsAsync(expectedArchive);

			return archiveBuilder;
		}
		/// <summary>
		/// Returns a mock submission downloader.
		/// </summary>
		private Mock<ISubmissionDownloader> GetMockSubmissionDownloader(
			IArchive templateContents,
			StudentSubmissions studentSubmissions)
		{
			var submissionDownloader = new Mock<ISubmissionDownloader>();

			submissionDownloader
				.Setup
				(
					sd => sd.DownloadTemplateContentsAsync
					(
						It.Is<Project>(p => p.Name == "Project1")
					)
				).ReturnsAsync(templateContents);

			submissionDownloader
				.Setup
				(
					sd => sd.DownloadSubmissionsAsync
					(
						It.Is<Checkpoint>(c => c.Name == "Checkpoint2"),
						It.Is<IList<StudentDownloadRequest>>
						(
							requests =>
								   requests.Count == 2
								&& requests[0].Student.User.UserName == "Student1"
								&& requests[0].Submitted == false
								&& requests[1].Student.User.UserName == "Student2"
								&& requests[1].Submitted == true
						)
					)
				).ReturnsAsync(studentSubmissions);

			return submissionDownloader;
		}
		public async Task DownloadSubmissionsAsync_DownloasdSubmissions()
		{
			var database = GetDatabaseBuilder().Build();

			var templateContents = new Mock<IArchive>().Object;
			var studentSubmissions = new StudentSubmissions(new List<StudentSubmission>());
			var expectedResult = new MemoryStream();

			var submissionDownloader = GetMockSubmissionDownloader
			(
				templateContents, 
				studentSubmissions
			);

			var submissionArchiveBuilder = GetMockSubmissionArchiveBuilder
			(
				templateContents,
				studentSubmissions,
				expectedResult
			);

			var submissionService = GetSubmissionService
			(
				database.Context,
				submissionDownloader: submissionDownloader.Object,
				submissionArchiveBuilder: submissionArchiveBuilder.Object
			);

			var result = await submissionService.DownloadSubmissionsAsync
			(
				"Class1",
				"Project1",
				"Checkpoint2",
				"Period1"
			);

			Assert.Equal(result, expectedResult);
		}