Files
OpenBB/tests/openbb_terminal/stocks/technical_analysis/test_finnhub_model.py
jmaslek b71abcfbf4 Updating some names (#1575)
* quick econ fix

* black

* keys and feature flags

* terminal name 👀

* some more replacements

* some more replacements

* edit pyproject

* gst -> openbb

* add example portfolios back to git

* Update api from gst

* sorry.  skipping some tests

* another round of names

* another round of test edits

* Missed some .gst refs and update timezone

* water mark stuff

* Fixing Names in terminal.spec and name of GTFF_DEFAULTS to OBBFF_DEFAULTS

* fix more GST to OpenBB Terminal

* Logging : merge conflicts with main

* Revert wrong files

Co-authored-by: Andrew <andrew.kenreich@gmail.com>
Co-authored-by: DidierRLopes <dro.lopes@campus.fct.unl.pt>
Co-authored-by: Chavithra PARANA <chavithra@gmail.com>
2022-03-29 09:46:26 -04:00

126 lines
3.2 KiB
Python

# IMPORTATION STANDARD
import json
# IMPORTATION THIRDPARTY
import pytest
import requests
# IMPORTATION INTERNAL
from openbb_terminal.stocks.technical_analysis import finnhub_model
RESPONSE_SAMPLE = """{
"points": [
{
"aprice": 1.09236,
"atime": 1567458000,
"bprice": 1.1109,
"btime": 1568322000,
"cprice": 1.09897,
"ctime": 1568667600,
"dprice": 0,
"dtime": 0,
"end_price": 1.1109,
"end_time": 1568926800,
"entry": 1.1109,
"eprice": 0,
"etime": 0,
"mature": 0,
"patternname": "Double Bottom",
"patterntype": "bullish",
"profit1": 1.1294,
"profit2": 0,
"sortTime": 1568926800,
"start_price": 1.1109,
"start_time": 1566853200,
"status": "incomplete",
"stoploss": 1.0905,
"symbol": "EUR_USD",
"terminal": 0
},
{
"aprice": 1.09236,
"atime": 1567458000,
"bprice": 1.1109,
"btime": 1568322000,
"cprice": 1.09897,
"ctime": 1568667600,
"dprice": 1.13394884,
"dtime": 1568926800,
"entry": 1.1339,
"mature": 0,
"patternname": "Bat",
"patterntype": "bearish",
"profit1": 1.1181,
"profit2": 1.1082,
"przmax": 1.1339,
"przmin": 1.129,
"rrratio": 3.34,
"sortTime": 1568667600,
"status": "incomplete",
"stoploss": 1.1416,
"symbol": "EUR_USD",
"terminal": 0,
"xprice": 1.1393,
"xtime": 1561669200
}
]
}"""
@pytest.fixture(scope="module")
def vcr_config():
return {
"filter_query_parameters": [
("token", "MOCK_TOKEN"),
]
}
@pytest.mark.vcr(record_mode="none")
def test_get_pattern_recognition(recorder, mocker):
# MOCK RESPONSE
mock_response = requests.Response()
mock_response.status_code = 200
mocker.patch.object(
target=mock_response,
attribute="json",
side_effect=lambda: json.loads(RESPONSE_SAMPLE),
)
mocker.patch(target="requests.get", new=mocker.Mock(return_value=mock_response))
result_df = finnhub_model.get_pattern_recognition(ticker="PM", resolution="D")
recorder.capture(result_df)
@pytest.mark.vcr(record_mode="none")
def test_get_pattern_recognition_invalid_status(mocker):
# MOCK RESPONSE
attrs = {
"status_code": 400,
"json.return_value": {"error": "mock error message"},
}
mock_response = mocker.Mock(**attrs)
mocker.patch(target="requests.get", new=mocker.Mock(return_value=mock_response))
result = finnhub_model.get_pattern_recognition(ticker="PM", resolution="D")
assert result.empty
@pytest.mark.vcr(record_mode="none")
def test_get_pattern_recognition_invalid_json(mocker):
# MOCK RESPONSE
mock_response = requests.Response()
mock_response.status_code = 200
mocker.patch.object(
target=mock_response,
attribute="json",
side_effect=lambda: dict(),
)
mocker.patch(target="requests.get", new=mocker.Mock(return_value=mock_response))
result = finnhub_model.get_pattern_recognition(ticker="PM", resolution="D")
assert result.empty