Sha256: ea46073d9b90172cdd587eec4bb03ca53c7a74582215a477c300cc5c98f91173

Contents?: true

Size: 1.6 KB

Versions: 4

Compression:

Stored size: 1.6 KB

Contents

##########################################################
### DEPRECATED: JSON operators are an hack and there is no
### reason not to use jsonb other than migrating your data
##########################################################
if ENV['HAVE_PLPYTHON'] == '1'

require 'spec_helper'
require 'support/helpers'

require 'chrono_model/json'

describe 'JSON equality operator' do
  include ChronoTest::Helpers::Adapter

  table 'json_test'

  before :all do
    ChronoModel::Json.create
  end

  after :all do
    ChronoModel::Json.drop
  end

  it { expect(adapter.select_value(%[ SELECT '{"a":1}'::json = '{"a":1}'::json ])).to eq true }
  it { expect(adapter.select_value(%[ SELECT '{"a":1}'::json = '{"a" : 1}'::json ])).to eq true }
  it { expect(adapter.select_value(%[ SELECT '{"a":1}'::json = '{"a":2}'::json ])).to eq false }
  it { expect(adapter.select_value(%[ SELECT '{"a":1,"b":2}'::json = '{"b":2,"a":1}'::json ])).to eq true }
  it { expect(adapter.select_value(%[ SELECT '{"a":1,"b":2,"x":{"c":4,"d":5}}'::json = '{"b":2, "x": { "d": 5, "c": 4}, "a":1}'::json ])).to eq true }

  context 'on a temporal table' do
    before :all do
      adapter.create_table table, :temporal => true do |t|
        t.json 'data'
      end

      adapter.execute %[
        INSERT INTO #{table} ( data ) VALUES ( '{"a":1,"b":2}' )
      ]
    end

    after :all do
      adapter.drop_table table
    end

    it { expect {
      adapter.execute "UPDATE #{table} SET data = NULL"
    }.to_not raise_error }

    it { expect {
      adapter.execute %[UPDATE #{table} SET data = '{"x":1,"y":2}']

    }.to_not raise_error }
  end

end


end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
chrono_model-1.2.2 spec/chrono_model/json_ops_spec.rb
chrono_model-1.2.1 spec/chrono_model/json_ops_spec.rb
chrono_model-1.2.0 spec/chrono_model/json_ops_spec.rb
chrono_model-1.1.0 spec/chrono_model/json_ops_spec.rb