@@ -118,6 +118,28 @@ class ActiveRecordBatchEnumeratorTest < IterationUnitTest
118118 assert_equal ( [ shops , cursor ] , enum . first )
119119 end
120120
121+ test "columns with date type are serialized to ISO8601 format" do
122+ Event . create! ( name : "Conference" , occurred_on : Date . new ( 2025 , 10 , 15 ) )
123+ Event . create! ( name : "Workshop" , occurred_on : Date . new ( 2025 , 10 , 20 ) )
124+
125+ enum = build_enumerator ( relation : Event . all , columns : [ :occurred_on ] )
126+ events = Event . order ( :occurred_on ) . take ( 2 )
127+
128+ assert_equal ( [ events , "2025-10-20" ] , enum . first )
129+ end
130+
131+ test "cursor can be used to resume on date column" do
132+ Event . create! ( name : "Event 1" , occurred_on : Date . new ( 2025 , 1 , 10 ) )
133+ Event . create! ( name : "Event 2" , occurred_on : Date . new ( 2025 , 1 , 20 ) )
134+ Event . create! ( name : "Event 3" , occurred_on : Date . new ( 2025 , 1 , 30 ) )
135+
136+ enum = build_enumerator ( relation : Event . all , columns : [ :occurred_on , :id ] , cursor : [ "2025-01-10" , Event . first . id ] )
137+ events = Event . order ( :occurred_on , :id ) . offset ( 1 ) . take ( 2 )
138+
139+ cursor = [ events . last . occurred_on . iso8601 , events . last . id ]
140+ assert_equal ( [ events , cursor ] , enum . first )
141+ end
142+
121143 test "cursor can be used to resume on multiple columns" do
122144 enum = build_enumerator ( columns : [ :created_at , :id ] )
123145 products = Product . order ( :created_at , :id ) . take ( 2 )
0 commit comments