Sha256: 56a83c581ada9fe2bb7ef8ad0d7388f6084dec0c1651a0c5b4a5a8643caef1cf

Contents?: true

Size: 1.61 KB

Versions: 25

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true

describe "OracleEnhancedAdapter handling of DECIMAL columns" do
  include SchemaSpecHelper

  before(:all) do
    ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
    @conn = ActiveRecord::Base.connection
    schema_define do
      create_table :test2_employees, force: true do |t|
        t.string  :first_name, limit: 20
        t.string  :last_name, limit: 25
        t.string  :email, limit: 25
        t.string  :phone_number, limit: 25
        t.date    :hire_date
        t.integer :job_id
        t.integer :salary
        t.decimal :commission_pct, scale: 2, precision: 2
        t.decimal :hourly_rate
        t.integer :manager_id,  limit: 6
        t.integer :is_manager,  limit: 1
        t.decimal :department_id, scale: 0, precision: 4
        t.timestamps
      end
    end
    class ::Test2Employee < ActiveRecord::Base
    end
  end

  after(:all) do
    Object.send(:remove_const, "Test2Employee")
    @conn.drop_table :test2_employees, if_exists:  true
  end

  it "should set DECIMAL column type as decimal" do
    columns = @conn.columns("test2_employees")
    column = columns.detect { |c| c.name == "hourly_rate" }
    expect(column.type).to eq(:decimal)
  end

  it "should DECIMAL column type returns an exact value" do
    employee = Test2Employee.create(hourly_rate: 4.40125)

    employee.reload

    expect(employee.hourly_rate).to eq(4.40125)
  end

  it "should DECIMAL column type rounds if scale is specified and value exceeds scale" do
    employee = Test2Employee.create(commission_pct: 0.1575)

    employee.reload

    expect(employee.commission_pct).to eq(0.16)
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
activerecord-oracle_enhanced-adapter-7.1.0 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-7.1.0.beta2 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-7.1.0.beta1 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-7.0.3 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-7.0.2 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.1.6 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-7.0.1 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-7.0.0 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-7.0.0.rc1 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.1.5 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.1.4 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.1.2 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.1.1 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.0.6 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.0.5 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.1.0 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.1.0.rc1 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.0.4 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.0.3 spec/active_record/oracle_enhanced/type/decimal_spec.rb
activerecord-oracle_enhanced-adapter-6.0.2 spec/active_record/oracle_enhanced/type/decimal_spec.rb