Added more tests
Andrew Kane
committed Jun 21, 2016
commit e5a356a325f639ce6015a071d0507ec31cc16bd0
Showing 2
changed files with
33 additions
and 6 deletions
ahoy/properties.rb b/lib/ahoy/properties.rb
+7
-2
| @@ | @@ -11,7 +11,7 @@ module Ahoy |
| when /mysql/ | |
| if column_type == :json | |
| properties.each do |k, v| | |
| - | relation = relation.where("properties -> ? = ?", "$.#{k.to_s}", v) |
| + | relation = relation.where("properties -> ? = ?", "$.#{k.to_s}", v.as_json) |
| end | |
| else | |
| properties.each do |k, v| | |
| @@ | @@ -21,7 +21,12 @@ module Ahoy |
| when /postgres/ | |
| if column_type == :jsonb || column_type == :json | |
| properties.each do |k, v| | |
| - | relation = relation.where("properties ->> ? = ?", k.to_s, v.to_s) |
| + | relation = |
| + | if v.nil? |
| + | relation.where("properties ->> ? IS NULL", k.to_s) |
| + | else |
| + | relation.where("properties ->> ? = ?", k.to_s, v.as_json.to_s) |
| + | end |
| end | |
| else | |
| properties.each do |k, v| | |
test/test_helper.rb
+26
-4
| @@ | @@ -28,13 +28,35 @@ module PropertiesTest |
| end | |
| def test_string | |
| - | create_event hello: "world" |
| - | assert_equal 1, count_events(hello: "world") |
| + | create_event value: "world" |
| + | assert_equal 1, count_events(value: "world") |
| end | |
| def test_number | |
| - | create_event product_id: 1 |
| - | assert_equal 1, count_events(product_id: 1) |
| + | create_event value: 1 |
| + | assert_equal 1, count_events(value: 1) |
| + | end |
| + | |
| + | def test_date |
| + | today = Date.today |
| + | create_event value: today |
| + | assert_equal 1, count_events(value: today) |
| + | end |
| + | |
| + | def test_time |
| + | now = Time.now |
| + | create_event value: now |
| + | assert_equal 1, count_events(value: now) |
| + | end |
| + | |
| + | def test_boolean |
| + | create_event value: true |
| + | assert_equal 1, count_events(value: true) |
| + | end |
| + | |
| + | def test_nil |
| + | create_event value: nil |
| + | assert_equal 1, count_events(value: nil) |
| end | |
| def test_any | |