public async void GetRandomAssigment_CalledWithValidModulename_ReturnsOkWithAssigmentUrl()
        {
            IUnitOfWork    _unitOfWork    = Substitute.For <IUnitOfWork>();
            ICookieManager _cookieManager = Substitute.For <ICookieManager>();

            string testModuleName = "Oop";

            string[] testUrls  = new string[] { "test", "test2" };
            Module   oopModule = new Module()
            {
                Title = "Oop"
            };
            var assigments = new List <Assigment>()
            {
                new Assigment {
                    Url = "test", Module = oopModule
                }, new Assigment {
                    Url = "test2", Module = oopModule
                }
            };

            _unitOfWork.Assigments.GetAssigmentsByModuleName(testModuleName).Returns(assigments);

            var assigmentsController = new AssigmentsController(_unitOfWork, _cookieManager);

            var result = await assigmentsController.GetRandomAssigment(testModuleName);

            var okobjectReesult = Assert.IsType <OkObjectResult>(result);
            var returnValue     = Assert.IsType <Assigment>(okobjectReesult.Value);

            Assert.Equal(testModuleName, returnValue.Module.Title);
            Assert.Contains(returnValue.Url, testUrls);
        }
        public async void GetRandomAssigment_CalledWithNull_ReturnsBadRequestWithError()
        {
            IUnitOfWork    _unitOfWork    = Substitute.For <IUnitOfWork>();
            ICookieManager _cookieManager = Substitute.For <ICookieManager>();

            string nullModuleName = null;
            string error          = "Module name cannot be null.";

            var assigmentController = new AssigmentsController(_unitOfWork, _cookieManager);

            var result = await assigmentController.GetRandomAssigment(nullModuleName);

            var badRequestobjectResult = Assert.IsType <BadRequestObjectResult>(result);
            var returnValue            = Assert.IsType <string>(badRequestobjectResult.Value);

            Assert.Equal(error, returnValue);
        }
        public async void GetRandomAssigment_CalledInvalidModuleName_ReturnsNotFountWithModuleName()
        {
            IUnitOfWork    _unitOfWork    = Substitute.For <IUnitOfWork>();
            ICookieManager _cookieManager = Substitute.For <ICookieManager>();

            string           notValidModuleName = "CSarja";
            List <Assigment> nullAssigment      = null;

            _unitOfWork.Assigments.GetAssigmentsByModuleName(notValidModuleName).Returns(nullAssigment);

            var assigmentsController = new AssigmentsController(_unitOfWork, _cookieManager);

            var result = await assigmentsController.GetRandomAssigment(notValidModuleName);

            var notFountObjectResult = Assert.IsType <NotFoundObjectResult>(result);
            var returnValue          = Assert.IsType <string>(notFountObjectResult.Value);

            Assert.Equal(notValidModuleName, returnValue);
        }