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 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
|
# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------
import pytest
from unittest import mock
from azure.search.documents._generated.models import (
AutocompleteRequest,
SearchRequest,
SuggestRequest,
)
from azure.search.documents._queries import AutocompleteQuery, SuggestQuery, SearchQuery
class TestAutocompleteQuery:
def test_init(self):
query = AutocompleteQuery(search_text="text", suggester_name="sg")
assert type(query.request) is AutocompleteRequest
assert query.request.filter is None
@mock.patch("azure.search.documents._queries.AutocompleteQuery._request_type")
def test_kwargs_forwarded(self, mock_request):
mock_request.return_value = None
AutocompleteQuery(foo=10, bar=20)
assert mock_request.called
assert mock_request.call_args[0] == ()
assert mock_request.call_args[1] == {"foo": 10, "bar": 20}
def test_repr(self):
query = AutocompleteQuery(search_text="foo bar", suggester_name="sg")
assert repr(query) == "<AutocompleteQuery [foo bar]>"
query = AutocompleteQuery(search_text="aaaaabbbbb" * 200, suggester_name="sg")
assert len(repr(query)) == 1024
def test_filter(self):
query = AutocompleteQuery(search_text="text", suggester_name="sg")
assert query.request.filter is None
query.filter("expr0")
assert query.request.filter == "expr0"
query = AutocompleteQuery(search_text="text", suggester_name="sg", filter="expr1")
assert query.request.filter == "expr1"
query.filter("expr2")
assert query.request.filter == "expr2"
class TestSearchQuery:
def test_init(self):
query = SearchQuery()
assert type(query.request) is SearchRequest
assert query.request.filter is None
assert query.request.order_by is None
assert query.request.select is None
@mock.patch("azure.search.documents._queries.SearchQuery._request_type")
def test_kwargs_forwarded(self, mock_request):
mock_request.return_value = None
SearchQuery(foo=10, bar=20)
assert mock_request.called
assert mock_request.call_args[0] == ()
assert mock_request.call_args[1] == {"foo": 10, "bar": 20}
def test_repr(self):
query = SearchQuery()
assert repr(query) == "<SearchQuery [None]>"
query = SearchQuery(search_text="foo bar", suggester_name="sg")
assert repr(query) == "<SearchQuery [foo bar]>"
query = SearchQuery(search_text="aaaaabbbbb" * 200)
assert len(repr(query)) == 1024
def test_filter(self):
query = SearchQuery()
assert query.request.filter is None
query.filter("expr0")
assert query.request.filter == "expr0"
query = SearchQuery(filter="expr0")
assert query.request.filter == "expr0"
query.filter("expr1")
assert query.request.filter == "expr1"
def test_order_by(self):
query = SearchQuery()
assert query.request.order_by is None
query.order_by("f0")
assert query.request.order_by == "f0"
query.order_by("f1,f2")
assert query.request.order_by == "f1,f2"
query.order_by("f3", "f4")
assert query.request.order_by == "f3,f4"
query = SearchQuery(order_by="f0")
assert query.request.order_by == "f0"
query.order_by("f1,f2")
assert query.request.order_by == "f1,f2"
query.order_by("f3", "f4")
assert query.request.order_by == "f3,f4"
with pytest.raises(ValueError) as e:
query.order_by()
assert str(e) == "At least one field must be provided"
def test_select(self):
query = SearchQuery()
assert query.request.select is None
query.select("f0")
assert query.request.select == "f0"
query.select("f1,f2")
assert query.request.select == "f1,f2"
query.select("f3", "f4")
assert query.request.select == "f3,f4"
query = SearchQuery(select="f0")
assert query.request.select == "f0"
query.select("f1,f2")
assert query.request.select == "f1,f2"
query.select("f3", "f4")
assert query.request.select == "f3,f4"
str = ["f1", "f2"]
query.select(str)
assert query.request.select == "f1,f2"
with pytest.raises(ValueError) as e:
query.select()
assert str(e) == "At least one field must be provided"
class TestSuggestQuery:
def test_init(self):
query = SuggestQuery(search_text="text", suggester_name="sg")
assert type(query.request) is SuggestRequest
assert query.request.filter is None
@mock.patch("azure.search.documents._queries.SuggestQuery._request_type")
def test_kwargs_forwarded(self, mock_request):
mock_request.return_value = None
SuggestQuery(foo=10, bar=20)
assert mock_request.called
assert mock_request.call_args[0] == ()
assert mock_request.call_args[1] == {"foo": 10, "bar": 20}
def test_repr(self):
query = SuggestQuery(search_text="foo bar", suggester_name="sg")
assert repr(query) == "<SuggestQuery [foo bar]>"
query = SuggestQuery(search_text="aaaaabbbbb" * 200, suggester_name="sg")
assert len(repr(query)) == 1024
def test_filter(self):
query = SuggestQuery(search_text="text", suggester_name="sg")
assert query.request.filter is None
query.filter("expr0")
assert query.request.filter == "expr0"
query = SuggestQuery(search_text="text", suggester_name="sg", filter="expr1")
assert query.request.filter == "expr1"
query.filter("expr2")
assert query.request.filter == "expr2"
|