Cast PostgreSQL's timestamptz columns to time (#1325)
* Cast PostgreSQL's :timestamptz to time * Add basic Nodes::Value specs (Cast PostgreSQL's timestamptz columns to time)
This commit is contained in:
parent
49b8311061
commit
5d2bb20e83
|
@ -26,7 +26,7 @@ module Ransack
|
||||||
case type
|
case type
|
||||||
when :date
|
when :date
|
||||||
cast_to_date(value)
|
cast_to_date(value)
|
||||||
when :datetime, :timestamp, :time
|
when :datetime, :timestamp, :time, :timestamptz
|
||||||
cast_to_time(value)
|
cast_to_time(value)
|
||||||
when :boolean
|
when :boolean
|
||||||
cast_to_boolean(value)
|
cast_to_boolean(value)
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
module Ransack
|
||||||
|
module Nodes
|
||||||
|
describe Value do
|
||||||
|
let(:context) { Context.for(Person) }
|
||||||
|
|
||||||
|
subject do
|
||||||
|
Value.new(context, raw_value)
|
||||||
|
end
|
||||||
|
|
||||||
|
context "with a date value" do
|
||||||
|
let(:raw_value) { "2022-05-23" }
|
||||||
|
|
||||||
|
[:date].each do |type|
|
||||||
|
it "should cast #{type} correctly" do
|
||||||
|
result = subject.cast(type)
|
||||||
|
|
||||||
|
expect(result).to be_a_kind_of(Date)
|
||||||
|
expect(result).to eq(Date.parse(raw_value))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "with a timestamp value" do
|
||||||
|
let(:raw_value) { "2022-05-23 10:40:02 -0400" }
|
||||||
|
|
||||||
|
[:datetime, :timestamp, :time, :timestamptz].each do |type|
|
||||||
|
it "should cast #{type} correctly" do
|
||||||
|
result = subject.cast(type)
|
||||||
|
|
||||||
|
expect(result).to be_a_kind_of(Time)
|
||||||
|
expect(result).to eq(Time.zone.parse(raw_value))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Constants::TRUE_VALUES.each do |value|
|
||||||
|
context "with a true boolean value (#{value})" do
|
||||||
|
let(:raw_value) { value.to_s }
|
||||||
|
|
||||||
|
it "should cast boolean correctly" do
|
||||||
|
result = subject.cast(:boolean)
|
||||||
|
expect(result).to eq(true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Constants::FALSE_VALUES.each do |value|
|
||||||
|
context "with a false boolean value (#{value})" do
|
||||||
|
let(:raw_value) { value.to_s }
|
||||||
|
|
||||||
|
it "should cast boolean correctly" do
|
||||||
|
result = subject.cast(:boolean)
|
||||||
|
|
||||||
|
expect(result).to eq(false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
["12", "101.5"].each do |value|
|
||||||
|
context "with an integer value (#{value})" do
|
||||||
|
let(:raw_value) { value }
|
||||||
|
|
||||||
|
it "should cast #{value} to integer correctly" do
|
||||||
|
result = subject.cast(:integer)
|
||||||
|
|
||||||
|
expect(result).to be_an(Integer)
|
||||||
|
expect(result).to eq(value.to_i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
["12", "101.5"].each do |value|
|
||||||
|
context "with a float value (#{value})" do
|
||||||
|
let(:raw_value) { value }
|
||||||
|
|
||||||
|
it "should cast #{value} to float correctly" do
|
||||||
|
result = subject.cast(:float)
|
||||||
|
|
||||||
|
expect(result).to be_an(Float)
|
||||||
|
expect(result).to eq(value.to_f)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
["12", "101.5"].each do |value|
|
||||||
|
context "with a decimal value (#{value})" do
|
||||||
|
let(:raw_value) { value }
|
||||||
|
|
||||||
|
it "should cast #{value} to decimal correctly" do
|
||||||
|
result = subject.cast(:decimal)
|
||||||
|
|
||||||
|
expect(result).to be_a(BigDecimal)
|
||||||
|
expect(result).to eq(value.to_d)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
["12", "101.513"].each do |value|
|
||||||
|
context "with a money value (#{value})" do
|
||||||
|
let(:raw_value) { value }
|
||||||
|
|
||||||
|
it "should cast #{value} to money correctly" do
|
||||||
|
result = subject.cast(:money)
|
||||||
|
|
||||||
|
expect(result).to be_a(String)
|
||||||
|
expect(result).to eq(value.to_f.to_s)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue