Exemple #1
0
 private IQueryable <UserTest> GetUserTests(int testId, List <int> userIds)
 {
     return(UserTestService.GetAll(x => x.IsBest &&
                                   x.TestModuleSetId.HasValue &&
                                   userIds.Contains(x.UserId) &&
                                   x.TestId == testId));
 }
Exemple #2
0
        public PublicProfileVM GetPublic(int userID)
        {
            var user = UserService.GetByPK(userID);

            if (user == null)
            {
                return(null);
            }
            var currentUser = AuthService.CurrentUser;
            var tests       = new List <Test>();

            if (!user.HideCourses)
            {
                tests = UserTestService.GetAll(x => x.UserId == userID &&
                                               UserTestStatus.PassStatuses.Contains(x.Status)).OrderByDescending(x => x.RunDate)
                        .Select(x => x.Test).Distinct().ToList();
            }
            var model =
                new PublicProfileVM()
            {
                User          = user,
                IsExcelMaster = IsExcelMaster(user),
                IsOwner       = currentUser != null && currentUser.UserID == userID,
                Socials       = GetSocials(user.UserContacts)
                                .Where(x => !x.Contact.IsEmpty()).ToList(),
                SuccessStory = SuccessStoryService.GetAll()
                               .FirstOrDefault(ss => ss.UserID == user.UserID),
                Tests        = tests,
                Competitions = CompetitionService.GetAll()
                               .Where(c => c.WinnerID == user.UserID).ToList(),
                IsBest = IsBest(user),
            };

            return(model);
        }
Exemple #3
0
        public void Invoke_SaveChanges_DataSaver()
        {
            // Arrange
            var    fakeTestId   = new Guid();
            string fakeUserId   = "userId";
            bool   fakeIsPassed = true;

            var fakeUserTest = new UserTest()
            {
                UserId = fakeUserId,
                TestId = fakeTestId
            };
            var fakeUserTests = new List <UserTest>()
            {
                fakeUserTest
            }.AsQueryable();

            var testRepoStub        = new Mock <IDataRepository <Test> >();
            var mockDataSaver       = new Mock <IDataSaver>();
            var mappingProviderStub = new Mock <IMappingProvider>();
            var categoryRepoStub    = new Mock <IDataRepository <Category> >();
            var userTestRepoStub    = new Mock <IDataRepository <UserTest> >();
            var timeProviderStub    = new Mock <TimeProvider>();

            var userTestService = new UserTestService(testRepoStub.Object, mockDataSaver.Object, mappingProviderStub.Object, userTestRepoStub.Object, timeProviderStub.Object);

            userTestRepoStub.SetupGet(utr => utr.All).Returns(fakeUserTests);

            // Act
            userTestService.SubmitUserTest(fakeTestId.ToString(), fakeUserId, fakeIsPassed);

            // Assert
            mockDataSaver.Verify(ds => ds.SaveChanges(), Times.Once);
        }
        public void Return_False_WhenAttendedTest_IsNotSubmitted()
        {
            // Arrange
            var    fakeTestId = new Guid();
            string fakeUserId = "userId";

            var fakeUserTest = new UserTest()
            {
                UserId     = fakeUserId,
                TestId     = fakeTestId,
                IsSubmited = false
            };

            var fakeUserTests = new List <UserTest>()
            {
                fakeUserTest
            }.AsQueryable();

            var testRepoStub        = new Mock <IDataRepository <Test> >();
            var dataSaverStub       = new Mock <IDataSaver>();
            var mappingProviderStub = new Mock <IMappingProvider>();
            var categoryRepoStub    = new Mock <IDataRepository <Category> >();
            var userTestRepoStub    = new Mock <IDataRepository <UserTest> >();
            var timeProviderStub    = new Mock <TimeProvider>();

            var userTestService = new UserTestService(testRepoStub.Object, dataSaverStub.Object, mappingProviderStub.Object, userTestRepoStub.Object, timeProviderStub.Object);

            userTestRepoStub.SetupGet(utr => utr.All).Returns(fakeUserTests);

            // Act
            var result = userTestService.UserHasCompletedTest(fakeUserId, fakeTestId.ToString());

            // Assert
            Assert.IsFalse(result);
        }
Exemple #5
0
        public ActionResult DownloadTestCertificate(decimal orderDetailId, bool second)
        {
            var orderDetail = OrderDetailsService.FirstOrDefault(x =>
                                                                 x.OrderDetailID == orderDetailId && BerthTypes.AllPaidForTestCerts.Contains(x.StudentInGroup.BerthType_TC));
            var userTestId = orderDetail.UserTestId.Value;

            UserTestService.LoadWith(x => x.Test, x => x.TestPassRule);
            var userTest = UserTestService.GetByPK(userTestId);

            TestCertificatePermission(orderDetail, userTest);
            var certificateFileSys = UserImages.GetTestCertFileSys(userTestId);

            try {
                System.IO.File.Delete(certificateFileSys);
            } catch (Exception e) {
                return(Content("Сертификат уже скачивается"));
            }
            var isEng = orderDetail.Params.Lang == TestCertLang.Eng;

            if (orderDetail.Params.Lang == TestCertLang.RusEng && second)
            {
                isEng = true;
            }
            using (var image = Image.FromFile(UserImages.GetTestCertFileSys(isEng ? 0 : 1))) {
                using (var result = ImageUtils.DrawTestString(image,
                                                              isEng ? User.EngFullName : User.FullName,
                                                              EntityUtils.GetTestCertName(isEng, userTest), userTest.RunDate.DefaultString(), userTest.Id))
                    result.Save(certificateFileSys);
            }
            return(File(certificateFileSys, "image/png", "certificate.png"));
        }
Exemple #6
0
        public void Throw_ArgumentNullException_When_UserTestIsNotFound()
        {
            // Arrange
            var    fakeTestId       = new Guid();
            string fakeUserId       = "userId";
            double fakeTestDuration = 30d;

            var fakeUserTests = new List <UserTest>()
            {
            }.AsQueryable();

            var testRepoStub        = new Mock <IDataRepository <Test> >();
            var dataSaverStub       = new Mock <IDataSaver>();
            var mappingProviderStub = new Mock <IMappingProvider>();
            var categoryRepoStub    = new Mock <IDataRepository <Category> >();
            var userTestRepoStub    = new Mock <IDataRepository <UserTest> >();
            var timeProviderStub    = new Mock <TimeProvider>();

            var userTestService = new UserTestService(testRepoStub.Object, dataSaverStub.Object, mappingProviderStub.Object, userTestRepoStub.Object, timeProviderStub.Object);

            userTestRepoStub.SetupGet(utr => utr.All).Returns(fakeUserTests);

            Action executingGetTimeRemainingForUserTest = () => userTestService.GetTimeRemainingForUserTest(fakeUserId, fakeTestId.ToString(), fakeTestDuration);

            // Act & Assert
            Assert.ThrowsException <ArgumentNullException>(executingGetTimeRemainingForUserTest);
        }
Exemple #7
0
        private void UserTestPermission(int userTestId)
        {
            var userId = UserTestService.GetValues(userTestId, x => x.UserId);

            if (userId != AuthService.CurrentUser.UserID)
            {
                throw new PermissionException();
            }
        }
Exemple #8
0
        public ActionResult TestResults()
        {
            UserTestService.LoadWith(x => x.User, x => x.Test);
            var testIds   = _.List(707, 706, 708, 705);
            var userTests = UserTestService.GetAll(x => testIds.Contains(x.TestId)).ToList();
            var data      = UserTestResultService.GetResultData(_.List(userTests));

            return(File(Encoding.GetEncoding(1251).GetBytes(CsvUtil.Render(data)),
                        "text/csv", "TestResults.csv"));
        }
Exemple #9
0
        public GroupUserTests Create(GroupTest groupTest, List <int> userIds, UserTestService userTestService)
        {
            var userTests = userTestService.GetUserTests(groupTest).Where(x => userIds.Contains(x.UserId)).ToList();
            var best      =
                userTests.GroupBy(x => x.UserId).Select(x => x.OrderByDescending(y => y.Status).FirstOrDefault())
                .ToList();

            return(new GroupUserTests {
                GroupTest = groupTest, UserTests = best
            });
        }
Exemple #10
0
        public bool IsPreTestPass(OrderDetail od)
        {
            var result = UserTestService.GetAll(x => x.UserId == od.Order.UserID &&
                                                x.Course_TC == od.Course_TC).Select(x => x.Status)
                         .OrderByDescending(x => x).FirstOrDefault();

            if (result == 0)
            {
                return(false);
            }
            return(result > 1);
        }
        public void CreateUserTest_WithCorrectData_UserTestMustBeCreated()
        {
            var             uow = new Mock <IUnitOfWork>();
            UserTestService uts = new UserTestService(uow.Object);

            uow.Setup(x => x.UserTests.Create(new UserTest()));
            uow.Setup(x => x.Tests.Get(It.IsAny <string>())).Returns(new Test());

            uts.CreateUserTest(new UserTestDTO());

            uow.Verify(x => x.Save());
        }
        public void CreateUserTest_WithNullData_ValidationExceptionMustBeThrown()
        {
            var             uow = new Mock <IUnitOfWork>();
            UserTestService uts = new UserTestService(uow.Object);

            uow.Setup(x => x.UserTests.Create(new UserTest()));

            Assert.Throws <ValidationException>(() =>
            {
                uts.CreateUserTest(null);
            });
        }
        public void UpdateUserTest_WithInCorrectData_NotFoundExceptionMustBeThrown()
        {
            var             uow = new Mock <IUnitOfWork>();
            UserTestService uts = new UserTestService(uow.Object);

            uow.Setup(x => x.UserTests.Get(It.IsAny <string>())).Returns((UserTest)null);
            uow.Setup(x => x.UserTests.Update(new UserTest()));

            Assert.Throws <NotFoundException>(() =>
            {
                uts.UpdateUserTest(new UserTestDTO());
            });
        }
Exemple #14
0
        public ActionResult Result(int groupInfoId)
        {
            List <int> userIds;
            var        groupInfo = GetGroupInfo(groupInfoId, out userIds);

            UserTestService.LoadWith(x => x.User);
            var groupUserTestsList = groupInfo.GroupTests.Select(x => Create(x, userIds, UserTestService)).ToList();

            return(BaseViewWithModel(new GroupTestResultView(), new GroupTestResultVM {
                GroupInfo = groupInfo,
                GroupUserTestsList = groupUserTestsList
            }));
        }
Exemple #15
0
        public ActionResult UserTestCert(int id, string name)
        {
            var userTest = UserTestService.GetByPK(id);
            var isEng    = true;

            var certName = EntityUtils.GetTestCertName(isEng, userTest);
            var user     = userTest.User;
            var userName = name ?? (isEng
                                ? user.EngFullName ?? Linguistics.Translite(user.LastName + " " + user.FirstName, true)
                                : user.FullName);

            return(View((string)"TestCert", (object)Tuple.New(userName, certName, userTest)));
        }
 public UserSteps(
     ScenarioContext scenarioContext,
     UserTestService userTestService,
     TestDataUtil testDataUtil,
     NaheulbookHttpClient naheulbookHttpClient,
     NaheulbookApiServer naheulbookApiServer
     )
 {
     _scenarioContext     = scenarioContext;
     _userTestService     = userTestService;
     _testDataUtil        = testDataUtil;
     _naheulbookApiServer = naheulbookApiServer;
 }
Exemple #17
0
        public ActionResult DownloadResult(int groupInfoId)
        {
            List <int> userIds;
            var        groupInfo = GetGroupInfo(groupInfoId, out userIds);

            UserTestService.LoadWith(x => x.User, x => x.Test);
            var userTests = groupInfo.GroupTests.Select(gt => UserTestService.GetUserTests(gt)
                                                        .Where(x => userIds.Contains(x.UserId)).ToList()).ToList();
            var data = UserTestResultService.GetResultData(userTests);

            return(File(Encoding.GetEncoding(1251).GetBytes(CsvUtil.Render(data)),
                        "text/csv", "GroupResults-{0}.csv".FormatWith(groupInfo.Group_ID)));
        }
        public void GetUserTestsByUserId_WithInCorrectData_NotFoundExceptionMustBeThrown()
        {
            var             uow = new Mock <IUnitOfWork>();
            UserTestService uts = new UserTestService(uow.Object);

            uow.Setup(x => x.Users.Get(It.IsAny <string>())).Returns((User)null);
            uow.Setup(x => x.UserTests.GetAll()).Returns(new List <UserTest>());
            uow.Setup(x => x.Tests.GetAll()).Returns(new List <Test>());

            Assert.Throws <NotFoundException>(() =>
            {
                var actual = uts.GetUserTestsByUserId(It.IsAny <string>());
            });
        }
        public void GetUserTestsByUserId_WithCorrectData_UserTestsMustBeReceived()
        {
            var             uow = new Mock <IUnitOfWork>();
            UserTestService uts = new UserTestService(uow.Object);

            uow.Setup(x => x.Users.Get(It.IsAny <string>())).Returns(new User());
            uow.Setup(x => x.UserTests.GetAll()).Returns(new List <UserTest>());
            uow.Setup(x => x.Tests.GetAll()).Returns(new List <Test>());

            var expected = JsonConvert.SerializeObject(new List <UserTest>());
            var actual   = JsonConvert.SerializeObject(uts.GetUserTestsByUserId(It.IsAny <string>()));

            Assert.Equal(expected, actual);
        }
Exemple #20
0
        private UserTest GetUserTest(UserTestService userTestService, int userTestId)
        {
            var userTest = GetCurrentTests().FirstOrDefault(x => x.Id == userTestId);

            if (userTest == null)
            {
                userTest = userTestService.GetByPK(userTestId);
//				if (userTest.UserId != GetUserId(userTest.IsPrerequisite))
//					throw new Exception("userTest.UserId != User.UserID");
                GetCurrentTests().Add(userTest);
                //	Logger.Exception(new Exception("Session without userTest"), User);
            }
            return(userTest);
        }
        public void GetUserTestsForPagination_WithCorrectData_TestMustBeReceived()
        {
            var             uow = new Mock <IUnitOfWork>();
            UserTestService uts = new UserTestService(uow.Object);

            uow.Setup(x => x.UserTests.GetForPagination(new Pagination())).Returns(new List <UserTest>());
            uow.Setup(x => x.Users.GetAll()).Returns(new List <User>());
            uow.Setup(x => x.Tests.GetAll()).Returns(new List <Test>());

            var expected = JsonConvert.SerializeObject(new List <Test>());
            var actual   = JsonConvert.SerializeObject(uts.GetUserTestsForPagination(new Pagination()));

            Assert.Equal(expected, actual);
        }
Exemple #22
0
        public ActionResult CertificateValidation(CertificateValidationVM model)
        {
            var fullName   = string.Empty;
            var number     = string.Empty;
            var desc       = string.Empty;
            var date       = string.Empty;
            var userTestId = StringUtils.ParseInt(model.Number);
            var fio        = model.FullName;
            var exists     = false;

            if (userTestId.HasValue)
            {
                var userTest = UserTestService.FirstOrDefault(x => x.Id == userTestId);
                if (userTest != null && userTest.IsPass &&
                    (string.Equals(userTest.User.FullName, fio, StringComparison.InvariantCultureIgnoreCase) ||
                     string.Equals(userTest.User.EngFullName, fio, StringComparison.InvariantCultureIgnoreCase)))
                {
                    exists   = true;
                    fullName = userTest.User.FullName;
                    number   = userTest.Id.ToString();
                    desc     = "Тест: " + userTest.Test.Name;
                    date     = "Дата: " + userTest.RunDate.DefaultString();
                }
            }
            else
            {
                var certificate = CertificateService.FirstOrDefault(x => x.FullNumber == model.Number);
                if (certificate != null &&
                    (string.Equals(certificate.StudentInGroup.Student.FullName,
                                   fio, StringComparison.InvariantCultureIgnoreCase)
                    ))
                {
                    exists   = true;
                    fullName = certificate.StudentInGroup.Student.FullName;
                    number   = certificate.FullNumber;
                    desc     = "Курс: " + certificate.CourseFullName;
                    date     = "Обучение: " + certificate.DateBeg.DefaultString() +
                               " - " + certificate.DateEnd.DefaultString();
                }
            }
            if (!exists)
            {
                return(Content("Сертификата с данными параметрами не существует."));
            }

            var message = _.List(("Сертификат № " + number).Tag("strong"),
                                 "ФИО: " + fullName, desc, date);

            return(Content(message.JoinWith("<br/>")));
        }
        public void StartUp()
        {
            mapperMock             = new Mock <IMappingProvider>();
            saverMock              = new Mock <ISaver>();
            userTestRepositoryMock = new Mock <IRepository <UserTest> >();
            testServiceMock        = new Mock <ITestService>();
            userServiceMock        = new Mock <IUserService>();
            answerServiceMock      = new Mock <IAnswerService>();
            userAnswersServiceMock = new Mock <IUserAnswersService>();

            userTestService = new UserTestService(userTestRepositoryMock.Object,
                                                  testServiceMock.Object, userServiceMock.Object,
                                                  saverMock.Object, userAnswersServiceMock.Object,
                                                  mapperMock.Object, answerServiceMock.Object);
        }
        public void GetUserTestById_WithCorrectData_UserTestMustBeReceived()
        {
            var             uow = new Mock <IUnitOfWork>();
            UserTestService uts = new UserTestService(uow.Object);

            uow.Setup(x => x.UserTests.Get(It.IsAny <string>())).Returns(new UserTest());
            uow.Setup(x => x.Users.Get(It.IsAny <string>())).Returns(new User());
            uow.Setup(x => x.Tests.Get(It.IsAny <string>())).Returns(new Test());

            var expected = new UserTest().UserTestId;
            var userTest = uts.GetUserTestById(It.IsAny <string>());
            var actual   = userTest.GetType().GetProperty("UserTestId").GetValue(userTest, null);

            Assert.Equal(expected, actual);
        }
Exemple #25
0
        public void Assign_CorrectData_ToUserTest()
        {
            // Arrange
            var    fakeTestId      = new Guid();
            string fakeUserId      = "userId";
            var    fakeStartedDate = new DateTime(2017, 5, 10, 12, 0, 0);
            var    fakeDateTimeNow = new DateTime(2017, 5, 10, 12, 10, 0);

            var executionTimeSpan     = fakeStartedDate - fakeDateTimeNow;
            var expectedExecutionTime = Math.Abs(executionTimeSpan.TotalMinutes);

            bool expectedIsPassed = true;

            var fakeUserTest = new UserTest()
            {
                UserId    = fakeUserId,
                TestId    = fakeTestId,
                StartedOn = fakeStartedDate
            };
            var fakeUserTests = new List <UserTest>()
            {
                fakeUserTest
            }.AsQueryable();

            var testRepoStub        = new Mock <IDataRepository <Test> >();
            var dataSaverStub       = new Mock <IDataSaver>();
            var mappingProviderStub = new Mock <IMappingProvider>();
            var categoryRepoStub    = new Mock <IDataRepository <Category> >();
            var userTestRepoStub    = new Mock <IDataRepository <UserTest> >();
            var timeProviderStub    = new Mock <TimeProvider>();

            var userTestService = new UserTestService(testRepoStub.Object, dataSaverStub.Object, mappingProviderStub.Object, userTestRepoStub.Object, timeProviderStub.Object);

            userTestRepoStub.SetupGet(utr => utr.All).Returns(fakeUserTests);
            timeProviderStub.SetupGet(tp => tp.Now).Returns(fakeDateTimeNow);

            // Act
            userTestService.SubmitUserTest(fakeTestId.ToString(), fakeUserId, expectedIsPassed);

            // Assert
            var actualIsPassed      = fakeUserTest.IsPassed;
            var actualIsSubmited    = fakeUserTest.IsSubmited;
            var actualExecutionTime = fakeUserTest.ExecutionTime;

            Assert.AreEqual(expectedIsPassed, actualIsPassed);
            Assert.IsTrue(actualIsSubmited.Value);
            Assert.AreEqual(expectedExecutionTime, actualExecutionTime);
        }
        public void Throw_ArgumentNullException_WhenUserId_IsNullOrEmpty()
        {
            // Arrange
            string fakeUserId = "";

            var testRepoStub        = new Mock <IDataRepository <Test> >();
            var dataSaverStub       = new Mock <IDataSaver>();
            var mappingProviderStub = new Mock <IMappingProvider>();
            var categoryRepoStub    = new Mock <IDataRepository <Category> >();
            var userTestRepoStub    = new Mock <IDataRepository <UserTest> >();
            var timeProviderStub    = new Mock <TimeProvider>();

            var userTestService = new UserTestService(testRepoStub.Object, dataSaverStub.Object, mappingProviderStub.Object, userTestRepoStub.Object, timeProviderStub.Object);

            Action executingAddUserToTestMethod = () => userTestService.CheckForOverdueTestInProgress(fakeUserId);

            // Act & Assert
            Assert.ThrowsException <ArgumentNullException>(executingAddUserToTestMethod);
        }
Exemple #27
0
        public ActionResult TestCertGroup(TestCertGroupVM model)
        {
            var studentIds = StudentInGroupService.GetAll(x => x.Group_ID == model.GroupId)
                             .Select(x => x.Student_ID).ToList();

            model.UserTests = new List <UserTest>();
            if (model.GroupId > 0)
            {
                var userIds = UserService.GetAll(x => x.Student_ID.HasValue &&
                                                 studentIds.Contains(x.Student_ID.Value)).Select(x => x.UserID).ToList();
                var userTests = UserTestService.GetAll(x => x.TestId == model.TestId &&
                                                       userIds.Contains(x.UserId) && UserTestStatus.PassStatuses.Contains(x.Status)).ToList();
                model.UserTests = userTests;
            }
            model.Tests = TestService.GetAll(x => x.Status == TestStatus.Active).ToList()
                          .OrderBy(x => x.Name).ToList();

            return(View(model));
        }
Exemple #28
0
        private List <User> GetUsers(List <int> testIds)
        {
            var now   = DateTime.Today;
            var start = new DateTime(now.Year, now.Month, 1).AddMonths(-1);
            var end   = new DateTime(start.Year, start.Month, DateTime.DaysInMonth(start.Year, start.Month));

            var userTests = UserTestService.GetAll(x => x.RunDate >= start &&
                                                   x.RunDate <= end &&
                                                   UserTestStatus.PassStatuses.Contains(x.Status));

            if (testIds.Any())
            {
                userTests = userTests.Where(x => testIds.Contains(x.TestId));
            }
            var bestUserIds = userTests.Where(x => x.User.LastName.ToLower() != "qwe")
                              .Select(x => new { x.UserId, x.TestId }).Distinct().GroupBy(x => x.UserId)
                              .OrderByDescending(x => x.Count()).Select(x => x.Key).Take(10).ToList();

            return(UserService.GetAll(x => bestUserIds.Contains(x.UserID)).ToList());
        }
        public void Return_False_When_NoTestsInProggress_AreFound()
        {
            // Arrange
            string fakeUserId = "userId";

            var testRepoStub        = new Mock <IDataRepository <Test> >();
            var dataSaverStub       = new Mock <IDataSaver>();
            var mappingProviderStub = new Mock <IMappingProvider>();
            var categoryRepoStub    = new Mock <IDataRepository <Category> >();
            var userTestRepoStub    = new Mock <IDataRepository <UserTest> >();
            var timeProviderStub    = new Mock <TimeProvider>();

            var userTestService = new UserTestService(testRepoStub.Object, dataSaverStub.Object, mappingProviderStub.Object, userTestRepoStub.Object, timeProviderStub.Object);

            // Act
            var result = userTestService.CheckForOverdueTestInProgress(fakeUserId);

            // Assert
            Assert.IsFalse(result);
        }
Exemple #30
0
        public void Return_CorrectTimeRemaining()
        {
            // Arrange
            var    fakeTestId        = new Guid();
            string fakeUserId        = "userId";
            double fakeTestDuration  = 30d;
            var    fakeStartDateTime = new DateTime(2017, 5, 10, 12, 0, 0);
            var    fakeDateTimeNow   = new DateTime(2017, 5, 10, 12, 10, 0);

            var fakeUserTest = new UserTest()
            {
                UserId    = fakeUserId,
                TestId    = fakeTestId,
                StartedOn = fakeStartDateTime
            };
            var fakeUserTests = new List <UserTest>()
            {
                fakeUserTest
            }.AsQueryable();

            var testRepoStub        = new Mock <IDataRepository <Test> >();
            var dataSaverStub       = new Mock <IDataSaver>();
            var mappingProviderStub = new Mock <IMappingProvider>();
            var categoryRepoStub    = new Mock <IDataRepository <Category> >();
            var userTestRepoStub    = new Mock <IDataRepository <UserTest> >();
            var timeProviderStub    = new Mock <TimeProvider>();

            var userTestService = new UserTestService(testRepoStub.Object, dataSaverStub.Object, mappingProviderStub.Object, userTestRepoStub.Object, timeProviderStub.Object);

            userTestRepoStub.SetupGet(utr => utr.All).Returns(fakeUserTests);
            timeProviderStub.SetupGet(tp => tp.Now).Returns(fakeDateTimeNow);

            var endTime = fakeUserTest.StartedOn.AddMinutes(fakeTestDuration);
            var expectedRemainingTime = Math.Round((endTime - fakeDateTimeNow).TotalSeconds);

            // Act
            var actualRemainingTime = userTestService.GetTimeRemainingForUserTest(fakeUserId, fakeTestId.ToString(), fakeTestDuration);

            // Assert
            Assert.AreEqual(expectedRemainingTime, actualRemainingTime);
        }