From 6f920dcea863a23b2e461c55845597ae204974be Mon Sep 17 00:00:00 2001 From: Bruno Casali Date: Mon, 14 Nov 2022 19:19:00 -0300 Subject: [PATCH] Add Client#delete_tasks method --- lib/meilisearch/client.rb | 4 ++++ lib/meilisearch/http_request.rb | 3 ++- lib/meilisearch/task.rb | 4 ++++ spec/meilisearch/client/tasks_spec.rb | 32 ++++++++++++++++++++++++++- 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/lib/meilisearch/client.rb b/lib/meilisearch/client.rb index b0680b20..951d13f2 100644 --- a/lib/meilisearch/client.rb +++ b/lib/meilisearch/client.rb @@ -126,6 +126,10 @@ def cancel_tasks(options = {}) task_endpoint.cancel_tasks(options) end + def delete_tasks(options = {}) + task_endpoint.delete_tasks(options) + end + def tasks(options = {}) task_endpoint.task_list(options) end diff --git a/lib/meilisearch/http_request.rb b/lib/meilisearch/http_request.rb index 2894713b..fc0481a8 100644 --- a/lib/meilisearch/http_request.rb +++ b/lib/meilisearch/http_request.rb @@ -73,11 +73,12 @@ def http_patch(relative_path = '', body = nil, query_params = nil) ) end - def http_delete(relative_path = '') + def http_delete(relative_path = '', query_params = nil) send_request( proc { |path, config| self.class.delete(path, config) }, relative_path, config: { + query_params: query_params, headers: remove_headers(@headers.dup, 'Content-Type'), options: @options } diff --git a/lib/meilisearch/task.rb b/lib/meilisearch/task.rb index 447b00bb..9a921ed1 100644 --- a/lib/meilisearch/task.rb +++ b/lib/meilisearch/task.rb @@ -32,6 +32,10 @@ def cancel_tasks(options) http_post '/tasks/cancel', nil, Utils.parse_query(options, ALLOWED_CANCELATION_PARAMS) end + def delete_tasks(options) + http_delete '/tasks', Utils.parse_query(options, ALLOWED_CANCELATION_PARAMS) + end + def wait_for_task(task_uid, timeout_in_ms = 5000, interval_in_ms = 50) Timeout.timeout(timeout_in_ms.to_f / 1000) do loop do diff --git a/spec/meilisearch/client/tasks_spec.rb b/spec/meilisearch/client/tasks_spec.rb index 64a22371..59c8d23b 100644 --- a/spec/meilisearch/client/tasks_spec.rb +++ b/spec/meilisearch/client/tasks_spec.rb @@ -177,9 +177,39 @@ task = client.cancel_tasks(uids: [1, 2]) task = client.wait_for_task(task['taskUid']) - expect(task['details']['originalFilters']).to eq('uids=1%2C2') + expect(task['details']['originalFilter']).to eq('?uids=1%2C2') expect(task['details']['matchedTasks']).to be_a(Integer) expect(task['details']['canceledTasks']).to be_a(Integer) end end + + describe '#client.delete_tasks' do + it 'ensures supports to all available filters' do + allow(MeiliSearch::Utils).to receive(:transform_attributes).and_call_original + + client.delete_tasks( + canceled_by: [1, 2], uids: [2], foo: 'bar', + before_enqueued_at: '2022-01-20', after_enqueued_at: '2022-01-20', + before_started_at: '2022-01-20', after_started_at: '2022-01-20', + before_finished_at: '2022-01-20', after_finished_at: '2022-01-20' + ) + + expect(MeiliSearch::Utils).to have_received(:transform_attributes) + .with( + canceled_by: [1, 2], uids: [2], + before_enqueued_at: '2022-01-20', after_enqueued_at: '2022-01-20', + before_started_at: '2022-01-20', after_started_at: '2022-01-20', + before_finished_at: '2022-01-20', after_finished_at: '2022-01-20' + ) + end + + it 'has fields in the details field' do + task = client.delete_tasks(uids: [1, 2]) + task = client.wait_for_task(task['taskUid']) + + expect(task['details']['originalFilter']).to eq('?uids=1%2C2') + expect(task['details']['matchedTasks']).to be_a(Integer) + expect(task['details']['deletedTasks']).to be_a(Integer) + end + end end