13
13
14
14
namespace Tests ;
15
15
16
+ use Closure ;
16
17
use CodeIgniter \I18n \Time ;
17
18
use CodeIgniter \Queue \Entities \QueueJob ;
18
19
use CodeIgniter \Queue \Enums \Status ;
@@ -35,12 +36,22 @@ final class DatabaseHandlerTest extends TestCase
35
36
36
37
protected $ seed = TestDatabaseQueueSeeder::class;
37
38
private QueueConfig $ config ;
39
+ private Closure $ field ;
38
40
39
41
protected function setUp (): void
40
42
{
41
43
parent ::setUp ();
42
44
43
45
$ this ->config = config (QueueConfig::class);
46
+
47
+ // handle filed custom type conversion for SQLSRV
48
+ $ this ->field = function ($ field ) {
49
+ if ($ this ->db ->DBDriver === 'SQLSRV ' ) {
50
+ return "CONVERT(VARCHAR, {$ field }) " ;
51
+ }
52
+
53
+ return $ field ;
54
+ };
44
55
}
45
56
46
57
public function testDatabaseHandler (): void
@@ -87,9 +98,9 @@ public function testPush(): void
87
98
88
99
$ this ->assertTrue ($ result );
89
100
$ this ->seeInDatabase ('queue_jobs ' , [
90
- 'queue ' => 'queue ' ,
91
- 'payload ' => json_encode (['job ' => 'success ' , 'data ' => ['key ' => 'value ' ]]),
92
- 'available_at ' => '1703859316 ' ,
101
+ 'queue ' => 'queue ' ,
102
+ ( $ this -> field )( 'payload ' ) => json_encode (['job ' => 'success ' , 'data ' => ['key ' => 'value ' ]]),
103
+ 'available_at ' => '1703859316 ' ,
93
104
]);
94
105
}
95
106
@@ -105,10 +116,10 @@ public function testPushWithPriority(): void
105
116
106
117
$ this ->assertTrue ($ result );
107
118
$ this ->seeInDatabase ('queue_jobs ' , [
108
- 'queue ' => 'queue ' ,
109
- 'payload ' => json_encode (['job ' => 'success ' , 'data ' => ['key ' => 'value ' ]]),
110
- 'priority ' => 'high ' ,
111
- 'available_at ' => '1703859316 ' ,
119
+ 'queue ' => 'queue ' ,
120
+ ( $ this -> field )( 'payload ' ) => json_encode (['job ' => 'success ' , 'data ' => ['key ' => 'value ' ]]),
121
+ 'priority ' => 'high ' ,
122
+ 'available_at ' => '1703859316 ' ,
112
123
]);
113
124
}
114
125
@@ -121,20 +132,20 @@ public function testPushAndPopWithPriority(): void
121
132
122
133
$ this ->assertTrue ($ result );
123
134
$ this ->seeInDatabase ('queue_jobs ' , [
124
- 'queue ' => 'queue ' ,
125
- 'payload ' => json_encode (['job ' => 'success ' , 'data ' => ['key1 ' => 'value1 ' ]]),
126
- 'priority ' => 'low ' ,
127
- 'available_at ' => '1703859316 ' ,
135
+ 'queue ' => 'queue ' ,
136
+ ( $ this -> field )( 'payload ' ) => json_encode (['job ' => 'success ' , 'data ' => ['key1 ' => 'value1 ' ]]),
137
+ 'priority ' => 'low ' ,
138
+ 'available_at ' => '1703859316 ' ,
128
139
]);
129
140
130
141
$ result = $ handler ->setPriority ('high ' )->push ('queue ' , 'success ' , ['key2 ' => 'value2 ' ]);
131
142
132
143
$ this ->assertTrue ($ result );
133
144
$ this ->seeInDatabase ('queue_jobs ' , [
134
- 'queue ' => 'queue ' ,
135
- 'payload ' => json_encode (['job ' => 'success ' , 'data ' => ['key2 ' => 'value2 ' ]]),
136
- 'priority ' => 'high ' ,
137
- 'available_at ' => '1703859316 ' ,
145
+ 'queue ' => 'queue ' ,
146
+ ( $ this -> field )( 'payload ' ) => json_encode (['job ' => 'success ' , 'data ' => ['key2 ' => 'value2 ' ]]),
147
+ 'priority ' => 'high ' ,
148
+ 'available_at ' => '1703859316 ' ,
138
149
]);
139
150
140
151
$ result = $ handler ->pop ('queue ' , ['high ' , 'low ' ]);
@@ -347,9 +358,9 @@ public function testRetry(): void
347
358
$ this ->assertSame ($ count , 1 );
348
359
349
360
$ this ->seeInDatabase ('queue_jobs ' , [
350
- 'id ' => 3 ,
351
- 'queue ' => 'queue1 ' ,
352
- 'payload ' => json_encode (['job ' => 'failure ' , 'data ' => []]),
361
+ 'id ' => 3 ,
362
+ 'queue ' => 'queue1 ' ,
363
+ ( $ this -> field )( 'payload ' ) => json_encode (['job ' => 'failure ' , 'data ' => []]),
353
364
]);
354
365
$ this ->dontSeeInDatabase ('queue_jobs_failed ' , [
355
366
'id ' => 1 ,
0 commit comments