public async Task ShouldGetAllStudentExamsAsync()
        {
            // given
            int randomNumber       = GetRandomNumber();
            var randomStudentExams = new List <StudentExam>();

            for (int i = 0; i < randomNumber; i++)
            {
                randomStudentExams.Add(await PostRandomStudentExamAsync());
            }

            List <StudentExam> inputStudentExams    = randomStudentExams;
            List <StudentExam> expectedStudentExams = inputStudentExams.ToList();

            // when
            List <StudentExam> actualStudentExams = await this.otripleSApiBroker.GetAllStudentExamsAsync();

            // then
            foreach (StudentExam expectedStudentExam in expectedStudentExams)
            {
                StudentExam actualStudentExam = actualStudentExams.Single(student => student.Id == expectedStudentExam.Id);
                actualStudentExam.Should().BeEquivalentTo(expectedStudentExam);
                await DeleteStudentExam(actualStudentExam);
            }
        }
Beispiel #2
0
        public async Task ShouldRetrieveStudentExamByIdAsync()
        {
            // given
            Guid           randomStudentExamId = Guid.NewGuid();
            Guid           inputStudentExamId  = randomStudentExamId;
            DateTimeOffset randomDateTime      = GetRandomDateTime();
            StudentExam    randomStudentExam   = CreateRandomStudentExam(randomDateTime);
            StudentExam    storageStudentExam  = randomStudentExam;
            StudentExam    expectedStudentExam = storageStudentExam;

            this.storageBrokerMock.Setup(broker =>
                                         broker.SelectStudentExamByIdAsync(inputStudentExamId))
            .ReturnsAsync(storageStudentExam);

            // when
            StudentExam actualStudentExam =
                await this.studentExamService.RetrieveStudentExamByIdAsync(inputStudentExamId);

            // then
            actualStudentExam.Should().BeEquivalentTo(expectedStudentExam);

            this.dateTimeBrokerMock.Verify(broker =>
                                           broker.GetCurrentDateTime(),
                                           Times.Never);

            this.storageBrokerMock.Verify(broker =>
                                          broker.SelectStudentExamByIdAsync(inputStudentExamId),
                                          Times.Once);

            this.dateTimeBrokerMock.VerifyNoOtherCalls();
            this.storageBrokerMock.VerifyNoOtherCalls();
            this.loggingBrokerMock.VerifyNoOtherCalls();
        }
Beispiel #3
0
        public async Task ShouldModifyStudentExamAsync()
        {
            // given
            int            randomNumber                   = GetRandomNumber();
            int            randomDays                     = randomNumber;
            DateTimeOffset randomDate                     = GetRandomDateTime();
            DateTimeOffset randomInputDate                = GetRandomDateTime();
            StudentExam    randomStudentExam              = CreateRandomStudentExam(randomInputDate);
            StudentExam    inputStudentExam               = randomStudentExam;
            StudentExam    afterUpdateStorageStudentExam  = inputStudentExam;
            StudentExam    expectedStudentExam            = afterUpdateStorageStudentExam;
            StudentExam    beforeUpdateStorageStudentExam = randomStudentExam.DeepClone();

            inputStudentExam.UpdatedDate = randomDate;
            Guid studentId  = inputStudentExam.StudentId;
            Guid guardianId = inputStudentExam.ExamId;

            this.dateTimeBrokerMock.Setup(broker =>
                                          broker.GetCurrentDateTime())
            .Returns(randomDate);

            this.storageBrokerMock.Setup(broker =>
                                         broker.SelectStudentExamByIdAsync(inputStudentExam.Id))
            .ReturnsAsync(beforeUpdateStorageStudentExam);

            this.storageBrokerMock.Setup(broker =>
                                         broker.UpdateStudentExamAsync(inputStudentExam))
            .ReturnsAsync(afterUpdateStorageStudentExam);

            // when
            StudentExam actualStudentExam =
                await this.studentExamService.ModifyStudentExamAsync(inputStudentExam);

            // then
            actualStudentExam.Should().BeEquivalentTo(expectedStudentExam);

            this.dateTimeBrokerMock.Verify(broker =>
                                           broker.GetCurrentDateTime(),
                                           Times.Once);

            this.storageBrokerMock.Verify(broker =>
                                          broker.SelectStudentExamByIdAsync(inputStudentExam.Id),
                                          Times.Once);

            this.storageBrokerMock.Verify(broker =>
                                          broker.UpdateStudentExamAsync(inputStudentExam),
                                          Times.Once);

            this.storageBrokerMock.VerifyNoOtherCalls();
            this.loggingBrokerMock.VerifyNoOtherCalls();
            this.dateTimeBrokerMock.VerifyNoOtherCalls();
        }
        public async Task ShouldPostStudentExamAsync()
        {
            // given
            StudentExam randomStudentExam = await CreateRandomStudentExamAsync();

            StudentExam inputStudentExam    = randomStudentExam;
            StudentExam expectedStudentExam = inputStudentExam;

            // when
            StudentExam actualStudentExam =
                await this.otripleSApiBroker.PostStudentExamAsync(inputStudentExam);

            // then
            actualStudentExam.Should().BeEquivalentTo(expectedStudentExam);
            await DeleteStudentExam(actualStudentExam);
        }
        public async Task ShouldPutStudentExamAsync()
        {
            // given
            StudentExam randomStudentExam = await PostRandomStudentExamAsync();

            StudentExam modifiedStudentExam = await UpdateStudentExamRandomAsync(randomStudentExam);

            // when
            await this.otripleSApiBroker.PutStudentExamAsync(modifiedStudentExam);

            StudentExam actualStudentExam =
                await this.otripleSApiBroker.GetStudentExamByIdAsync(randomStudentExam.Id);

            // then
            actualStudentExam.Should().BeEquivalentTo(modifiedStudentExam);
            await DeleteStudentExam(actualStudentExam);
        }
        public async Task ShouldDeleteStudentExamAsync()
        {
            // given
            StudentExam randomStudentExam = await PostRandomStudentExamAsync();

            StudentExam inputStudentExam    = randomStudentExam;
            StudentExam expectedStudentExam = inputStudentExam;

            // when
            StudentExam deletedStudentExam = await DeleteStudentExam(inputStudentExam);

            ValueTask <StudentExam> getStudentExamByIdTask =
                this.otripleSApiBroker.GetStudentExamByIdAsync(inputStudentExam.Id);

            // then
            deletedStudentExam.Should().BeEquivalentTo(expectedStudentExam);

            await Assert.ThrowsAsync <HttpResponseNotFoundException>(() =>
                                                                     getStudentExamByIdTask.AsTask());
        }
Beispiel #7
0
        public async Task ShouldAddStudentStudentExamAsync()
        {
            // given
            DateTimeOffset randomDateTime    = GetRandomDateTime();
            DateTimeOffset dateTime          = randomDateTime;
            StudentExam    randomStudentExam = CreateRandomStudentExam(randomDateTime);

            randomStudentExam.UpdatedBy = randomStudentExam.CreatedBy;
            StudentExam inputStudentExam    = randomStudentExam;
            StudentExam storageStudentExam  = randomStudentExam;
            StudentExam expectedStudentExam = storageStudentExam;

            this.dateTimeBrokerMock.Setup(broker =>
                                          broker.GetCurrentDateTime())
            .Returns(dateTime);

            this.storageBrokerMock.Setup(broker =>
                                         broker.InsertStudentExamAsync(inputStudentExam))
            .ReturnsAsync(storageStudentExam);

            // when
            StudentExam actualStudentExam =
                await this.studentExamService.AddStudentExamAsync(inputStudentExam);

            // then
            actualStudentExam.Should().BeEquivalentTo(expectedStudentExam);

            this.dateTimeBrokerMock.Verify(broker =>
                                           broker.GetCurrentDateTime(),
                                           Times.Once);

            this.storageBrokerMock.Verify(broker =>
                                          broker.InsertStudentExamAsync(inputStudentExam),
                                          Times.Once);

            this.dateTimeBrokerMock.VerifyNoOtherCalls();
            this.storageBrokerMock.VerifyNoOtherCalls();
            this.storageBrokerMock.VerifyNoOtherCalls();
        }