Sha256: 7b97080864b117ccdb8164c6fb140ec85defafd64573150c7a2cd229373c0e1d

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

require "spec_helper"

module Fx
  module Adapters
    describe Postgres::Triggers, :db do
      describe ".all" do
        it "returns `Trigger` objects" do
          connection = ActiveRecord::Base.connection
          connection.execute <<-EOS.strip_heredoc
            CREATE TABLE users (
                id int PRIMARY KEY,
                name varchar(256),
                upper_name varchar(256)
            );
          EOS
          connection.execute <<-EOS.strip_heredoc
            CREATE OR REPLACE FUNCTION uppercase_users_name()
            RETURNS trigger AS $$
            BEGIN
              NEW.upper_name = UPPER(NEW.name);
              RETURN NEW;
            END;
            $$ LANGUAGE plpgsql;
          EOS
          connection.execute <<-EOS.strip_heredoc
            CREATE TRIGGER uppercase_users_name
                BEFORE INSERT ON users
                FOR EACH ROW
                EXECUTE FUNCTION uppercase_users_name();
          EOS

          triggers = Postgres::Triggers.new(connection).all

          first = triggers.first
          expect(triggers.size).to eq 1
          expect(first.name).to eq "uppercase_users_name"
          expect(first.definition).to include("BEFORE INSERT")
          expect(first.definition).to match(/ON [public.ser|]/)
          expect(first.definition).to include("FOR EACH ROW")
          expect(first.definition).to include("EXECUTE FUNCTION uppercase_users_name()")
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fx-0.8.0 spec/fx/adapters/postgres/triggers_spec.rb