public void DirectoryBackupOperation_Backup_BackupPath_SubDirectoriesExist()
        {
            var mockFileSystem = new MockFileSystem();

            TxFileSystem txFileSystem = null;

            using (var transactionScope = new TransactionScope())
            {
                txFileSystem = new TxFileSystem(mockFileSystem);
                txFileSystem.Directory.CreateDirectory("/tmp/directorytobackupped");
                for (var i = 1; i <= 3; i++)
                {
                    txFileSystem.Directory.CreateDirectory("/tmp/directorytobackupped/subdir_" + i.ToString());
                }

                var unitTestOperation = new UnitTestDirectoryOperation(txFileSystem.Directory,
                                                                       "/tmp/directorytobackupped");
                unitTestOperation.Backup();

                var directories = txFileSystem.Directory.EnumerateDirectories(unitTestOperation.BackupPath);

                Assert.NotEmpty(directories);
                Assert.Equal(3, directories.Count());
            }
        }
        public void TxJournalEntry_Operation_EqualsOperationPassed()
        {
            var mockFileSystem    = new MockFileSystem();
            var txFileSystem      = new TxFileSystem(mockFileSystem);
            var unitTestOperation = new UnitTestDirectoryOperation(txFileSystem.Directory,
                                                                   "/var/journaltestdir");

            var txJournalEntry = new TxJournalEntry(unitTestOperation);

            Assert.Equal(unitTestOperation, txJournalEntry.Operation);
            Assert.Equal(OperationType.Delete, txJournalEntry.Operation.OperationType);
        }
        public void DirectoryBackupOperation_Backup_BackupPathExists_ReturnsTrue()
        {
            var mockFileSystem = new MockFileSystem();

            TxFileSystem txFileSystem = null;

            using (var transactionScope = new TransactionScope())
            {
                txFileSystem = new TxFileSystem(mockFileSystem);
                txFileSystem.Directory.CreateDirectory("/tmp/directorytobackupped");

                var unitTestOperation = new UnitTestDirectoryOperation(txFileSystem.Directory,
                                                                       "/tmp/directorytobackupped");
                unitTestOperation.Backup();

                Assert.True(txFileSystem.Directory.Exists(unitTestOperation.BackupPath));
            }
        }
        public void TxJournalEntryCollection_Remove_ThrowsNotImplementedException()
        {
            var attr = (FsFactAttribute)Attribute.GetCustomAttribute(MethodBase.GetCurrentMethod(),
                                                                     typeof(FsFactAttribute));
            var fileSystemMock = attr.GetMock <IFileSystem>();
            var txFileSystem   = new TxFileSystem(fileSystemMock.Object);

            var path = "/tmp/dummydirectory";
            var unitTestOperation = new UnitTestDirectoryOperation(txFileSystem.Directory, path);
            var journalEntry      = new TxJournalEntry(unitTestOperation);
            var journalEntries    = new TxJournalEntryCollection
            {
                journalEntry
            };

            Assert.Throws <NotImplementedException>(() =>
            {
                journalEntries.Remove(journalEntry);
            });
        }