Coverage for test/conftest.py: 100%
27 statements
« prev ^ index » next coverage.py v7.3.1, created at 2023-09-22 17:59 +0530
« prev ^ index » next coverage.py v7.3.1, created at 2023-09-22 17:59 +0530
1"""Conftest for Pytest."""
2from __future__ import annotations
4from typing import Any
5from unittest.mock import Mock
7import pytest
9from src.click_opt.cli_options import CliOptions
10from src.esxport import EsXport
13@pytest.fixture()
14def cli_options() -> CliOptions:
15 """Mock Click CLI options."""
16 query: dict[str, Any] = {"query": {"match_all": {}}}
17 return CliOptions(
18 {
19 "query": query,
20 "output_file": "output.csv",
21 "url": "http://localhost:9200",
22 "user": "admin",
23 "password": "password",
24 "index_prefixes": ["index1", "index2"],
25 "fields": ["field1", "field2"],
26 "sort": [],
27 "delimiter": ",",
28 "max_results": 100,
29 "scroll_size": 100,
30 "meta_fields": [],
31 "verify_certs": True,
32 "ca_certs": None,
33 "client_cert": None,
34 "client_key": None,
35 "debug": False,
36 },
37 )
40@pytest.fixture()
41def es_client_without_data() -> Mock:
42 """Mock ElasticSearch Client."""
43 mock_client = Mock()
44 mock_client.search.return_value = {
45 "_scroll_id": "abc",
46 "hits": {
47 "total": {
48 "value": 0,
49 },
50 "hits": None,
51 },
52 }
53 return mock_client
56@pytest.fixture()
57def es_client_with_data() -> Mock:
58 """Mock ElasticSearch Client."""
59 mock_client = Mock()
60 mock_client.search.return_value = {
61 "_scroll_id": "abc",
62 "hits": {
63 "total": {
64 "value": 2,
65 },
66 "hits": [
67 {
68 "_index": "index1",
69 "_id": "ABC",
70 "_score": 2,
71 "_source": {
72 "test_id": "ABC",
73 },
74 },
75 {
76 "_index": "index1",
77 "_id": "DEF",
78 "_score": 1,
79 "_source": {
80 "test_id": "DEF",
81 },
82 },
83 ],
84 },
85 }
86 mock_client.get_mapping.return_value = {
87 "index1": {
88 "mappings": {
89 "properties": ["test_id"],
90 },
91 },
92 "index2": {
93 "mappings": {
94 "properties": ["field1", "field2", "field3"],
95 },
96 },
97 }
98 return mock_client
101@pytest.fixture()
102def esxport_obj(cli_options: CliOptions, es_client_without_data: Mock) -> EsXport:
103 """Mocked EsXport class."""
104 return EsXport(cli_options, es_client_without_data)
107@pytest.fixture()
108def esxport_obj_with_data(cli_options: CliOptions, es_client_with_data: Mock) -> EsXport:
109 """Mocked EsXport class."""
110 return EsXport(cli_options, es_client_with_data)