@@ -136,6 +136,86 @@ is( $txns->Count, 1, 'Found the txn with id limit' );
136136$txns -> FromSQL(" id > 10000" );
137137is( $txns -> Count, 0, ' No txns with big ids yet' );
138138
139+ diag ' Test TicketResolved date search' ;
140+ {
141+ # Create tickets with different resolved dates
142+ my $ticket1 = RT::Ticket-> new( RT-> SystemUser );
143+ my ($id1 ) = $ticket1 -> Create(
144+ Queue => ' General' ,
145+ Subject => ' Resolved yesterday' ,
146+ Status => ' resolved' ,
147+ );
148+ ok( $id1 , ' Created ticket 1' );
149+
150+ my $ticket2 = RT::Ticket-> new( RT-> SystemUser );
151+ my ($id2 ) = $ticket2 -> Create(
152+ Queue => ' General' ,
153+ Subject => ' Resolved 5 days ago' ,
154+ Status => ' resolved' ,
155+ );
156+ ok( $id2 , ' Created ticket 2' );
157+
158+ my $ticket3 = RT::Ticket-> new( RT-> SystemUser );
159+ my ($id3 ) = $ticket3 -> Create(
160+ Queue => ' General' ,
161+ Subject => ' Resolved 10 days ago' ,
162+ Status => ' resolved' ,
163+ );
164+ ok( $id3 , ' Created ticket 3' );
165+
166+ # Set different resolved dates using _Set to bypass normal date handling
167+ # Set to noon on each day to ensure they have a time component
168+ my $yesterday = RT::Date-> new( RT-> SystemUser );
169+ $yesterday -> SetToNow;
170+ $yesterday -> AddDays(-1);
171+ $yesterday -> SetToMidnight( Timezone => ' UTC' );
172+ $yesterday -> AddSeconds( 12 * 60 * 60 ); # noon
173+
174+ my $five_days_ago = RT::Date-> new( RT-> SystemUser );
175+ $five_days_ago -> SetToNow;
176+ $five_days_ago -> AddDays(-5);
177+ $five_days_ago -> SetToMidnight( Timezone => ' UTC' );
178+ $five_days_ago -> AddSeconds( 12 * 60 * 60 ); # noon
179+
180+ my $ten_days_ago = RT::Date-> new( RT-> SystemUser );
181+ $ten_days_ago -> SetToNow;
182+ $ten_days_ago -> AddDays(-10);
183+ $ten_days_ago -> SetToMidnight( Timezone => ' UTC' );
184+ $ten_days_ago -> AddSeconds( 12 * 60 * 60 ); # noon
185+
186+ # Update resolved dates directly
187+ $ticket1 -> _Set( Field => ' Resolved' , Value => $yesterday -> ISO );
188+ $ticket2 -> _Set( Field => ' Resolved' , Value => $five_days_ago -> ISO );
189+ $ticket3 -> _Set( Field => ' Resolved' , Value => $ten_days_ago -> ISO );
190+
191+ # Test searching with just a date (no time) using = operator
192+ my $yesterday_date = $yesterday -> Date; # Just YYYY-MM-DD
193+ $txns = RT::Transactions-> new( RT-> SystemUser );
194+ $txns -> FromSQL(qq{ ObjectType = 'RT::Ticket' AND Type = 'Create' AND TicketId = $id1 AND TicketResolved = '$yesterday_date '} );
195+ is( $txns -> Count, 1, " TicketResolved = '$yesterday_date ' (date only) finds ticket resolved on that day" );
196+
197+ # Also test with 5 days ago date
198+ my $five_days_date = $five_days_ago -> Date;
199+ $txns -> FromSQL(qq{ ObjectType = 'RT::Ticket' AND Type = 'Create' AND TicketId = $id2 AND TicketResolved = '$five_days_date '} );
200+ is( $txns -> Count, 1, " TicketResolved = '$five_days_date ' (date only) finds ticket resolved on that day" );
201+
202+ # Test searching with full datetime using = operator
203+ my $yesterday_datetime = $yesterday -> ISO; # YYYY-MM-DD HH:MM:SS
204+ $txns -> FromSQL(qq{ ObjectType = 'RT::Ticket' AND Type = 'Create' AND TicketId = $id1 AND TicketResolved = '$yesterday_datetime '} );
205+ is( $txns -> Count, 1, " TicketResolved = '$yesterday_datetime ' (datetime) finds ticket with exact match" );
206+
207+ my $five_days_datetime = $five_days_ago -> ISO;
208+ $txns -> FromSQL(qq{ ObjectType = 'RT::Ticket' AND Type = 'Create' AND TicketId = $id2 AND TicketResolved = '$five_days_datetime '} );
209+ is( $txns -> Count, 1, " TicketResolved = '$five_days_datetime ' (datetime) finds ticket with exact match" );
210+
211+ # Test that > and < operators still work with dates
212+ $txns -> FromSQL(qq{ ObjectType = 'RT::Ticket' AND Type = 'Create' AND TicketId = $id1 AND TicketResolved > '$five_days_date '} );
213+ is( $txns -> Count, 1, " TicketResolved > '$five_days_date ' finds ticket resolved after that date" );
214+
215+ $txns -> FromSQL(qq{ ObjectType = 'RT::Ticket' AND Type = 'Create' AND TicketId = $id3 AND TicketResolved < '$five_days_date '} );
216+ is( $txns -> Count, 1, " TicketResolved < '$five_days_date ' finds ticket resolved before that date" );
217+ }
218+
139219diag ' Test HTML::Mason::Commands::PreprocessTransactionSearchQuery' ;
140220
141221my %processed = (
0 commit comments