Skip to content

Commit f21d68b

Browse files
committed
test: add test suite for synonym sets
1 parent 3a16707 commit f21d68b

File tree

2 files changed

+155
-0
lines changed

2 files changed

+155
-0
lines changed

spec/typesense/synonym_set_spec.rb

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../spec_helper'
4+
5+
describe Typesense::SynonymSet do
6+
subject(:synonym_set) { typesense.synonym_sets['test-synonym-set'] }
7+
8+
let(:typesense) do
9+
Typesense::Client.new(
10+
api_key: 'xyz',
11+
nodes: [
12+
{
13+
host: 'localhost',
14+
port: 8108,
15+
protocol: 'http'
16+
}
17+
],
18+
connection_timeout_seconds: 10,
19+
retry_interval_seconds: 0.01
20+
)
21+
end
22+
23+
let(:synonym_set_data) do
24+
{
25+
'synonyms' => [
26+
{
27+
'id' => 'dummy',
28+
'synonyms' => ['foo', 'bar', 'baz'],
29+
'root' => ''
30+
}
31+
]
32+
}
33+
end
34+
35+
before do
36+
skip('SynonymSets is only supported in Typesense v30+') unless typesense_v30_or_above?
37+
38+
# Create a test synonym set
39+
typesense.synonym_sets.upsert('test-synonym-set', synonym_set_data)
40+
end
41+
42+
after do
43+
begin
44+
typesense.synonym_sets['test-synonym-set'].delete
45+
rescue StandardError
46+
end
47+
end
48+
49+
describe '#retrieve' do
50+
it 'returns the specified synonym set' do
51+
result = synonym_set.retrieve
52+
53+
expect(result['synonyms']).to eq(synonym_set_data['synonyms'])
54+
end
55+
end
56+
57+
describe '#delete' do
58+
it 'deletes the specified synonym set' do
59+
result = synonym_set.delete
60+
61+
expect(result['name']).to eq('test-synonym-set')
62+
63+
expect { synonym_set.retrieve }.to raise_error(Typesense::Error::ObjectNotFound)
64+
end
65+
end
66+
end
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../spec_helper'
4+
5+
describe Typesense::SynonymSets do
6+
subject(:synonym_sets) { typesense.synonym_sets }
7+
8+
let(:typesense) do
9+
Typesense::Client.new(
10+
api_key: 'xyz',
11+
nodes: [
12+
{
13+
host: 'localhost',
14+
port: 8108,
15+
protocol: 'http'
16+
}
17+
],
18+
connection_timeout_seconds: 10,
19+
retry_interval_seconds: 0.01
20+
)
21+
end
22+
23+
let(:synonym_set_data) do
24+
{
25+
'synonyms' => [
26+
{
27+
'id' => 'dummy',
28+
'synonyms' => ['foo', 'bar', 'baz'],
29+
'root' => ''
30+
}
31+
]
32+
}
33+
end
34+
35+
before do
36+
skip('SynonymSets is only supported in Typesense v30+') unless typesense_v30_or_above?
37+
38+
begin
39+
existing_sets = synonym_sets.retrieve
40+
existing_sets.each do |set|
41+
synonym_sets[set['name']].delete
42+
end
43+
rescue StandardError
44+
end
45+
end
46+
47+
after do
48+
begin
49+
existing_sets = synonym_sets.retrieve
50+
existing_sets.each do |set|
51+
synonym_sets[set['name']].delete
52+
end
53+
rescue StandardError
54+
end
55+
end
56+
57+
describe '#upsert' do
58+
it 'creates a synonym set and returns it' do
59+
result = synonym_sets.upsert('test-synonym-set', synonym_set_data)
60+
61+
expect(result['synonyms']).to eq(synonym_set_data['synonyms'])
62+
end
63+
end
64+
65+
describe '#retrieve' do
66+
it 'retrieves all synonym sets' do
67+
synonym_sets.upsert('test-synonym-set', synonym_set_data)
68+
69+
result = synonym_sets.retrieve
70+
71+
expect(result).to be_an(Array)
72+
expect(result.length).to be >= 1
73+
74+
# Find our test synonym set
75+
test_set = result.find { |set| set['name'] == 'test-synonym-set' }
76+
expect(test_set).to_not be_nil
77+
expect(test_set['synonyms']).to eq(synonym_set_data['synonyms'])
78+
end
79+
end
80+
81+
describe '#[]' do
82+
it 'creates a synonym set object and returns it' do
83+
result = synonym_sets['test-synonym-set']
84+
85+
expect(result).to be_a(Typesense::SynonymSet)
86+
expect(result.instance_variable_get(:@synonym_set_name)).to eq('test-synonym-set')
87+
end
88+
end
89+
end

0 commit comments

Comments
 (0)