-
Notifications
You must be signed in to change notification settings - Fork 112
Expand file tree
/
Copy pathtest_client_dynamic_search_rules_meilisearch.py
More file actions
120 lines (91 loc) · 3.47 KB
/
Copy pathtest_client_dynamic_search_rules_meilisearch.py
File metadata and controls
120 lines (91 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
"""Tests for dynamic search rule management endpoints."""
import pytest
from meilisearch.errors import MeilisearchApiError
def test_get_dynamic_search_rules_empty(client):
"""Test getting dynamic search rules when none exist."""
rules = client.get_dynamic_search_rules()
assert rules.results is not None
assert isinstance(rules.results, list)
assert len(rules.results) == 0
def test_create_or_update_dynamic_search_rule(client):
"""Test creating a dynamic search rule."""
rule_data = {
"description": "Test rule for promotion",
"priority": 10,
"active": True,
"conditions": [
{"scope": "query", "isEmpty": True}
],
"actions": [
{
"selector": {"indexUid": "movies", "id": "123"},
"action": {"type": "pin", "position": 1}
}
],
}
rule = client.create_or_update_dynamic_search_rule("test-rule", rule_data)
assert rule.uid == "test-rule"
assert rule.description == rule_data["description"]
assert rule.priority == 10
assert rule.active is True
def test_get_dynamic_search_rule(client):
"""Test getting a single dynamic search rule."""
# Create a rule first
rule_data = {
"description": "Test rule",
"active": True,
}
created_rule = client.create_or_update_dynamic_search_rule("test-rule", rule_data)
# Get the rule
rule = client.get_dynamic_search_rule(created_rule.uid)
assert rule.uid == created_rule.uid
assert rule.description == rule_data["description"]
def test_get_dynamic_search_rule_not_found(client):
"""Test getting a dynamic search rule that doesn't exist."""
with pytest.raises(MeilisearchApiError):
client.get_dynamic_search_rule("non-existent-uid")
def test_update_dynamic_search_rule(client):
"""Test updating a dynamic search rule."""
# Create a rule first
rule_data = {
"description": "Original description",
"priority": 10,
"active": True,
"conditions": [
{"scope": "query", "isEmpty": True}
],
"actions": [
{
"selector": {"indexUid": "movies", "id": "123"},
"action": {"type": "pin", "position": 1}
}
],
}
created_rule = client.create_or_update_dynamic_search_rule("test-rule", rule_data)
# Update the rule
update_data = {
"description": "Updated description",
"priority": 5,
}
updated_rule = client.create_or_update_dynamic_search_rule(created_rule.uid, update_data)
assert updated_rule.uid == created_rule.uid
assert updated_rule.description == update_data["description"]
assert updated_rule.priority == 5
def test_delete_dynamic_search_rule(client):
"""Test deleting a dynamic search rule."""
# Create a rule first
rule_data = {
"description": "Rule to delete",
"active": True,
}
created_rule = client.create_or_update_dynamic_search_rule("test-rule", rule_data)
# Delete the rule
status_code = client.delete_dynamic_search_rule(created_rule.uid)
assert status_code == 204
# Verify it's deleted
with pytest.raises(MeilisearchApiError):
client.get_dynamic_search_rule(created_rule.uid)
def test_delete_dynamic_search_rule_not_found(client):
"""Test deleting a dynamic search rule that doesn't exist."""
with pytest.raises(MeilisearchApiError):
client.delete_dynamic_search_rule("non-existent-uid")