public virtual void Use_provider_method_is_generated_correctly()
        {
            var codeGenerator = new NpgsqlCodeGenerator(
                new ProviderCodeGeneratorDependencies(
                    Enumerable.Empty <IProviderCodeGeneratorPlugin>()));

            var result = codeGenerator.GenerateUseProvider("Server=test;Username=test;Password=test;Database=test", providerOptions: null);

            Assert.Equal("UseNpgsql", result.Method);
            Assert.Collection(
                result.Arguments,
                a => Assert.Equal("Server=test;Username=test;Password=test;Database=test", a));
            Assert.Null(result.ChainedCall);
        }
    public virtual void Use_provider_method_is_generated_correctly_with_NodaTime()
    {
        var codeGenerator = new NpgsqlCodeGenerator(
            new ProviderCodeGeneratorDependencies(
                new[] { new NpgsqlNodaTimeCodeGeneratorPlugin() }));

        var result = ((IProviderConfigurationCodeGenerator)codeGenerator).GenerateUseProvider("Data Source=Test");

        Assert.Equal("UseNpgsql", result.Method);
        Assert.Collection(
            result.Arguments,
            a => Assert.Equal("Data Source=Test", a),
            a =>
        {
            var nestedClosure = Assert.IsType <NestedClosureCodeFragment>(a);

            Assert.Equal("x", nestedClosure.Parameter);
            Assert.Equal("UseNodaTime", nestedClosure.MethodCalls[0].Method);
        });
        Assert.Null(result.ChainedCall);
    }
        public virtual void Use_provider_method_is_generated_correctly_with_options()
        {
            var codeGenerator = new NpgsqlCodeGenerator(
                new ProviderCodeGeneratorDependencies(
                    Enumerable.Empty <IProviderCodeGeneratorPlugin>()));

            var providerOptions = new MethodCallCodeFragment("SetProviderOption");

            var result = codeGenerator.GenerateUseProvider("Server=test;Username=test;Password=test;Database=test", providerOptions);

            Assert.Equal("UseNpgsql", result.Method);
            Assert.Collection(
                result.Arguments,
                a => Assert.Equal("Server=test;Username=test;Password=test;Database=test", a),
                a =>
            {
                var nestedClosure = Assert.IsType <NestedClosureCodeFragment>(a);

                Assert.Equal("x", nestedClosure.Parameter);
                Assert.Same(providerOptions, nestedClosure.MethodCall);
            });
            Assert.Null(result.ChainedCall);
        }