Skip to content

Commit c76d310

Browse files
authored
Merge pull request #453 from meilisearch/fix/pagination-tests
Use legacy search in pagination tests
2 parents 16a153d + bf6ea8c commit c76d310

3 files changed

Lines changed: 65 additions & 0 deletions

File tree

spec/pagination/kaminari_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
require 'kaminari'
22
require 'support/async_helper'
3+
require 'support/legacy_search_helper'
34
require 'support/models/restaurant'
45

56
describe 'Pagination with kaminari' do
7+
include LegacySearchHelper
8+
69
before(:all) do
10+
enable_meilisearch_legacy_search!
711
Meilisearch::Rails.configuration[:pagination_backend] = :kaminari
812
Restaurant.clear_index!
913

@@ -18,6 +22,10 @@
1822
end
1923
end
2024

25+
after(:all) do
26+
disable_meilisearch_legacy_search!
27+
end
28+
2129
it 'paginates' do
2230
first, second = Restaurant.search ''
2331

spec/pagination/will_paginate_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
require 'will_paginate'
22
require 'support/async_helper'
3+
require 'support/legacy_search_helper'
34
require 'support/models/movie'
45

56
describe 'Pagination with will_paginate' do
7+
include LegacySearchHelper
8+
69
before(:all) do
10+
enable_meilisearch_legacy_search!
711
Meilisearch::Rails.configuration[:pagination_backend] = :will_paginate
812
Movie.clear_index!
913

@@ -12,6 +16,10 @@
1216
end
1317
end
1418

19+
after(:all) do
20+
disable_meilisearch_legacy_search!
21+
end
22+
1523
it 'paginates with sort' do
1624
unpaged_hits = Movie.search ''
1725

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
require 'json'
2+
require 'net/http'
3+
require 'uri'
4+
5+
# This helper is used as a workaround to enable legacy search in tests.
6+
# See https://github.com/meilisearch/meilisearch/issues/6482
7+
8+
module LegacySearchHelper
9+
LEGACY_SEARCH_ENDPOINT = '/experimental-features'.freeze
10+
private_constant :LEGACY_SEARCH_ENDPOINT
11+
12+
def enable_meilisearch_legacy_search!
13+
update_meilisearch_legacy_search!(enabled: true)
14+
end
15+
16+
def disable_meilisearch_legacy_search!
17+
update_meilisearch_legacy_search!(enabled: false)
18+
end
19+
20+
private
21+
22+
def update_meilisearch_legacy_search!(enabled:)
23+
config = Meilisearch::Rails.configuration
24+
host = config.fetch(:meilisearch_url)
25+
api_key = config[:meilisearch_api_key]
26+
action = enabled ? 'enable' : 'disable'
27+
28+
uri = URI.parse("#{host.chomp('/')}#{LEGACY_SEARCH_ENDPOINT}")
29+
request = Net::HTTP::Patch.new(uri)
30+
request['Content-Type'] = 'application/json'
31+
request['Authorization'] = "Bearer #{api_key}" if api_key.present?
32+
request.body = { legacySearch: enabled }.to_json
33+
34+
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
35+
http.request(request)
36+
end
37+
38+
return if response.is_a?(Net::HTTPSuccess)
39+
40+
raise "Failed to #{action} Meilisearch legacy search in tests: " \
41+
"HTTP #{response.code} #{response.message}. Response body: #{response.body}"
42+
rescue KeyError => e
43+
raise "Missing Meilisearch test configuration: #{e.message}"
44+
rescue StandardError => e
45+
raise if e.message.start_with?("Failed to #{action} Meilisearch legacy search in tests:")
46+
47+
raise "Failed to #{action} Meilisearch legacy search in tests: #{e.class}: #{e.message}"
48+
end
49+
end

0 commit comments

Comments
 (0)