From 2090564947bd01245f0d8d0e4abbf75b3732fe60 Mon Sep 17 00:00:00 2001 From: Dylan Knutson Date: Mon, 28 Jul 2025 01:54:08 +0000 Subject: [PATCH] rests for range queries --- spec/has_aux_table_spec.rb | 62 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/spec/has_aux_table_spec.rb b/spec/has_aux_table_spec.rb index f498b96..18f98b9 100644 --- a/spec/has_aux_table_spec.rb +++ b/spec/has_aux_table_spec.rb @@ -1235,4 +1235,66 @@ RSpec.describe HasAuxTable do expect(specific_b.on_aux).to eq("2b_aux") end end + + describe "range queries" do + ActiveRecord::Schema.define do + create_base_table :test_range_models do |t| + t.integer :base_field + t.create_aux :specific do |t| + t.integer :aux_field + end + end + end + + class TestRangeModel < ActiveRecord::Base + include HasAuxTable + end + + class TestRangeModelSpecific < TestRangeModel + aux_table :specific + end + + before do + @bases = (0..5).map { |i| TestRangeModel.create!(base_field: i) } + @specifics = + (0..5).map do |i| + TestRangeModelSpecific.create!(base_field: i, aux_field: i) + end + end + + it "works with a from..to range" do + expect(TestRangeModel.where(base_field: 1..5)).to eq( + @bases[1..5] + @specifics[1..5] + ) + expect(TestRangeModelSpecific.where(base_field: 2..3)).to eq( + @specifics[2..3] + ) + expect(TestRangeModelSpecific.where(aux_field: 2..3)).to eq( + @specifics[2..3] + ) + expect(TestRangeModelSpecific.where(aux_field: 4..7)).to eq( + @specifics[4..5] + ) + end + + it "works with a from.. range" do + expect(TestRangeModel.where(base_field: 1..)).to eq( + @bases[1..5] + @specifics[1..5] + ) + + expect(TestRangeModelSpecific.where(aux_field: 1..)).to eq( + @specifics[1..5] + ) + end + + it "works with a ..to range" do + expect(TestRangeModel.where(base_field: ..4)).to eq( + @bases[0..4] + @specifics[0..4] + ) + + expect(TestRangeModelSpecific.where(aux_field: ..4)).to eq( + @specifics[0..4] + ) + end + end end