public void Details_PermissionsGranted_FullAccess()
        {
            // Arrange
            var serviceMock = GetFinanceServiceMock(true);
            _controller = new ContentController(_unitOfWork, _fileStorageManager, serviceMock.Object);
            _controller.ControllerContext = CreateControllerContext();

            // Act
            var result = _controller.Details(1);

            // Assert
            var model = (DetailsViewModel) result.Model;
            model.IsFullAccessGranted.Should().BeTrue();
        }
        public ContentControllerTests()
        {
            _unitOfWork = new UnitOfWorkMock();
            _fileStorageManager = new FileStorageManagerMock();

            _currentUser = new User {UserName = "******"};
            _currentUserProfile = new UserProfile {User = _currentUser};
            _unitOfWork.GetRepository<User>().Insert(_currentUser);
            _unitOfWork.GetRepository<UserProfile>().Insert(_currentUserProfile);

            _controller = new ContentController(_unitOfWork,
                                                _fileStorageManager,
                                                new FinanceService(_unitOfWork));
            _controller.ControllerContext = CreateControllerContext();
            InitUnitOfWork(_unitOfWork);
        }
        public void Download_UserIsAdmin_PermissionsGranted()
        {
            // Arrange
            var serviceMock = GetFinanceServiceMock(false);
            _controller = new ContentController(_unitOfWork, _fileStorageManager, serviceMock.Object);
            _controller.ControllerContext = CreateControllerContext("admin");

            var contentFile = new ContentFile();
            _unitOfWork.GetRepository<ContentFile>().Insert(contentFile);
            _unitOfWork.Save();

            // Act
            var result = _controller.Download(contentFile.ID);

            // Assert
            result.Should().BeOfType<FileStreamResult>();
        }
        public void Download_PermissionsNotGranted_ErrorMessageShown()
        {
            // Arrange
            var serviceMock = GetFinanceServiceMock(false);
            _controller = new ContentController(_unitOfWork, _fileStorageManager, serviceMock.Object);
            _controller.ControllerContext = CreateControllerContext();

            var contentFile = new ContentFile();
            _unitOfWork.GetRepository<ContentFile>().Insert(contentFile);

            // Act
            var result = _controller.Download(contentFile.ID);

            // Assert
            var viewResult = (ViewResult) result;
            viewResult.ViewName.Should().Be("ApplicationError");
        }
        public void Download_FileNotExists_ErrorViewShown()
        {
            // Arrange
            var serviceMock = GetFinanceServiceMock();
            _controller = new ContentController(_unitOfWork, _fileStorageManager, serviceMock.Object);
            _controller.ControllerContext = CreateControllerContext();

            // Act
            var result = _controller.Download(-1);

            // Assert
            var viewResult = (ViewResult) result;
            viewResult.ViewName.Should().Be("ApplicationError");
        }
        public void Download_FileExists_FileStreamReturned()
        {
            // Arrange
            var serviceMock = GetFinanceServiceMock();
            _controller = new ContentController(_unitOfWork, _fileStorageManager, serviceMock.Object);
            _controller.ControllerContext = CreateControllerContext();

            var contentFile = new ContentFile();
            _unitOfWork.GetRepository<ContentFile>().Insert(contentFile);
            _unitOfWork.Save();

            // Act
            _controller.Download(contentFile.ID);

            // Assert
            _fileStorageManager.GetOperationArgument.Should().Be(contentFile);
        }
        public void Details_Simple_PropertiesInitialized()
        {
            // Arrange
            var serviceMock = GetFinanceServiceMock();
            _controller = new ContentController(_unitOfWork, _fileStorageManager, serviceMock.Object);
            _controller.ControllerContext = CreateControllerContext();

            // Act
            var result = _controller.Details(1);

            // Assert
            var model = (DetailsViewModel) result.Model;
            model.Properties.Should().HaveCount(2);
        }
        public void Details_Simple_PackageInitialized()
        {
            // Arrange
            var package = _unitOfWork.GetRepository<ContentPackage>().Get().Last();
            var serviceMock = GetFinanceServiceMock();
            _controller = new ContentController(_unitOfWork, _fileStorageManager, serviceMock.Object);
            _controller.ControllerContext = CreateControllerContext();

            // Act
            var result = _controller.Details(package.ID);

            // Assert
            var model = (DetailsViewModel) result.Model;
            model.Package.Should().Be(package);
        }