public void IsFileLocked_ReturnsTrue_WhenPublishPeriodIsOut()
        {
            //Arrange
            //_fileInfo.Setup(fi => fi.PortalId).Returns(Constants.CONTENT_ValidPortalId);
            //_fileInfo.Setup(fi => fi.FolderId).Returns(Constants.FOLDER_ValidFolderId);
            //_fileInfo.Setup(fi => fi.FolderMappingID).Returns(Constants.FOLDER_ValidFolderMappingID);
            //_fileInfo.Setup(fi => fi.EnablePublishPeriod).Returns(true);
            //_fileInfo.Setup(fi => fi.StartDate).Returns(DateTime.Today.AddDays(-2));
            //_fileInfo.Setup(fi => fi.EndDate).Returns(DateTime.Today.AddDays(-1));
            //_fileInfo.Setup(fi => fi.ContentItemID).Returns(Null.NullInteger);
            var fileInfo = new FileInfoBuilder()
                .WithStartDate(DateTime.Today.AddDays(-2))
                .WithEndDate(DateTime.Today.AddDays(-1))
                .WithEnablePublishPeriod(true)
                .Build();
            _mockUserSecurityController.Setup(msc => msc.IsHostAdminUser(Constants.CONTENT_ValidPortalId)).Returns(false);

            //Act
            string someReason;
            var result = FileLockingController.Instance.IsFileLocked(fileInfo, out someReason);

            //Assert
            Assert.IsTrue(result);
            Assert.AreEqual(someReason, "FileLockedOutOfPublishPeriodError");
        }
        public void DeleteFile_Calls_FolderProviderDeleteFile()
        {
            //Arrange
            var fileInfo = new FileInfoBuilder().Build();
            _fileVersionController.Setup(fv => fv.DeleteAllUnpublishedVersions(fileInfo, false));

            var folderMapping = new FolderMappingInfo { FolderProviderType = Constants.FOLDER_ValidFolderProviderType };
            _folderMappingController.Setup(fmc => fmc.GetFolderMapping(Constants.CONTENT_ValidPortalId, Constants.FOLDER_ValidFolderMappingID)).Returns(folderMapping);
            
            _mockData.Setup(md => md.DeleteFile(It.IsAny<int>(), It.IsAny<string>(), It.IsAny<int>()));

            _mockFolderProvider.Setup(mf => mf.DeleteFile(fileInfo)).Verifiable();

            string someString;
            _mockFileLockingController.Setup(mflc => mflc.IsFileLocked(fileInfo, out someString)).Returns(false);

            //Act
            FileDeletionController.Instance.DeleteFile(fileInfo);

            //Assert
            _mockFolderProvider.Verify();
        }
        public void DeleteFile_Throws_WhenFileIsLocked()
        {
            //Arrange
            var fileInfo = new FileInfoBuilder().Build();
            
            string someString;
            _mockFileLockingController.Setup(mflc => mflc.IsFileLocked(fileInfo, out someString)).Returns(true);

            //Act
            FileDeletionController.Instance.DeleteFile(fileInfo);            
        }
        public void DeleteFile_Throws_WhenFolderProviderThrows()
        {
            //Arrange
            var fileInfo = new FileInfoBuilder().Build();
            
            _fileVersionController.Setup(fv => fv.DeleteAllUnpublishedVersions(fileInfo, false));

            var folderMapping = new FolderMappingInfo { FolderProviderType = Constants.FOLDER_ValidFolderProviderType };

            _folderMappingController.Setup(fmc => fmc.GetFolderMapping(Constants.FOLDER_ValidFolderMappingID)).Returns(folderMapping);

            string someString;
            _mockFileLockingController.Setup(mflc => mflc.IsFileLocked(fileInfo, out someString)).Returns(false);

            _mockFolderProvider.Setup(mf => mf.DeleteFile(fileInfo)).Throws<Exception>();

            
            FileDeletionController.Instance.DeleteFile(fileInfo);
        }
        public void IsFileLocked_ReturnsTrue_WhenWorkflowIsNotComplete()
        {
            //Arrange
            var fileInfo = new FileInfoBuilder()                
                .WithEndDate(DateTime.Today.AddDays(2))
                .WithEnablePublishPeriod(true)
                .WithContentItemId(It.IsAny<int>())
                .Build();
            _mockUserSecurityController.Setup(msc => msc.IsHostAdminUser(Constants.CONTENT_ValidPortalId)).Returns(false);
            _mockContentWorkflowController.Setup(mwc => mwc.IsWorkflowCompleted(It.IsAny<int>())).Returns(false);

            //Act
            string someReason;
            var result = FileLockingController.Instance.IsFileLocked(fileInfo, out someReason);

            //Assert
            Assert.IsTrue(result);
            Assert.AreEqual(someReason, "FileLockedRunningWorkflowError");
        }
        public void IsFileOutOfPublishPeriod_ReturnsFalse_WhenPublishPeriodIsDisabled()
        {
            //Arrange

            var fileInfo = new FileInfoBuilder().Build();
            _mockUserSecurityController.Setup(msc => msc.IsHostAdminUser(It.IsAny<int>(), It.IsAny<int>())).Returns(false);

            //Act
            var result = FileLockingController.Instance.IsFileOutOfPublishPeriod(fileInfo, It.IsAny<int>(), It.IsAny<int>());

            //Assert
            Assert.IsFalse(result);
        }
        public void IsFileOutOfPublishPeriod_ReturnsFalse_WhenPublishPeriodHasNotEndDate()
        {
            //Arrange
            var fileInfo = new FileInfoBuilder()                
                .WithEndDate(DateTime.Today.AddDays(2))
                .WithEnablePublishPeriod(true)
                .Build();
            _mockUserSecurityController.Setup(msc => msc.IsHostAdminUser(It.IsAny<int>(), It.IsAny<int>())).Returns(false);

            //Act
            var result = FileLockingController.Instance.IsFileOutOfPublishPeriod(fileInfo, It.IsAny<int>(), It.IsAny<int>());

            //Assert
            Assert.IsFalse(result);
        }
        public void IsFileLocked_ReturnsFalse_WhenPublishPeriodIsDisabled()
        {
            //Arrange
            var fileInfo = new FileInfoBuilder().Build();
            _mockUserSecurityController.Setup(msc => msc.IsHostAdminUser(Constants.CONTENT_ValidPortalId)).Returns(false);

            //Act
            string someReason;
            var result = FileLockingController.Instance.IsFileLocked(fileInfo, out someReason);

            //Assert
            Assert.IsFalse(result);
        }
        public void IsFileLocked_ReturnsFalse_WhenUserIsHostOrAdmin()
        {
            //Arrange
            var fileInfo = new FileInfoBuilder()
                .WithStartDate(DateTime.Today.AddDays(-2))
                .WithEndDate(DateTime.Today.AddDays(-1))
                .WithEnablePublishPeriod(true)
                .Build();
            _mockUserSecurityController.Setup(msc => msc.IsHostAdminUser(Constants.CONTENT_ValidPortalId)).Returns(true);

            //Act
            string someReason;
            var result = FileLockingController.Instance.IsFileLocked(fileInfo, out someReason);

            //Assert
            Assert.IsFalse(result);
        }
        public void DeleteFolder_Throws_OnFileDeletionControllerThrows_WhenRecursive_WhenFileIsLocked()
        {
            //Arrange
            var folderInfo = new FolderInfoBuilder()
                .WithFolderId(1)
                .WithPhysicalPath(Constants.FOLDER_ValidFolderPath)
                .Build();

            var fileInfo1 = new FileInfoBuilder()
                .WithFileId(1)
                .Build();
            var fileInfo2 = new FileInfoBuilder()
                .WithFileId(2)
                .Build();
            var files = new List<IFileInfo>
                {
                    fileInfo1,
                    fileInfo2
                };

            var folderMapping = new FolderMappingInfo { FolderProviderType = Constants.FOLDER_ValidFolderProviderType };
            _folderMappingController.Setup(fmc => fmc.GetFolderMapping(Constants.CONTENT_ValidPortalId, Constants.FOLDER_ValidFolderMappingID)).Returns(folderMapping);

            //_mockFolder.Setup(mf => mf.DeleteFolder(folderInfo));

            _mockFolderManager.Setup(mfm => mfm.DeleteFolder(Constants.CONTENT_ValidPortalId, Constants.FOLDER_ValidFolderRelativePath));
            _mockFolderManager.Setup(mfm => mfm.GetFolders(folderInfo)).Returns(new List<IFolderInfo>());
            
            _mockFolderManager.Setup(mfm => mfm.GetFiles(folderInfo, It.IsAny<bool>(), It.IsAny<bool>())).Returns(files);

            _mockUserSecurityController.Setup(musc => musc.HasFolderPermission(It.IsAny<IFolderInfo>(), "DELETE")).Returns(true);

            _mockFileDeletionController.Setup(mfdc => mfdc.DeleteFile(fileInfo1));
            _mockFileDeletionController.Setup(mfdc => mfdc.DeleteFile(fileInfo2)).Throws<FileLockedException>();


            //Act
            _mockFolderManager.Object.DeleteFolder(folderInfo, new List<IFolderInfo>());
        }