public void can_write_schema_objects()
        {
            StoreOptions(_ => _.DatabaseSchemaName = "other");

            using (var conn = theStore.Advanced.OpenConnection())
            {
                conn.Execute(
                    cmd => cmd.Sql("drop function if exists other.mt_immutable_timestamp(text)").ExecuteNonQuery());
            }

            var function = new SystemFunction(theStore.Advanced.Options, "mt_immutable_timestamp", "text");

            var writer = new StringWriter();

            function.WriteSchemaObjects(theStore.Schema, writer);

            writer.ToString().ShouldContain("CREATE OR REPLACE FUNCTION other.mt_immutable_timestamp(value text)");
        }
        public void can_patch_if_missing()
        {
            StoreOptions(_ => _.DatabaseSchemaName = "other");

            using (var conn = theStore.Advanced.OpenConnection())
            {
                conn.Execute(
                    cmd => cmd.Sql("drop function if exists other.mt_immutable_timestamp(text)").ExecuteNonQuery());
            }

                var function = new SystemFunction(theStore.Advanced.Options, "mt_immutable_timestamp", "text");

            var patch = new SchemaPatch(new DdlRules());

            function.WritePatch(theStore.Schema, patch);

            patch.UpdateDDL.ShouldContain("CREATE OR REPLACE FUNCTION other.mt_immutable_timestamp(value text)");
            patch.RollbackDDL.ShouldContain("drop function if exists other.mt_immutable_timestamp");
        }