|
11 | 11 |
|
12 | 12 | it 'returns empty results for all categories' do |
13 | 13 | expect(subject).to eq({ |
14 | | - ready: [], |
15 | | - scheduled: [], |
16 | | - failed: [], |
17 | | - in_progress: [], |
18 | | - completed: [], |
19 | | - recurring: [] |
20 | | - }) |
| 14 | + ready: [], |
| 15 | + scheduled: [], |
| 16 | + failed: [], |
| 17 | + in_progress: [], |
| 18 | + completed: [], |
| 19 | + recurring: [] |
| 20 | + }) |
21 | 21 | end |
22 | 22 | end |
23 | 23 |
|
|
26 | 26 |
|
27 | 27 | it 'returns empty results for all categories' do |
28 | 28 | expect(subject).to eq({ |
29 | | - ready: [], |
30 | | - scheduled: [], |
31 | | - failed: [], |
32 | | - in_progress: [], |
33 | | - completed: [], |
34 | | - recurring: [] |
35 | | - }) |
| 29 | + ready: [], |
| 30 | + scheduled: [], |
| 31 | + failed: [], |
| 32 | + in_progress: [], |
| 33 | + completed: [], |
| 34 | + recurring: [] |
| 35 | + }) |
36 | 36 | end |
37 | 37 | end |
38 | 38 |
|
39 | | - context 'searching by class_name' do |
| 39 | + context 'when searching by class_name' do |
40 | 40 | let(:query) { 'UserMailer' } |
41 | 41 | let!(:matching_job) { create(:solid_queue_job, class_name: 'UserMailerJob') } |
42 | 42 | let!(:non_matching_job) { create(:solid_queue_job, class_name: 'OrderProcessor') } |
|
48 | 48 | end |
49 | 49 | end |
50 | 50 |
|
51 | | - context 'searching by queue_name' do |
| 51 | + context 'when searching by queue_name' do |
52 | 52 | let(:query) { 'mailers' } |
53 | 53 | let!(:matching_job) { create(:solid_queue_job, queue_name: 'mailers') } |
54 | 54 | let!(:non_matching_job) { create(:solid_queue_job, queue_name: 'default') } |
|
60 | 60 | end |
61 | 61 | end |
62 | 62 |
|
63 | | - context 'searching by arguments' do |
| 63 | + context 'when searching by arguments' do |
64 | 64 | let(:query) { 'user@example.com' } |
65 | 65 | let!(:matching_job) { create(:solid_queue_job, arguments: '["user@example.com"]') } |
66 | 66 | let!(:non_matching_job) { create(:solid_queue_job, arguments: '["other@test.com"]') } |
|
72 | 72 | end |
73 | 73 | end |
74 | 74 |
|
75 | | - context 'searching by active_job_id' do |
| 75 | + context 'when searching by active_job_id' do |
76 | 76 | let(:job_id) { 'abc-123-def-456' } |
77 | 77 | let(:query) { 'abc-123' } |
78 | 78 | let!(:matching_job) { create(:solid_queue_job, active_job_id: job_id) } |
|
85 | 85 | end |
86 | 86 | end |
87 | 87 |
|
88 | | - context 'searching scheduled jobs' do |
| 88 | + context 'when searching scheduled jobs' do |
89 | 89 | let(:query) { 'ScheduledTask' } |
90 | 90 | let!(:job) { create(:solid_queue_job, class_name: 'ScheduledTaskJob') } |
91 | 91 | let!(:scheduled_execution) { create(:solid_queue_scheduled_execution, job: job) } |
|
95 | 95 | end |
96 | 96 | end |
97 | 97 |
|
98 | | - context 'searching failed jobs by error message' do |
| 98 | + context 'when searching failed jobs by error message' do |
99 | 99 | let(:query) { 'Connection refused' } |
100 | 100 | let!(:job) { create(:solid_queue_job, class_name: 'SomeJob') } |
101 | 101 | let!(:failed_execution) { create(:solid_queue_failed_execution, job: job, error: 'Error: Connection refused to host') } |
|
105 | 105 | end |
106 | 106 | end |
107 | 107 |
|
108 | | - context 'searching failed jobs by class_name' do |
| 108 | + context 'when searching failed jobs by class_name' do |
109 | 109 | let(:query) { 'FailingJob' } |
110 | 110 | let!(:job) { create(:solid_queue_job, class_name: 'FailingJobProcessor') } |
111 | 111 | let!(:failed_execution) { create(:solid_queue_failed_execution, job: job) } |
|
115 | 115 | end |
116 | 116 | end |
117 | 117 |
|
118 | | - context 'searching in_progress jobs' do |
| 118 | + context 'when searching in_progress jobs' do |
119 | 119 | let(:query) { 'ProcessingJob' } |
120 | 120 | let!(:job) { create(:solid_queue_job, class_name: 'ProcessingJobWorker') } |
121 | 121 | let!(:claimed_execution) { create(:solid_queue_claimed_execution, job: job) } |
|
125 | 125 | end |
126 | 126 | end |
127 | 127 |
|
128 | | - context 'searching completed jobs' do |
| 128 | + context 'when searching completed jobs' do |
129 | 129 | let(:query) { 'CompletedTask' } |
130 | 130 | let!(:completed_job) { create(:solid_queue_job, :completed, class_name: 'CompletedTaskJob') } |
131 | 131 | let!(:non_completed_job) { create(:solid_queue_job, class_name: 'CompletedTaskPending') } |
|
139 | 139 | end |
140 | 140 | end |
141 | 141 |
|
142 | | - context 'searching completed jobs by active_job_id' do |
| 142 | + context 'when searching completed jobs by active_job_id' do |
143 | 143 | let(:job_id) { '9b00ebba-0448-438d-8af2-79c5aae3d204' } |
144 | 144 | let(:query) { job_id } |
145 | 145 | let!(:completed_job) { create(:solid_queue_job, :completed, active_job_id: job_id) } |
|
149 | 149 | end |
150 | 150 | end |
151 | 151 |
|
152 | | - context 'searching completed jobs by arguments' do |
| 152 | + context 'when searching completed jobs by arguments' do |
153 | 153 | let(:query) { 'order_123' } |
154 | 154 | let!(:completed_job) { create(:solid_queue_job, :completed, arguments: '{"order_id":"order_123"}') } |
155 | 155 |
|
|
158 | 158 | end |
159 | 159 | end |
160 | 160 |
|
161 | | - context 'searching recurring tasks by key' do |
| 161 | + context 'when searching recurring tasks by key' do |
162 | 162 | let(:query) { 'daily_cleanup' } |
163 | 163 | let!(:recurring_task) { create(:solid_queue_recurring_task, key: 'daily_cleanup_task') } |
164 | 164 |
|
|
167 | 167 | end |
168 | 168 | end |
169 | 169 |
|
170 | | - context 'searching recurring tasks by class_name' do |
| 170 | + context 'when searching recurring tasks by class_name' do |
171 | 171 | let(:query) { 'CleanupJob' } |
172 | 172 | let!(:recurring_task) { create(:solid_queue_recurring_task, class_name: 'CleanupJobWorker') } |
173 | 173 |
|
|
176 | 176 | end |
177 | 177 | end |
178 | 178 |
|
179 | | - context 'case insensitive search' do |
| 179 | + context 'with case insensitive search' do |
180 | 180 | let(:query) { 'usermailer' } |
181 | 181 | let!(:job) { create(:solid_queue_job, class_name: 'UserMailerJob') } |
182 | 182 | let!(:ready_execution) { create(:solid_queue_ready_execution, job: job) } |
|
202 | 202 | end |
203 | 203 | end |
204 | 204 |
|
205 | | - context 'result limits' do |
| 205 | + context 'with result limits' do |
206 | 206 | let(:query) { 'BulkJob' } |
207 | 207 |
|
208 | 208 | before do |
|
232 | 232 | end |
233 | 233 | end |
234 | 234 |
|
235 | | - context 'SQL injection prevention' do |
| 235 | + context 'with SQL injection attempt' do |
236 | 236 | let(:query) { "'; DROP TABLE solid_queue_jobs; --" } |
237 | 237 |
|
238 | 238 | it 'safely handles malicious input' do |
|
0 commit comments