Esempio n. 1
0
    public async Task RecreateWithOpenConnectionAfterStartup()
    {
        /*
         * could be supported by running the following in wrapper CreateDatabaseFromTemplate
         * but it is fairly unlikely to happen and not doing the offline saves time in tests
         *
         * if db_id('{name}') is not null
         * begin
         * alter database [{name}] set single_user with rollback immediate;
         * alter database [{name}] set multi_user;
         * alter database [{name}] set offline;
         * end;
         */
        LocalDbApi.StopAndDelete("RecreateWithOpenConnectionAfterStartup");
        DirectoryFinder.Delete("RecreateWithOpenConnectionAfterStartup");

        var wrapper = new Wrapper("RecreateWithOpenConnectionAfterStartup", DirectoryFinder.Find("RecreateWithOpenConnectionAfterStartup"));

        wrapper.Start(timestamp, TestDbBuilder.CreateTable);
        var connectionString = await wrapper.CreateDatabaseFromTemplate("Simple");

        using (var connection = new SqlConnection(connectionString))
        {
            await connection.OpenAsync();

            await wrapper.CreateDatabaseFromTemplate("Simple");

            wrapper = new Wrapper("RecreateWithOpenConnectionAfterStartup", DirectoryFinder.Find("RecreateWithOpenConnection"));
            wrapper.Start(timestamp, TestDbBuilder.CreateTable);
            await wrapper.CreateDatabaseFromTemplate("Simple");
        }

        ObjectApprover.Verify(await wrapper.ReadDatabaseState("Simple"));
        LocalDbApi.StopInstance("RecreateWithOpenConnectionAfterStartup");
    }
Esempio n. 2
0
    public async Task RecreateWithOpenConnection()
    {
        var name = "RecreateWithOpenConnection";

        LocalDbApi.StopAndDelete(name);
        DirectoryFinder.Delete(name);

        Wrapper wrapper = new(s => new SqlConnection(s), name, DirectoryFinder.Find(name));

        wrapper.Start(timestamp, TestDbBuilder.CreateTable);
        var connectionString = await wrapper.CreateDatabaseFromTemplate("Simple");

        await using (SqlConnection connection = new(connectionString))
        {
            await connection.OpenAsync();

            wrapper = new(s => new SqlConnection(s), name, DirectoryFinder.Find(name));
            wrapper.Start(timestamp, TestDbBuilder.CreateTable);
            await wrapper.CreateDatabaseFromTemplate("Simple");
        }

        await Verifier.Verify(wrapper.ReadDatabaseState("Simple"));

        LocalDbApi.StopInstance(name);
    }
Esempio n. 3
0
    public async Task NoFileAndWithInstanceAndNamedDb()
    {
        var instanceName = "NoFileAndWithInstanceAndNamedDb";

        LocalDbApi.StopAndDelete(instanceName);
        LocalDbApi.CreateInstance(instanceName);
        DirectoryFinder.Delete(instanceName);
        Wrapper wrapper = new(s => new SqlConnection(s), instanceName, DirectoryFinder.Find(instanceName));

        wrapper.Start(timestamp, TestDbBuilder.CreateTable);
        await wrapper.AwaitStart();

        await wrapper.CreateDatabaseFromTemplate("Simple");

        Thread.Sleep(3000);
        DirectoryFinder.Delete(instanceName);

        wrapper = new(s => new SqlConnection(s), instanceName, DirectoryFinder.Find(instanceName));
        wrapper.Start(timestamp, TestDbBuilder.CreateTable);
        await wrapper.AwaitStart();

        await wrapper.CreateDatabaseFromTemplate("Simple");

        await Verifier.Verify(wrapper.ReadDatabaseState("Simple"));
    }
Esempio n. 4
0
    public async Task NoFileAndWithInstance()
    {
        LocalDbApi.CreateInstance("NoFileAndWithInstance");
        DirectoryFinder.Delete("NoFileAndWithInstance");

        var instance = new SqlInstance("NoFileAndWithInstance", TestDbBuilder.CreateTable);

        await AddAndVerifyData(instance);
    }
Esempio n. 5
0
    public async Task NoFileAndNoInstance()
    {
        LocalDbApi.StopAndDelete("NoFileAndNoInstance");
        DirectoryFinder.Delete("NoFileAndNoInstance");

        var wrapper = new Wrapper("NoFileAndNoInstance", DirectoryFinder.Find("NoFileAndNoInstance"));

        wrapper.Start(timestamp, TestDbBuilder.CreateTable);
        await wrapper.CreateDatabaseFromTemplate("Simple");

        ObjectApprover.Verify(await wrapper.ReadDatabaseState("Simple"));
        LocalDbApi.StopInstance("NoFileAndNoInstance");
    }
Esempio n. 6
0
    public async Task NoFileAndWithInstance()
    {
        LocalDbApi.StopAndDelete("NoFileAndWithInstance");
        LocalDbApi.CreateInstance("NoFileAndWithInstance");
        DirectoryFinder.Delete("NoFileAndWithInstance");
        var wrapper = new Wrapper(s => new SqlConnection(s), "NoFileAndWithInstance", DirectoryFinder.Find("NoFileAndWithInstance"));

        wrapper.Start(timestamp, TestDbBuilder.CreateTable);
        await wrapper.AwaitStart();

        await wrapper.CreateDatabaseFromTemplate("Simple");

        await Verify(await wrapper.ReadDatabaseState("Simple"));

        LocalDbApi.StopInstance("NoFileAndWithInstance");
    }
Esempio n. 7
0
    public async Task NoFileAndNoInstance()
    {
        var name = "NoFileAndNoInstance";

        LocalDbApi.StopAndDelete(name);
        DirectoryFinder.Delete(name);

        Wrapper wrapper = new(s => new SqlConnection(s), name, DirectoryFinder.Find(name));

        wrapper.Start(timestamp, TestDbBuilder.CreateTable);
        await wrapper.CreateDatabaseFromTemplate("Simple");

        await Verifier.Verify(wrapper.ReadDatabaseState("Simple"));

        LocalDbApi.StopInstance(name);
    }
Esempio n. 8
0
    public async Task RecreateWithOpenConnection()
    {
        LocalDbApi.StopAndDelete("RecreateWithOpenConnection");
        DirectoryFinder.Delete("RecreateWithOpenConnection");

        var wrapper = new Wrapper("RecreateWithOpenConnection", DirectoryFinder.Find("RecreateWithOpenConnection"));

        wrapper.Start(timestamp, TestDbBuilder.CreateTable);
        var connectionString = await wrapper.CreateDatabaseFromTemplate("Simple");

        using (var connection = new SqlConnection(connectionString))
        {
            await connection.OpenAsync();

            wrapper = new Wrapper("RecreateWithOpenConnection", DirectoryFinder.Find("RecreateWithOpenConnection"));
            wrapper.Start(timestamp, TestDbBuilder.CreateTable);
            await wrapper.CreateDatabaseFromTemplate("Simple");
        }

        ObjectApprover.Verify(await wrapper.ReadDatabaseState("Simple"));
        LocalDbApi.StopInstance("RecreateWithOpenConnection");
    }