-
-
Notifications
You must be signed in to change notification settings - Fork 37
/
Copy pathoverride_test.py
121 lines (100 loc) · 3.63 KB
/
override_test.py
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
121
"""Tests for the Override class."""
from __future__ import annotations
import requests_mock
from tests.utils.object_assertions import (
assert_match_object,
assert_object_lists_match,
assert_to_contain_object,
)
from typesense.api_call import ApiCall
from typesense.collections import Collections
from typesense.override import Override, OverrideDeleteSchema
from typesense.types.override import OverrideSchema
def test_init(fake_api_call: ApiCall) -> None:
"""Test that the Override object is initialized correctly."""
override = Override(fake_api_call, "companies", "company_override")
assert override.collection_name == "companies"
assert override.override_id == "company_override"
assert_match_object(override.api_call, fake_api_call)
assert_object_lists_match(
override.api_call.node_manager.nodes,
fake_api_call.node_manager.nodes,
)
assert_match_object(
override.api_call.config.nearest_node,
fake_api_call.config.nearest_node,
)
assert (
override._endpoint_path() # noqa: WPS437
== "/collections/companies/overrides/company_override"
)
def test_retrieve(fake_override: Override) -> None:
"""Test that the Override object can retrieve an override."""
json_response: OverrideSchema = {
"rule": {
"match": "contains",
"query": "companies",
},
"filter_by": "num_employees>10",
}
with requests_mock.Mocker() as mock:
mock.get(
"/collections/companies/overrides/company_override",
json=json_response,
)
response = fake_override.retrieve()
assert len(mock.request_history) == 1
assert mock.request_history[0].method == "GET"
assert (
mock.request_history[0].url
== "http://nearest:8108/collections/companies/overrides/company_override"
)
assert response == json_response
def test_delete(fake_override: Override) -> None:
"""Test that the Override object can delete an override."""
json_response: OverrideDeleteSchema = {
"id": "company_override",
}
with requests_mock.Mocker() as mock:
mock.delete(
"/collections/companies/overrides/company_override",
json=json_response,
)
response = fake_override.delete()
assert len(mock.request_history) == 1
assert mock.request_history[0].method == "DELETE"
assert (
mock.request_history[0].url
== "http://nearest:8108/collections/companies/overrides/company_override"
)
assert response == {"id": "company_override"}
def test_actual_retrieve(
actual_collections: Collections,
delete_all: None,
create_override: None,
) -> None:
"""Test that the Override object can retrieve an override from Typesense Server."""
response = actual_collections["companies"].overrides["company_override"].retrieve()
assert response["rule"] == {
"match": "exact",
"query": "companies",
}
assert response["filter_by"] == "num_employees>10"
assert_to_contain_object(
response,
{
"rule": {
"match": "exact",
"query": "companies",
},
"filter_by": "num_employees>10",
},
)
def test_actual_delete(
actual_collections: Collections,
delete_all: None,
create_override: None,
) -> None:
"""Test that the Override object can delete an override from Typesense Server."""
response = actual_collections["companies"].overrides["company_override"].delete()
assert response == {"id": "company_override"}