|
5 | 5 | use Carbon\Carbon; |
6 | 6 | use Carbon\CarbonImmutable; |
7 | 7 | use Carbon\CarbonTimeZone; |
| 8 | +use Illuminate\Support\Facades\Date; |
8 | 9 | use Statamic\Facades\Entry; |
9 | 10 | use TransformStudios\Events\EventFactory; |
10 | 11 | use TransformStudios\Events\Types\SingleDayEvent; |
|
146 | 147 | }); |
147 | 148 |
|
148 | 149 | it('queries occurrences based on timezone', function () { |
149 | | - $utcDate = now('UTC')->setTimeFromTimeString('11:00')->toImmutable(); |
150 | | - $laDate = now('America/Los_Angeles')->setTimeFromTimeString('11:00')->toImmutable(); |
| 150 | + $utcDate = Date::parse('2026-03-26 11am')->toImmutable(); |
| 151 | + $laDate = $utcDate->shiftTimezone('America/Los_Angeles'); |
151 | 152 |
|
152 | 153 | $entry = makeEvent([ |
153 | | - 'start_date' => $utcDate->toDateString(), |
| 154 | + 'start_date' => '2026-03-26', |
154 | 155 | 'timezone' => 'America/Los_Angeles', |
155 | | - 'start_time' => '22:00', |
| 156 | + 'start_time' => '05:00', |
156 | 157 | 'end_time' => '23:00', |
157 | 158 | ]); |
158 | 159 |
|
159 | 160 | $events1 = EventFactory::createFromEntry($entry)->occurrencesBetween($utcDate->startOfDay(), $utcDate->endOfDay()); |
160 | 161 | $events2 = EventFactory::createFromEntry($entry)->occurrencesBetween($laDate->startOfDay(), $laDate->endOfDay()); |
161 | 162 |
|
162 | | - expect($events1)->toHaveCount(0); |
| 163 | + expect($events1)->toHaveCount(1); |
163 | 164 | expect($events2)->toHaveCount(1); |
164 | 165 | }); |
165 | 166 |
|
166 | | -it('retrieves occurrences that span days', function () { |
167 | | - $date = CarbonImmutable::createFromDate(2026, 2, 28); |
| 167 | +it('retrieves occurrences that span days in different timezone than event', function ($from, $to, $count) { |
168 | 168 | $entry = Entry::make() |
169 | 169 | ->collection('events') |
170 | 170 | ->data([ |
171 | | - 'start_date' => $date->toDateString(), |
| 171 | + 'start_date' => now()->toDateString(), |
172 | 172 | 'timezone' => 'America/Los_Angeles', |
173 | 173 | 'start_time' => '05:00', |
174 | 174 | 'end_time' => '23:00', |
175 | 175 | ]); |
176 | 176 |
|
177 | | - $events1 = EventFactory::createFromEntry($entry)->occurrencesBetween($date->startOfMonth(), $date->endOfMonth()); |
178 | | - // $events2 = EventFactory::createFromEntry($entry)->occurrencesBetween($date->startOfMonth(), $date->endOfMonth()->endOfWeek()); |
179 | | - |
180 | | - expect($events1)->toHaveCount(1); |
181 | | -})->skip(); |
| 177 | + expect(EventFactory::createFromEntry($entry))->occurrencesBetween($from, $to)->toHaveCount($count); |
| 178 | +})->with([ |
| 179 | + [now()->startOfDay(), now()->endOfDay()->addDay(), 1], |
| 180 | + [now()->startOfDay(), now()->endOfDay(), 1], |
| 181 | +]); |
0 commit comments