Files
OpenBB/tests/openbb_terminal/cryptocurrency/overview/test_coinbase_view.py
Chavithra 72b0a9f1ee Next release : reports on steroids (#2349)
* fix gov tests

* refactor insider

* new virtual path extraction

* removed some symbol default params as they're considered critical

* little adjustments

* portfolio refactor

* merge API factory

* add helpers, stocks, crypto, forex

* minor forex changes

* include forex api paths

* add 2 missing forex funcs

* portfolio brokers refactor

* display help on api func call

* add econometrics virtual paths to api

* add api unit test

* fixed report for the new api

* minor portfolio refactorings

* added gdapps

* anchor_yield path

* some more crypto path fixes

* small change

* fixed wrong param

* minor fixes

* wip - inital commit for forex report

* add bw as a model, we'll get better solution afterwards

* added ema with dummy model as it adds great functionality to the report

* minor fixes

* wip - added functions to forex report

* add feedparser news path

* add new virtual paths to api

* adding commands to equity report

* revert to old paths, new ones were breaking

* Add in very basic ETF report

* Add candle chart to ETF report

* add etf load

* allow use of candle without data

* add raw to candle

* added forex report

* ongoing equity report

* equity report change

* fix some portfolio bugs and add docstrings

* include portfolio paths and coin class

* add crypto paths

* change event dates to str

* starting economy report

* window for limit

* equity report and refactor newsapi

* add helper to api

* update on economy report

* equity report

* update economy report

* refactor some docstrings

* change maturities helper

* refactor newsapi

* refactor futures command

* add some sauce to ycrv plot

* black

* update report

* refactor alphavantage

* refactor wsj

* update economy report

* ycrv tenor

* map avaiable_indices

* map economy helpers

* fix econdb docstring

* add plots on economy report

* minor fixes

* wip - crypto report

* update economy report

* added same default args as view

* added view to explicity use chart=True when suing the api

* adjustments - removed rich tables to use only df

* final version economy report

* change report name

* equity report for review

* linting

* add etf symbols endpoint

* incorporate feedback economy report

* fix reports launch by adding tag to economy report

* fix equity bug

* remove analyst name

* fix

* fix news

* make links hyperlinks for equity

* click links

* fixed arg name

* improved news

* small improves

* Fix light terminal stylesheet that would prevent using it in notebooks (#2473)

* improved report

* run reports in installer

* fix #2209

* minor ycrv refactoring

* refactor portfolio/holdv virtual path

* refactor benchmark trades

* fix events args

* adapt economy report to changes

* fix portfolio controller bug

* holdv refactor

* refactor perf command

* start portfolio report

* remove perf view

* refactor holp

* add textwrap3 to poetry (doesn't solve the error)

* fix equity after merge

* add some rolling commands

* fix equity after save button

* improved crypto report, plus minor fixes

* minor fixes on the reports

* add maxdd and distr

* refactor qa

* var command

* refactor qa expected shortfall

* add es command

* add es command

* fix qa percentile bug

* fix economy rendering

* refactor qa omega

* add om command

* add summary command

* add dret command

* add mret command

* add yret command

* add metrics

* add allocs to report

* remove bro and po commands, add later

* fixed some tests

* adjustments to crypto report

* Fix docstring for VSCode

Added a note about installing Jupyter PowerToys extension for optimal API usage in Jupyter VSCode, in the API_README.md.

* minor adjustment

* remove nft calendar model virtual paths

* Add in Portfolio report

* fix external axes portfolio view

* Update portfolio report with rolling plots

* Details for ETF and Portfolio

* fix economy report

* change analyst to openbb

* floppy

* fixed unmatched axis in reports

* Speed up tests

* fix file and load on po

* get_news output

* add some po paths

* Add integration tests for Reports menu

* refactor maxsharpe

* open maxsharpe

* open minrisk

* open maxutil

* open maxret

* Added fixes

* black

* remove useless views

* Fixed small issue

* refactor ef

* open ef api

* portfolio optimization report

* Added fixes

* unblock api loading

* add more endpoints

* update po report

* unblock api loading

* update po report

* expose herc

* expose property endpoint

* Added fixes

* More api fixes

* flake8

* Fixed some mypy

* news api model

* flake8

* mypy fix

* mypy

* black

* pylint

* fix tests

* markdown

* markdown

* Added fixes

* fix economy report

* merge

* fix economy report

* remove empty notebook

* expose nco

* remove jupyter notebook

* expose plot endpoint

* remove po report, just used for tests

* api v paths plot

* remove api_old

* change loading msg

Co-authored-by: montezdesousa <montezdesousa@gmail.com>
Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt>
Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com>
Co-authored-by: Om Gupta <guptagom@gmail.com>
Co-authored-by: minhhoang1023 <40023817+minhhoang1023@users.noreply.github.com>
Co-authored-by: JerBouma <jer.bouma@gmail.com>
Co-authored-by: Theodore Aptekarev <aptekarev@gmail.com>
Co-authored-by: Om Gupta <85685255+soggyomelette@users.noreply.github.com>
Co-authored-by: Diogo Sousa <diogosousa@Diogos-MBP.lan>
Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com>
Co-authored-by: northern-64bit <75195383+northern-64bit@users.noreply.github.com>
Co-authored-by: colin99d <colin99delahunty@gmail.com>
Co-authored-by: Minh Hoang <nminh.hoang1023@gmail.com>
2022-09-20 15:07:58 +01:00

238 lines
8.5 KiB
Python

import pytest
from openbb_terminal.cryptocurrency.due_diligence import (
coinbase_view as dd_coinbase_view,
)
from openbb_terminal.portfolio.brokers.coinbase import (
coinbase_view as bro_coinbase_view,
)
from openbb_terminal.cryptocurrency.overview import coinbase_view as ov_coinbase_view
from tests.helpers.helpers import check_print
@check_print(assert_in="Open")
def test_display_candles(mocker):
mock_request = mocker.patch(
"openbb_terminal.cryptocurrency.due_diligence.coinbase_model.make_coinbase_request"
)
mock_validity = mocker.patch(
"openbb_terminal.cryptocurrency.due_diligence.coinbase_model.check_validity_of_product"
)
mock_validity.return_value = "ETH"
mock_request.return_value = [
[1631318400, 0.0715, 0.07314, 0.07155, 0.07245, 5957.08396321],
[1631232000, 0.07088, 0.07476, 0.07382, 0.07159, 13264.33844153],
[1631145600, 0.07369, 0.07669, 0.07599, 0.07378, 12462.35265359],
]
dd_coinbase_view.display_candles("ETH-BTC", "1day", "")
@check_print(assert_in="Value")
def test_display_stats(mocker):
mock_request = mocker.patch(
"openbb_terminal.cryptocurrency.due_diligence.coinbase_model.make_coinbase_request"
)
mock_validity = mocker.patch(
"openbb_terminal.cryptocurrency.due_diligence.coinbase_model.check_validity_of_product"
)
mock_validity.return_value = "ETH"
mock_request.return_value = {
"open": "3245.61000000",
"high": "3392.11000000",
"low": "3150.00000000",
"volume": "26185.51325269",
"last": "3333.19000000",
"volume_30day": "1019451.11188405",
}
dd_coinbase_view.display_stats("ETH-USDT", "")
@check_print(assert_in="price")
def test_display_trades(mocker):
mock_request = mocker.patch(
"openbb_terminal.cryptocurrency.due_diligence.coinbase_model.make_coinbase_request"
)
mock_validity = mocker.patch(
"openbb_terminal.cryptocurrency.due_diligence.coinbase_model.check_validity_of_product"
)
mock_validity.return_value = "ETH"
mock_request.return_value = [
{
"time": "2014-11-07T22:19:28.578544Z",
"trade_id": 74,
"price": "10.00000000",
"size": "0.01000000",
"side": "buy",
},
{
"time": "2014-11-07T01:08:43.642366Z",
"trade_id": 73,
"price": "100.00000000",
"size": "0.01000000",
"side": "sell",
},
]
dd_coinbase_view.display_trades("ETH-USDT", limit=100, side=None, export="")
@check_print(assert_in="product_id")
def test_display_orders(mocker):
mock_request = mocker.patch(
"openbb_terminal.portfolio.brokers.coinbase.coinbase_model.make_coinbase_request"
)
mock_validity = mocker.patch(
"openbb_terminal.portfolio.brokers.coinbase.coinbase_model._check_account_validity"
)
mock_validity.return_value = "ETH"
mock_request.return_value = [
{
"id": "d0c5340b-6d6c-49d9-b567-48c4bfca13d2",
"price": "0.10000000",
"size": "0.01000000",
"product_id": "BTC-USD",
"side": "buy",
"stp": "dc",
"type": "limit",
"time_in_force": "GTC",
"post_only": False,
"created_at": "2016-12-08T20:02:28.53864Z",
"fill_fees": "0.0000000000000000",
"filled_size": "0.00000000",
"executed_value": "0.0000000000000000",
"status": "open",
"settled": False,
},
{
"id": "b227e691-365c-470f-a860-a9b4a37dd1d8",
"price": "1.00000000",
"size": "1.00000000",
"product_id": "BTC-USD",
"side": "buy",
"type": "limit",
"created_at": "2016-12-08T20:01:19.038644Z",
"fill_fees": "0.0000000000000000",
"filled_size": "0.00000000",
"executed_value": "0.0000000000000000",
"status": "pending",
"settled": False,
},
{
"id": "b24327e691-365c-470f-a860-a9b4a37dd1d8",
"price": "2.00000000",
"size": "1.00000000",
"product_id": "BTC-USD",
"side": "buy",
"type": "limit",
"created_at": "2016-12-08T20:01:19.038644Z",
"fill_fees": "0.0000000000000000",
"filled_size": "0.00000000",
"executed_value": "0.0000000000000000",
"status": "pending",
"settled": False,
},
]
bro_coinbase_view.display_orders(2, "created_at", descend=True, export="")
@check_print(assert_in="crypto_address")
def test_display_deposits(mocker):
mock_request = mocker.patch(
"openbb_terminal.portfolio.brokers.coinbase.coinbase_model.make_coinbase_request"
)
mock_validity = mocker.patch(
"openbb_terminal.portfolio.brokers.coinbase.coinbase_model._check_account_validity"
)
mock_validity.return_value = "ETH"
mock_request.return_value = (
[
{
"id": "6cca6a14-a5e3-4219-9542-86123fc9d6c3",
"type": "deposit",
"created_at": "2019-06-18 01:37:48.78953+00",
"completed_at": "2019-06-18 01:37:49.756147+00",
"canceled_at": None,
"processed_at": "2019-06-18 01:37:49.756147+00",
"account_id": "bf091906-ca7f-499e-95fa-5bc15e918b46",
"user_id": "5eeac63c90b913bf3cf7c92e",
"user_nonce": None,
"amount": "40.00000000",
"details": {
"crypto_address": "testaddress",
"destination_tag": "379156162",
"coinbase_account_id": "7f8803e2-1be5-4a29-bfd2-3bc6645f5a24",
"destination_tag_name": "XRP Tag",
"crypto_transaction_id": "5eeac64cc46b34f5332e5326",
"coinbase_transaction_id": "5eeac652be6cf8b17f7625bd",
"crypto_transaction_hash": "testhash",
},
},
{
"id": "543cca6a14-a5e3-4219-9542-86123fc9d6c3",
"type": "deposit",
"created_at": "2019-06-18 01:37:48.78953+00",
"completed_at": "2019-06-18 01:37:49.756147+00",
"canceled_at": None,
"processed_at": "2019-06-18 01:37:49.756147+00",
"account_id": "bf091906-ca7f-499e-95fa-5bc15e918b46",
"user_id": "5eeac63c90b913bf3cf7c92e",
"user_nonce": None,
"amount": "50.00000000",
"details": {
"crypto_address": "12g",
"destination_tag": "379156162",
"coinbase_account_id": "7f8803e2-1be5-4a29-bfd2-3bc6645f5a24",
"destination_tag_name": "XRP Tag",
"crypto_transaction_id": "5eeac64cc46b34f5332e5326",
"coinbase_transaction_id": "5eeac652be6cf8b17f7625bd",
"crypto_transaction_hash": "324",
},
},
],
)
bro_coinbase_view.display_deposits(
2, "created_at", "deposit", descend=True, export=""
)
@check_print(assert_in="balance")
def test_display_history(mocker):
mock_request = mocker.patch(
"openbb_terminal.portfolio.brokers.coinbase.coinbase_model.make_coinbase_request"
)
mock_validity = mocker.patch(
"openbb_terminal.portfolio.brokers.coinbase.coinbase_model._check_account_validity"
)
mock_validity.return_value = "ETH"
mock_request.return_value = [
{
"id": "100",
"created_at": "2014-11-07T08:19:27.028459Z",
"amount": "0.001",
"balance": "239.669",
"type": "fee",
"details": {
"order_id": "d50ec984-77a8-460a-b958-66f114b0de9b",
"trade_id": "74",
"product_id": "ETH-USD",
},
},
{
"id": "111",
"created_at": "2014-11-07T08:19:27.028459Z",
"amount": "0.001",
"balance": "239.669",
"type": "fee",
"details": {
"order_id": "d50ec984-77a8-460a-b958-66f114b0de9b",
"trade_id": "75",
"product_id": "ETH-USD",
},
},
]
bro_coinbase_view.display_history("ETH", "", 2)
@check_print(assert_in="base_currency")
@pytest.mark.vcr
def test_display_trading_pairs():
ov_coinbase_view.display_trading_pairs(10, "base_currency", False, "")