|
7 | 7 |
|
8 | 8 | use function Pest\Laravel\postJson; |
9 | 9 |
|
10 | | -test('filter datetime single value success', function ($value, bool $timestampMs = true) { |
| 10 | +test('filter (datetime as date) single value success', function ($value, bool $timestampMs = true) { |
11 | 11 | config()->set('query-builder-helpers.timestamp_ms', $timestampMs); |
12 | 12 |
|
13 | 13 | $expected = ParentModel::factory()->createOne(['datetime_value' => '2022-03-19 12:45:14']); |
|
34 | 34 | 'timestampMs' => [1647704715000], |
35 | 35 | ]); |
36 | 36 |
|
37 | | -test('filter datetime multi value one result success', function ($value, bool $timestampMs = true) { |
| 37 | +test('filter (datetime as datetime) single value success', function ($value, bool $timestampMs = true) { |
| 38 | + config()->set('query-builder-helpers.timestamp_ms', $timestampMs); |
| 39 | + |
| 40 | + $expected = ParentModel::factory()->createOne(['datetime_value' => '2022-03-17 15:00:02']); |
| 41 | + ParentModel::factory()->createMany([ |
| 42 | + ['datetime_value' => '2022-03-17 15:00:01'], |
| 43 | + ['datetime_value' => '2022-03-17 15:00:03'], |
| 44 | + ['datetime_value' => null], |
| 45 | + ]); |
| 46 | + |
| 47 | + attachQueryBuilder('test', ParentModel::class, [ExtraFilter::dateTimeExact('datetime_value')]); |
| 48 | + |
| 49 | + postJson('/test', ['filter' => ['datetime_value' => $value]]) |
| 50 | + ->assertOk() |
| 51 | + ->assertJsonCount(1, 'data') |
| 52 | + ->assertJsonPath('data.0.id', $expected->id); |
| 53 | +})->with([ |
| 54 | + 'datetime' => ['2022-03-17 15:00:02'], |
| 55 | + 'timestamp' => [1647529202, false], |
| 56 | + 'timestampMs' => [1647529202000], |
| 57 | +]); |
| 58 | + |
| 59 | +test('filter (datetime as date) multi value one result success', function ($value, bool $timestampMs = true) { |
38 | 60 | config()->set('query-builder-helpers.timestamp_ms', $timestampMs); |
39 | 61 |
|
40 | 62 | $expected = ParentModel::factory()->createOne(['datetime_value' => '2022-03-18 12:45:14']); |
|
56 | 78 | 'timestampMs' => [[1647561600000, 1647388800000, 1647734400000]], |
57 | 79 | ]); |
58 | 80 |
|
59 | | -test('filter datetime multi value multi result success', function ($value, bool $timestampMs = true) { |
| 81 | +test('filter (datetime as datetime) multi value one result success', function ($value, bool $timestampMs = true) { |
| 82 | + config()->set('query-builder-helpers.timestamp_ms', $timestampMs); |
| 83 | + |
| 84 | + $expected = ParentModel::factory()->createOne(['datetime_value' => '2022-03-17 15:00:02']); |
| 85 | + ParentModel::factory()->createMany([ |
| 86 | + ['datetime_value' => '2022-03-17 15:00:01'], |
| 87 | + ['datetime_value' => '2022-03-17 15:00:03'], |
| 88 | + ['datetime_value' => null], |
| 89 | + ]); |
| 90 | + |
| 91 | + attachQueryBuilder('test', ParentModel::class, [ExtraFilter::dateTimeExact('datetime_value')]); |
| 92 | + |
| 93 | + postJson('/test', ['filter' => ['datetime_value' => $value]]) |
| 94 | + ->assertOk() |
| 95 | + ->assertJsonCount(1, 'data') |
| 96 | + ->assertJsonPath('data.0.id', $expected->id); |
| 97 | +})->with([ |
| 98 | + 'date' => [['2022-03-17 15:00:02', '2022-03-17 15:00:04']], |
| 99 | + 'timestamp' => [[1647529202, 1647529204], false], |
| 100 | + 'timestampMs' => [[1647529202000, 1647529204000]], |
| 101 | +]); |
| 102 | + |
| 103 | +test('filter (datetime as date) multi value multi result success', function ($value, bool $timestampMs = true) { |
60 | 104 | config()->set('query-builder-helpers.timestamp_ms', $timestampMs); |
61 | 105 |
|
62 | 106 | ParentModel::factory()->createMany([ |
|
79 | 123 | 'timestampMs' => [[1647475200000, 1647561600000, 1647734400000]], |
80 | 124 | ]); |
81 | 125 |
|
| 126 | +test('filter (datetime as datetime) multi value multi result success', function ($value, bool $timestampMs = true) { |
| 127 | + config()->set('query-builder-helpers.timestamp_ms', $timestampMs); |
| 128 | + |
| 129 | + ParentModel::factory()->createMany([ |
| 130 | + ['datetime_value' => '2022-03-17 15:00:01'], |
| 131 | + ['datetime_value' => '2022-03-17 15:00:02'], |
| 132 | + ['datetime_value' => '2022-03-17 15:00:03'], |
| 133 | + ['datetime_value' => '2022-03-17 15:00:04'], |
| 134 | + ]); |
| 135 | + |
| 136 | + attachQueryBuilder('test', ParentModel::class, [ExtraFilter::dateTimeExact('datetime_value')]); |
| 137 | + |
| 138 | + postJson('/test', ['filter' => ['datetime_value' => $value]]) |
| 139 | + ->assertOk() |
| 140 | + ->assertJsonCount(2, 'data') |
| 141 | + ->assertJsonFragment(['datetime_value' => '2022-03-17T15:00:01.000000Z']) |
| 142 | + ->assertJsonFragment(['datetime_value' => '2022-03-17T15:00:04.000000Z']) |
| 143 | + ->assertJsonMissing(['datetime_value' => '2022-03-17T15:00:02.000000Z']) |
| 144 | + ->assertJsonMissing(['datetime_value' => '2022-03-17T15:00:03.000000Z']); |
| 145 | +})->with([ |
| 146 | + 'date' => [['2022-03-17 15:00:01', '2022-03-17 15:00:04']], |
| 147 | + 'timestamp' => [[1647529201, 1647529204], false], |
| 148 | + 'timestampMs' => [[1647529201000, 1647529204000]], |
| 149 | +]); |
| 150 | + |
82 | 151 | test('filter date value success', function ($value, bool $timestampMs = true) { |
83 | 152 | config()->set('query-builder-helpers.timestamp_ms', $timestampMs); |
84 | 153 |
|
|
0 commit comments