示例#1
0
        public void FileNameUsedAsIsWhenRooted()
        {
            var expected = Path.Combine(Path.GetTempPath(), _filename);
            var db       = new LocalDbDatabase(_databaseName, expected);

            Assert.Equal(expected, db.FileName);
        }
示例#2
0
        public void FilenameDefaultsToDatabaseName()
        {
            var db       = new LocalDbDatabase(_databaseName);
            var expected = Path.Combine(Directory.GetCurrentDirectory(), _databaseName + ".mdf");

            Assert.Equal(expected, db.FileName);
        }
示例#3
0
        public void FileNameRootedAtCurrentDirectoryIfNotAlreadyRooted()
        {
            var db       = new LocalDbDatabase(_databaseName, _filename);
            var expected = Path.Combine(Directory.GetCurrentDirectory(), _filename);

            Assert.Equal(expected, db.FileName);
        }
示例#4
0
        public void ConnectionStringUsesPassedInDatabaseName()
        {
            var db      = new LocalDbDatabase(_databaseName);
            var builder = new SqlConnectionStringBuilder(db.ConnectionString);

            Assert.Equal(_databaseName, builder.InitialCatalog);
        }
示例#5
0
        public void FileNameUsesPassedInValue()
        {
            var db       = new LocalDbDatabase(_databaseName, _filename);
            var expected = Path.Combine(Directory.GetCurrentDirectory(), _filename);

            Assert.Equal(expected, db.FileName);
        }
示例#6
0
        public void ConnectionStringDefaultsInstanceNameWhenNotProvided()
        {
            var db      = new LocalDbDatabase(_databaseName);
            var builder = new SqlConnectionStringBuilder(db.ConnectionString);

            Assert.Equal($"(localdb)\\{LocalDbDatabase.DefaultInstanceName}", builder.DataSource);
        }
示例#7
0
        public void ConnectionStringUsesPassedInInstanceName()
        {
            var db      = new LocalDbDatabase(_databaseName, _filename, _instanceName);
            var builder = new SqlConnectionStringBuilder(db.ConnectionString);

            Assert.Equal($"(localdb)\\{_instanceName}", builder.DataSource);
        }
示例#8
0
        public void MasterConnectionStringUsesAllValuesExceptDatabaseName()
        {
            var db      = new LocalDbDatabase(_databaseName, _filename, _instanceName);
            var builder = new SqlConnectionStringBuilder(db.MasterConnectionString);

            Assert.Equal($"(localdb)\\{_instanceName}", builder.DataSource);
            Assert.Equal("master", builder.InitialCatalog);
        }
示例#9
0
        public void CreateDatabaseCreatesAUseableDatabase()
        {
            var filename = Path.Combine(Path.GetTempPath(), _filename);

            _db = new LocalDbDatabase(_databaseName, filename);

            _db.CreateDatabase();

            AssertUsableDatabase(_db.ConnectionString);
        }
示例#10
0
        public void DropDatabaseHandlesDatabaseDoesNotExist()
        {
            var filename = Path.Combine(Path.GetTempPath(), _filename);

            _db = new LocalDbDatabase(_databaseName, filename);

            Assert.False(DatabaseExist(_db.MasterConnectionString, _databaseName));

            _db.DropDatabase();
        }
示例#11
0
        public void CreateDatabaseUsesCorrectFilename()
        {
            var filename = Path.Combine(Path.GetTempPath(), _filename);

            _db = new LocalDbDatabase(_databaseName, filename);

            Assert.False(File.Exists(filename));

            _db.CreateDatabase();

            Assert.True(File.Exists(filename));
        }
示例#12
0
        public void CreateDatabaseWorksEvenIfFilesAlreadyExist()
        {
            var filename = Path.Combine(Path.GetTempPath(), _filename);

            File.AppendAllText(filename, "foo");

            _db = new LocalDbDatabase(_databaseName, filename);

            _db.CreateDatabase();

            AssertUsableDatabase(_db.ConnectionString);
        }
示例#13
0
        public void DropDatabaseRemovesFilesFromFileSystem()
        {
            var filename = Path.Combine(Path.GetTempPath(), _filename);

            _db = new LocalDbDatabase(_databaseName, filename);

            // Make sure database exists.
            _db.CreateDatabase();
            Assert.True(File.Exists(filename));

            _db.DropDatabase();
            Assert.False(File.Exists(filename));
        }
示例#14
0
        public void DropDatabaseRemovesDatabaseFromLocalDb()
        {
            var filename = Path.Combine(Path.GetTempPath(), _filename);

            _db = new LocalDbDatabase(_databaseName, filename);

            // Make sure database exists.
            _db.CreateDatabase();
            Assert.True(DatabaseExist(_db.MasterConnectionString, _databaseName));

            _db.DropDatabase();
            Assert.False(DatabaseExist(_db.MasterConnectionString, _databaseName));
        }
示例#15
0
        public void CreateDatabaseCreatesNewDatabaseIfDatabaseAlreadyExists()
        {
            var filename = Path.Combine(Path.GetTempPath(), _filename);

            _db = new LocalDbDatabase(_databaseName, filename);

            // Make sure database exists.
            _db.CreateDatabase();
            AssertUsableDatabase(_db.ConnectionString);

            // Now create it again.
            _db.CreateDatabase();
            AssertUsableDatabase(_db.ConnectionString);
        }
示例#16
0
        public void DropDatabaseIgnoresErrorsWhenDataFileDoesNotExist()
        {
            var directory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            Directory.CreateDirectory(directory);

            var filename = Path.Combine(directory, _filename);

            _db = new LocalDbDatabase(_databaseName, filename);

            _db.CreateDatabase();

            // Let the filesystem let go of the file so it isn't in use.
            Thread.Sleep(250);

            Directory.Delete(directory, true);

            _db = new LocalDbDatabase(_databaseName);

            _db.CreateDatabase();
            _db.DropDatabase();
        }