Skip to content

Commit 3cabb0c

Browse files
committed
test: add test suite for synonym sets
1 parent bd9e7c2 commit 3cabb0c

File tree

2 files changed

+156
-0
lines changed

2 files changed

+156
-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' => %w[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+
# Clean up the test synonym set
44+
typesense.synonym_sets['test-synonym-set'].delete
45+
rescue StandardError
46+
# Ignore errors if already deleted
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

spec/typesense/synonym_sets_spec.rb

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
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' => %w[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+
# Clean up any existing synonym sets
39+
existing_sets = synonym_sets.retrieve
40+
existing_sets.each do |set|
41+
synonym_sets[set['name']].delete
42+
end
43+
rescue StandardError
44+
# Ignore errors if no synonym sets exist
45+
end
46+
47+
after do
48+
# Clean up any created synonym sets
49+
existing_sets = synonym_sets.retrieve
50+
existing_sets.each do |set|
51+
synonym_sets[set['name']].delete
52+
end
53+
rescue StandardError
54+
# Ignore errors if no synonym sets exist
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+
# Create a synonym set first
68+
synonym_sets.upsert('test-synonym-set', synonym_set_data)
69+
70+
result = synonym_sets.retrieve
71+
72+
expect(result).to be_an(Array)
73+
expect(result.length).to be >= 1
74+
75+
# Find our test synonym set
76+
test_set = result.find { |set| set['name'] == 'test-synonym-set' }
77+
expect(test_set).not_to be_nil
78+
expect(test_set['synonyms']).to eq(synonym_set_data['synonyms'])
79+
end
80+
end
81+
82+
describe '#[]' do
83+
it 'creates a synonym set object and returns it' do
84+
result = synonym_sets['test-synonym-set']
85+
86+
expect(result).to be_a(Typesense::SynonymSet)
87+
expect(result.instance_variable_get(:@synonym_set_name)).to eq('test-synonym-set')
88+
end
89+
end
90+
end

0 commit comments

Comments
 (0)