From b75346e1c6b8a45c38108089ba9ad3943a7e7c08 Mon Sep 17 00:00:00 2001 From: David Tran Date: Fri, 1 Dec 2023 23:09:08 -0500 Subject: [PATCH 1/8] Update API endpoint from deprecated api.coindix to new api.nanoly --- openbb_terminal/cryptocurrency/defi/coindix_model.py | 4 ++-- openbb_terminal/cryptocurrency/defi/coindix_view.py | 2 +- openbb_terminal/cryptocurrency/defi/defi_controller.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openbb_terminal/cryptocurrency/defi/coindix_model.py b/openbb_terminal/cryptocurrency/defi/coindix_model.py index f02306d395a6..5d48d3514af8 100644 --- a/openbb_terminal/cryptocurrency/defi/coindix_model.py +++ b/openbb_terminal/cryptocurrency/defi/coindix_model.py @@ -116,7 +116,7 @@ def get_defi_vaults( sortby: str = "apy", ) -> pd.DataFrame: """Get DeFi Vaults Information. DeFi Vaults are pools of funds with an assigned strategy which main goal is to - maximize returns of its crypto assets. [Source: https://coindix.com/] + maximize returns of its crypto assets. [Source: https://nanoly.com/] Parameters ---------- @@ -145,7 +145,7 @@ def get_defi_vaults( headers = {"User-Agent": get_user_agent()} params = _prepare_params(chain=chain, protocol=protocol, kind=kind) response = request( - "https://apiv2.coindix.com/search", headers=headers, params=params, verify=False + "https://api.nanoly.com/search", headers=headers, params=params, verify=False ) if not 200 <= response.status_code < 300: raise Exception(f"Coindix api exception: {response.text}") diff --git a/openbb_terminal/cryptocurrency/defi/coindix_view.py b/openbb_terminal/cryptocurrency/defi/coindix_view.py index 4bc491622323..b5c86b6275f0 100644 --- a/openbb_terminal/cryptocurrency/defi/coindix_view.py +++ b/openbb_terminal/cryptocurrency/defi/coindix_view.py @@ -28,7 +28,7 @@ def display_defi_vaults( sheet_name: Optional[str] = None, ) -> None: """Prints table showing Top DeFi Vaults - pools of funds with an assigned strategy which main goal is to - maximize returns of its crypto assets. [Source: https://coindix.com/] + maximize returns of its crypto assets. [Source: https://nanoly.com/] Parameters ---------- diff --git a/openbb_terminal/cryptocurrency/defi/defi_controller.py b/openbb_terminal/cryptocurrency/defi/defi_controller.py index 4ef448054455..d470ac67944d 100644 --- a/openbb_terminal/cryptocurrency/defi/defi_controller.py +++ b/openbb_terminal/cryptocurrency/defi/defi_controller.py @@ -548,7 +548,7 @@ def call_vaults(self, other_args: List[str]): prog="vaults", description=""" Display Top DeFi Vaults. - [Source: https://coindix.com/] + [Source: https://nanoly.com/] """, ) parser.add_argument( From d4646c29a8d517b11d98890c2a473ff0679d2c36 Mon Sep 17 00:00:00 2001 From: David Tran Date: Sat, 2 Dec 2023 23:25:33 -0500 Subject: [PATCH 2/8] Renamed coindix_model and coindix_view to nanoly_model anmd nanoly_view respectively --- .../cryptocurrency/defi/defi_controller.py | 14 +++++++------- .../defi/{coindix_model.py => nanoly_model.py} | 6 +++--- .../defi/{coindix_view.py => nanoly_view.py} | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) rename openbb_terminal/cryptocurrency/defi/{coindix_model.py => nanoly_model.py} (97%) rename openbb_terminal/cryptocurrency/defi/{coindix_view.py => nanoly_view.py} (95%) diff --git a/openbb_terminal/cryptocurrency/defi/defi_controller.py b/openbb_terminal/cryptocurrency/defi/defi_controller.py index d470ac67944d..cabd1f376006 100644 --- a/openbb_terminal/cryptocurrency/defi/defi_controller.py +++ b/openbb_terminal/cryptocurrency/defi/defi_controller.py @@ -9,8 +9,8 @@ from openbb_terminal.core.session.current_user import get_current_user from openbb_terminal.cryptocurrency.defi import ( - coindix_model, - coindix_view, + nanoly_model, + nanoly_view, cryptosaurio_view, llama_model, llama_view, @@ -558,7 +558,7 @@ def call_vaults(self, other_args: List[str]): type=str, help="Blockchain name e.g. ethereum, terra", default=None, - choices=coindix_model.CHAINS, + choices=nanoly_model.CHAINS, required=False, ) parser.add_argument( @@ -568,7 +568,7 @@ def call_vaults(self, other_args: List[str]): type=str, help="DeFi protocol name e.g. aave, uniswap", default=None, - choices=coindix_model.PROTOCOLS, + choices=nanoly_model.PROTOCOLS, required=False, ) parser.add_argument( @@ -578,7 +578,7 @@ def call_vaults(self, other_args: List[str]): type=str, help="Kind/type of vault e.g. lp, single, noimploss, stable", default=None, - choices=coindix_model.VAULT_KINDS, + choices=nanoly_model.VAULT_KINDS, required=False, ) parser.add_argument( @@ -598,7 +598,7 @@ def call_vaults(self, other_args: List[str]): type=str, help="Sort by given column. Default: timestamp", default="apy", - choices=coindix_model.VAULTS_FILTERS, + choices=nanoly_model.VAULTS_FILTERS, ) parser.add_argument( "-r", @@ -625,7 +625,7 @@ def call_vaults(self, other_args: List[str]): ) if ns_parser: - coindix_view.display_defi_vaults( + nanoly_view.display_defi_vaults( chain=ns_parser.chain, kind=ns_parser.kind, protocol=ns_parser.protocol, diff --git a/openbb_terminal/cryptocurrency/defi/coindix_model.py b/openbb_terminal/cryptocurrency/defi/nanoly_model.py similarity index 97% rename from openbb_terminal/cryptocurrency/defi/coindix_model.py rename to openbb_terminal/cryptocurrency/defi/nanoly_model.py index 5d48d3514af8..b784d788b5d3 100644 --- a/openbb_terminal/cryptocurrency/defi/coindix_model.py +++ b/openbb_terminal/cryptocurrency/defi/nanoly_model.py @@ -1,4 +1,4 @@ -"""Coindix model""" +"""nanoly model""" __docformat__ = "numpy" import logging @@ -86,7 +86,7 @@ @log_start_end(log=logger) def _prepare_params(**kwargs) -> dict: - """Helper method, which handles preparation of parameters for requests to coindix api. + """Helper method, which handles preparation of parameters for requests to nanoly api. Parameters ---------- @@ -148,7 +148,7 @@ def get_defi_vaults( "https://api.nanoly.com/search", headers=headers, params=params, verify=False ) if not 200 <= response.status_code < 300: - raise Exception(f"Coindix api exception: {response.text}") + raise Exception(f"nanoly api exception: {response.text}") try: data = response.json()["data"] diff --git a/openbb_terminal/cryptocurrency/defi/coindix_view.py b/openbb_terminal/cryptocurrency/defi/nanoly_view.py similarity index 95% rename from openbb_terminal/cryptocurrency/defi/coindix_view.py rename to openbb_terminal/cryptocurrency/defi/nanoly_view.py index b5c86b6275f0..c656888eb93c 100644 --- a/openbb_terminal/cryptocurrency/defi/coindix_view.py +++ b/openbb_terminal/cryptocurrency/defi/nanoly_view.py @@ -1,11 +1,11 @@ -"""Coindix view""" +"""nanoly view""" __docformat__ = "numpy" import logging import os from typing import Optional -from openbb_terminal.cryptocurrency.defi import coindix_model +from openbb_terminal.cryptocurrency.defi import nanoly_model from openbb_terminal.decorators import log_start_end from openbb_terminal.helper_funcs import export_data, print_rich_table from openbb_terminal.rich_config import console @@ -59,7 +59,7 @@ def display_defi_vaults( Export dataframe data to csv,json,xlsx file """ - df = coindix_model.get_defi_vaults( + df = nanoly_model.get_defi_vaults( chain=chain, protocol=protocol, kind=kind, sortby=sortby, ascend=ascend ) if df.empty: From 96180cc2716403fd8974d41b259b15909fb07795 Mon Sep 17 00:00:00 2001 From: David Tran Date: Sat, 2 Dec 2023 23:32:26 -0500 Subject: [PATCH 3/8] Replaced instances of coindix with nanoly in defi tests --- .../test_get_defi_vaults.yaml | 40 ++++++++++++++++ .../test_display_defi_vaults.yaml | 41 ++++++++++++++++ .../defi/test_defi_controller.py | 2 +- .../cryptocurrency/defi/test_nanoly_model.py | 41 ++++++++++++++++ .../cryptocurrency/defi/test_nanoly_view.py | 47 +++++++++++++++++++ 5 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 tests/openbb_terminal/cryptocurrency/defi/cassettes/test_nanoly_model/test_get_defi_vaults.yaml create mode 100644 tests/openbb_terminal/cryptocurrency/defi/cassettes/test_nanoly_view/test_display_defi_vaults.yaml create mode 100644 tests/openbb_terminal/cryptocurrency/defi/test_nanoly_model.py create mode 100644 tests/openbb_terminal/cryptocurrency/defi/test_nanoly_view.py diff --git a/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_nanoly_model/test_get_defi_vaults.yaml b/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_nanoly_model/test_get_defi_vaults.yaml new file mode 100644 index 000000000000..1582a206eff0 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_nanoly_model/test_get_defi_vaults.yaml @@ -0,0 +1,40 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.10; rv:83.0) Gecko/20100101 Firefox/83.0 + method: GET + uri: https://api.nanoly.com/search?sort=-apy&tvl=1m&kind=all + response: + body: + string: '{"hasPrevPage":false,"hasNextPage":true,"total":981,"totalPages":50,"data":[{"id":273200,"name":"MAGIC-WETH","chain":"Arbitrum","protocol":"Uniswap","base":23.7902436,"reward":0,"rewards":{},"apy":23.7902436,"tvl":1041078,"link":"https://api.nanoly.com/vaults/273200/redirect","is_new":false,"watched":false},{"id":272292,"name":"LCX-WETH","chain":"Ethereum","protocol":"Uniswap","base":3.3537874,"reward":0,"rewards":{},"apy":3.3537874,"tvl":1059213,"link":"https://api.nanoly.com/vaults/272292/redirect","is_new":false,"watched":false},{"id":272170,"name":"LDO-WETH","chain":"Ethereum","protocol":"Uniswap","base":3.2958058,"reward":0,"rewards":{},"apy":3.2958058,"tvl":4170799,"link":"https://api.nanoly.com/vaults/272170/redirect","is_new":false,"watched":false},{"id":272470,"name":"DYDX-WETH","chain":"Ethereum","protocol":"Uniswap","base":2.4461352,"reward":0,"rewards":{},"apy":2.4461352,"tvl":1486170,"link":"https://api.nanoly.com/vaults/272470/redirect","is_new":false,"watched":false},{"id":272216,"name":"FTM-WETH","chain":"Ethereum","protocol":"Uniswap","base":2.4265455,"reward":0,"rewards":{},"apy":2.4265455,"tvl":1710725,"link":"https://api.nanoly.com/vaults/272216/redirect","is_new":false,"watched":false},{"id":272424,"name":"OP-USDC","chain":"Optimism","protocol":"Uniswap","base":2.4134576,"reward":0,"rewards":{},"apy":2.4134576,"tvl":2478859,"link":"https://api.nanoly.com/vaults/272424/redirect","is_new":false,"watched":false},{"id":272140,"name":"APE-WETH","chain":"Ethereum","protocol":"Uniswap","base":2.3316127,"reward":0,"rewards":{},"apy":2.3316127,"tvl":8071844,"link":"https://api.nanoly.com/vaults/272140/redirect","is_new":false,"watched":false},{"id":273083,"name":"WMATIC-CRV","chain":"Polygon","protocol":"Uniswap","base":2.3040111,"reward":0,"rewards":{},"apy":2.3040111,"tvl":1229701,"link":"https://api.nanoly.com/vaults/273083/redirect","is_new":false,"watched":false},{"id":272850,"name":"USDC-CRV","chain":"Ethereum","protocol":"Uniswap","base":2.30376,"reward":0,"rewards":{},"apy":2.30376,"tvl":1106306,"link":"https://api.nanoly.com/vaults/272850/redirect","is_new":false,"watched":false},{"id":32055,"name":"AVAX-USDC","chain":"Avalanche","protocol":"Trader + Joe","base":2.1417,"reward":0,"rewards":{},"apy":2.1417,"tvl":6652279,"link":"https://api.nanoly.com/vaults/32055/redirect","is_new":false,"watched":false},{"id":272340,"name":"FXS-WETH","chain":"Ethereum","protocol":"Uniswap","base":2.0582594,"reward":0,"rewards":{},"apy":2.0582594,"tvl":3994551,"link":"https://api.nanoly.com/vaults/272340/redirect","is_new":false,"watched":false},{"id":272183,"name":"WETH-OP","chain":"Optimism","protocol":"Uniswap","base":1.7595914,"reward":0,"rewards":{},"apy":1.7595914,"tvl":10287442,"link":"https://api.nanoly.com/vaults/272183/redirect","is_new":false,"watched":false},{"id":273797,"name":"WETH-CRV","chain":"Ethereum","protocol":"Uniswap","base":1.6795949,"reward":0,"rewards":{},"apy":1.6795949,"tvl":2316095,"link":"https://api.nanoly.com/vaults/273797/redirect","is_new":false,"watched":false},{"id":29232,"name":"MAGIC-ETH","chain":"Arbitrum","protocol":"Beefy","base":0.48329553,"reward":0,"rewards":{},"apy":1.60662408,"tvl":2821521,"link":"https://api.nanoly.com/vaults/29232/redirect","is_new":false,"watched":false},{"id":272838,"name":"WETH-USDT","chain":"Arbitrum","protocol":"Uniswap","base":1.5718619,"reward":0,"rewards":{},"apy":1.5718619,"tvl":1126252,"link":"https://api.nanoly.com/vaults/272838/redirect","is_new":false,"watched":false},{"id":273081,"name":"WMATIC-USDT","chain":"Polygon","protocol":"Uniswap","base":1.5272906,"reward":0,"rewards":{},"apy":1.5272906,"tvl":1791001,"link":"https://api.nanoly.com/vaults/273081/redirect","is_new":false,"watched":false},{"id":13265,"name":"MAGIC-WETH","chain":"Arbitrum","protocol":"Sushi","base":1.51100925,"reward":0,"rewards":{},"apy":1.51100925,"tvl":18056222,"link":"https://api.nanoly.com/vaults/13265/redirect","is_new":false,"watched":false},{"id":272192,"name":"WMATIC-USDC","chain":"Polygon","protocol":"Uniswap","base":1.3378611,"reward":0,"rewards":{},"apy":1.3378611,"tvl":6845295,"link":"https://api.nanoly.com/vaults/272192/redirect","is_new":false,"watched":false},{"id":272232,"name":"LDO-WETH","chain":"Ethereum","protocol":"Uniswap","base":1.3300697,"reward":0,"rewards":{},"apy":1.3300697,"tvl":9763869,"link":"https://api.nanoly.com/vaults/272232/redirect","is_new":false,"watched":false},{"id":184751,"name":"BTC.b-AVAX","chain":"Avalanche","protocol":"Trader + Joe","base":1.28,"reward":0,"rewards":{},"apy":1.28,"tvl":2447906,"link":"https://api.nanoly.com/vaults/184751/redirect","is_new":false,"watched":false}]}' + headers: + Access-Control-Allow-Origin: + - '*' + Connection: + - keep-alive + Content-Length: + - '4656' + Content-Type: + - application/json; charset=utf-8 + Date: + - Thu, 26 Jan 2023 19:07:41 GMT + ETag: + - W/"1230-Zg8G/jUGRtIxDf0M548Nuh+ZBuA" + Server: + - nginx/1.18.0 (Ubuntu) + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_nanoly_view/test_display_defi_vaults.yaml b/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_nanoly_view/test_display_defi_vaults.yaml new file mode 100644 index 000000000000..844054d33386 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_nanoly_view/test_display_defi_vaults.yaml @@ -0,0 +1,41 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:86.0) Gecko/20100101 Firefox/86.0 + method: GET + uri: https://api.nanoly.com/search?sort=-apy&tvl=1m&kind=all + response: + body: + string: '{"hasPrevPage":false,"hasNextPage":true,"total":1331,"totalPages":50,"data":[{"id":120568,"name":"WETH-10k","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1698882,"link":"https://api.nanoly.com/vault/120568/redirect","is_new":false,"watched":false},{"id":113873,"name":"Azuki-WETH","icon":"https://api.nanoly.com/icons/Azuki-WETH.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1180607,"link":"https://api.nanoly.com/vault/113873/redirect","is_new":false,"watched":false},{"id":111282,"name":"WETH-RYOSHI","icon":"https://api.nanoly.com/icons/WETH-RYOSHI.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1569332,"link":"https://api.nanoly.com/vault/111282/redirect","is_new":false,"watched":false},{"id":110372,"name":"Hasbro-WETH","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1025188,"link":"https://api.nanoly.com/vault/110372/redirect","is_new":false,"watched":false},{"id":118073,"name":"WETH-GENIE","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1770296,"link":"https://api.nanoly.com/vault/118073/redirect","is_new":false,"watched":false},{"id":165735,"name":"WETH-PRAG","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1359190,"link":"https://api.nanoly.com/vault/165735/redirect","is_new":false,"watched":false},{"id":113531,"name":"APELAND-WETH","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1216107,"link":"https://api.nanoly.com/vault/113531/redirect","is_new":false,"watched":false},{"id":108126,"name":"Line-WETH","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":2065257,"link":"https://api.nanoly.com/vault/108126/redirect","is_new":false,"watched":false},{"id":167534,"name":"USDC-CRV","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1721977,"link":"https://api.nanoly.com/vault/167534/redirect","is_new":false,"watched":false},{"id":121969,"name":"USDD-USDT + (0.01%)","icon":"https://api.nanoly.com/icons/USDD-USDT.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":3925917,"link":"https://api.nanoly.com/vault/121969/redirect","is_new":false,"watched":false},{"id":97162,"name":"WETH-DOODLE","icon":"https://api.nanoly.com/icons/WETH-DOODLE.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":2886965,"link":"https://api.nanoly.com/vault/97162/redirect","is_new":false,"watched":false},{"id":112952,"name":"HOOT-WETH","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1474099,"link":"https://api.nanoly.com/vault/112952/redirect","is_new":false,"watched":false},{"id":95445,"name":"Firefox-WETH","icon":"https://api.nanoly.com/icons/Firefox-WETH.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1963426,"link":"https://api.nanoly.com/vault/95445/redirect","is_new":false,"watched":false},{"id":178382,"name":"WBTC-BBTC + (0.05%)","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":4200389,"link":"https://api.nanoly.com/vault/178382/redirect","is_new":true,"watched":false},{"id":104732,"name":"WETH-Richemont","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1630815,"link":"https://api.nanoly.com/vault/104732/redirect","is_new":false,"watched":false},{"id":119426,"name":"WETH-OP","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1664803,"link":"https://api.nanoly.com/vault/119426/redirect","is_new":false,"watched":false},{"id":50508,"name":"GRAPE-MIM","icon":"https://api.nanoly.com/icons/GRAPE-MIM.png","chain":"Avalanche","protocol":"Beefy","base":7.47626288,"reward":0,"rewards":{},"apy":7.47626288,"tvl":1056770,"link":"https://api.nanoly.com/vault/50508/redirect","is_new":false,"watched":false},{"id":150035,"name":"WBTC-cxBTC","icon":"https://api.nanoly.com/default_icon.png","chain":"Polygon","protocol":"Beefy","base":3.85182283,"reward":0,"rewards":{},"apy":3.85182283,"tvl":1542565,"link":"https://api.nanoly.com/vault/150035/redirect","is_new":false,"watched":false},{"id":72936,"name":"ETH-cxETH","icon":"https://api.nanoly.com/icons/ETH-cxETH.png","chain":"Polygon","protocol":"Beefy","base":3.76929371,"reward":0,"rewards":{},"apy":3.76929371,"tvl":1547500,"link":"https://api.nanoly.com/vault/72936/redirect","is_new":false,"watched":false},{"id":162981,"name":"SHIT-WETH + (1%)","icon":"https://api.nanoly.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":3.65199141,"reward":0,"rewards":{},"apy":3.65199141,"tvl":2179266,"link":"https://api.nanoly.com/vault/162981/redirect","is_new":false,"watched":false}]}' + headers: + Access-Control-Allow-Origin: + - '*' + Connection: + - keep-alive + Content-Length: + - '5576' + Content-Type: + - application/json; charset=utf-8 + Date: + - Fri, 17 Jun 2022 11:05:35 GMT + ETag: + - W/"15c8-U7oBaaf65q92UwgeoTPkw3i+bn0" + Server: + - nginx/1.18.0 (Ubuntu) + X-Powered-By: + - Express + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/defi/test_defi_controller.py b/tests/openbb_terminal/cryptocurrency/defi/test_defi_controller.py index 680de88be72d..e13256cb9edc 100644 --- a/tests/openbb_terminal/cryptocurrency/defi/test_defi_controller.py +++ b/tests/openbb_terminal/cryptocurrency/defi/test_defi_controller.py @@ -273,7 +273,7 @@ def test_call_func_expect_queue(expected_queue, func, queue): ( "call_vaults", [], - "coindix_view.display_defi_vaults", + "nanoly_view.display_defi_vaults", [], dict(), ), diff --git a/tests/openbb_terminal/cryptocurrency/defi/test_nanoly_model.py b/tests/openbb_terminal/cryptocurrency/defi/test_nanoly_model.py new file mode 100644 index 000000000000..419ac30f5aee --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/defi/test_nanoly_model.py @@ -0,0 +1,41 @@ +# IMPORTATION STANDARD + +# IMPORTATION THIRDPARTY +import pandas as pd +import pytest + +# IMPORTATION INTERNAL +from openbb_terminal.cryptocurrency.defi import nanoly_model + + +@pytest.mark.vcr +def test_get_defi_vaults(recorder): + df = nanoly_model.get_defi_vaults( + chain=None, + protocol=None, + kind=None, + ) + recorder.capture(df) + + +@pytest.mark.vcr(record_mode="none") +def test_get_defi_vaults_no_data(mocker): + # MOCK GET + attrs = { + "status_code": 200, + "json.return_value": {"data": []}, + } + mock_response = mocker.Mock(**attrs) + mocker.patch( + target="openbb_terminal.helper_funcs.requests.get", + new=mocker.Mock(return_value=mock_response), + ) + + df = nanoly_model.get_defi_vaults( + chain=None, + protocol=None, + kind=None, + ) + + assert isinstance(df, pd.DataFrame) + assert df.empty diff --git a/tests/openbb_terminal/cryptocurrency/defi/test_nanoly_view.py b/tests/openbb_terminal/cryptocurrency/defi/test_nanoly_view.py new file mode 100644 index 000000000000..726e4e5b0202 --- /dev/null +++ b/tests/openbb_terminal/cryptocurrency/defi/test_nanoly_view.py @@ -0,0 +1,47 @@ +# IMPORTATION STANDARD + +# IMPORTATION THIRDPARTY +import pandas as pd +import pytest + +# IMPORTATION INTERNAL +from openbb_terminal.cryptocurrency.defi import nanoly_view + + +@pytest.mark.vcr +@pytest.mark.record_stdout +def test_display_defi_vaults(mocker): + # MOCK EXPORT_DATA + mocker.patch(target="openbb_terminal.cryptocurrency.defi.nanoly_view.export_data") + + nanoly_view.display_defi_vaults( + chain=None, + protocol=None, + kind=None, + limit=None, + sortby="apy", + ascend=False, + link=True, + export="", + ) + + +@pytest.mark.vcr(record_mode="none") +@pytest.mark.record_stdout +def test_display_defi_vaults_empty_df(mocker): + # MOCK GET_DEFI_VAULTS + mocker.patch( + target="openbb_terminal.cryptocurrency.defi.nanoly_view.nanoly_model.get_defi_vaults", + return_value=pd.DataFrame(), + ) + + nanoly_view.display_defi_vaults( + chain=None, + protocol=None, + kind=None, + limit=None, + sortby="apy", + ascend=False, + link=True, + export="", + ) From 09e3f8367309fbf554023b2ee417f767b8a15ccb Mon Sep 17 00:00:00 2001 From: David Tran Date: Tue, 5 Dec 2023 14:15:47 -0500 Subject: [PATCH 4/8] Changed data source from coindix to nanoly on screen --- openbb_terminal/miscellaneous/sources/openbb_default.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openbb_terminal/miscellaneous/sources/openbb_default.json b/openbb_terminal/miscellaneous/sources/openbb_default.json index 4a97941bd7b5..64c8fa513e2e 100644 --- a/openbb_terminal/miscellaneous/sources/openbb_default.json +++ b/openbb_terminal/miscellaneous/sources/openbb_default.json @@ -415,7 +415,7 @@ }, "defi": { "newsletter": ["Substack"], - "vaults": ["Coindix"], + "vaults": ["Nanoly"], "tokens": ["TheGraph"], "stats": ["TheGraph"], "pairs": ["TheGraph"], From 54d4257b27b3615d57c80c765a30c5d75c790f1d Mon Sep 17 00:00:00 2001 From: David Tran Date: Tue, 5 Dec 2023 14:18:31 -0500 Subject: [PATCH 5/8] Upated defi data source in defi_controller from coindix to nanoly --- .../gpt_index/data/crypto_defi_vaults.txt | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/openbb_terminal/miscellaneous/gpt_index/data/crypto_defi_vaults.txt b/openbb_terminal/miscellaneous/gpt_index/data/crypto_defi_vaults.txt index 94d2febd0aa4..94717723ba66 100644 --- a/openbb_terminal/miscellaneous/gpt_index/data/crypto_defi_vaults.txt +++ b/openbb_terminal/miscellaneous/gpt_index/data/crypto_defi_vaults.txt @@ -3,7 +3,7 @@ usage: vaults [-c {ethereum,polygon,avalanche,bsc,terra,fantom,moonriver,celo,he [-p {aave,acryptos,alpaca,anchor,autofarm,balancer,bancor,beefy,belt,compound,convex,cream,curve,defichain,geist,lido,liquity,mirror,pancakeswap,raydium,sushi,tarot,traderjoe,tulip,ubeswap,uniswap,venus,yearn,osmosis,tulip}] [-k {lp,single,noimploss,stable}] [-t TOP] [-s {name,chain,protocol,apy,tvl,link}] [-r] [-l] -Display Top DeFi Vaults. [Source: https://coindix.com/] +Display Top DeFi Vaults. [Source: https://nanoly.com/] optional arguments: -c {ethereum,polygon,avalanche,bsc,terra,fantom,moonriver,celo,heco,okex,cronos,arbitrum,eth,harmony,fuse,defichain,solana,optimism,kusama,metis,osmosis}, --chain {ethereum,polygon,avalanche,bsc,terra,fantom,moonriver,celo,heco,okex,cronos,arbitrum,eth,harmony,fuse,defichain,solana,optimism,kusama,metis,osmosis} @@ -18,15 +18,15 @@ optional arguments: -r, --reverse Data is sorted in descending order by default. Reverse flag will sort it in an ascending way. Only works when raw data is displayed. (default: False) -l, --links Flag to show vault link (default: True) - -Examples: -- Display top 10 DeFi vaults across all chains and protocols: crypto/defi/vaults -- Show top 5 DeFi vaults on the Ethereum blockchain: crypto/defi/vaults -c ethereum -t 5 -- Display top DeFi vaults for the Aave protocol: crypto/defi/vaults -p aave -- Show top 10 single asset vaults: crypto/defi/vaults -k single -- Display top DeFi vaults on the Terra blockchain sorted by total value locked (TVL): crypto/defi/vaults -c terra -s tvl -- Show top 7 DeFi vaults for the Uniswap protocol, sorted by APY in ascending order: crypto/defi/vaults -p uniswap -t 7 -s apy -r -- Display top 5 DeFi vaults on the Binance Smart Chain with vault links: crypto/defi/vaults -c bsc -t 5 -l -- Show top DeFi vaults for the Sushi protocol on the Polygon network: crypto/defi/vaults -c polygon -p sushi -- Display top 3 no impermanent loss vaults sorted by name: crypto/defi/vaults -k noimploss -t 3 -s name + +Examples: +- Display top 10 DeFi vaults across all chains and protocols: crypto/defi/vaults +- Show top 5 DeFi vaults on the Ethereum blockchain: crypto/defi/vaults -c ethereum -t 5 +- Display top DeFi vaults for the Aave protocol: crypto/defi/vaults -p aave +- Show top 10 single asset vaults: crypto/defi/vaults -k single +- Display top DeFi vaults on the Terra blockchain sorted by total value locked (TVL): crypto/defi/vaults -c terra -s tvl +- Show top 7 DeFi vaults for the Uniswap protocol, sorted by APY in ascending order: crypto/defi/vaults -p uniswap -t 7 -s apy -r +- Display top 5 DeFi vaults on the Binance Smart Chain with vault links: crypto/defi/vaults -c bsc -t 5 -l +- Show top DeFi vaults for the Sushi protocol on the Polygon network: crypto/defi/vaults -c polygon -p sushi +- Display top 3 no impermanent loss vaults sorted by name: crypto/defi/vaults -k noimploss -t 3 -s name - Show top 10 DeFi vaults on the Solana blockchain without vault links: crypto/defi/vaults -c solana -l \ No newline at end of file From dc3d56ef5a2fbfdd582ecc796ca76c1ad53c2e25 Mon Sep 17 00:00:00 2001 From: David Tran Date: Tue, 5 Dec 2023 18:14:45 -0500 Subject: [PATCH 6/8] Renamed coindix models to nanoly model in sdk --- openbb_terminal/core/sdk/models/crypto_sdk_model.py | 4 ++-- openbb_terminal/core/sdk/sdk_init.py | 4 ++-- openbb_terminal/core/sdk/trail_map.csv | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/openbb_terminal/core/sdk/models/crypto_sdk_model.py b/openbb_terminal/core/sdk/models/crypto_sdk_model.py index 8315dba2116e..06c835b04874 100644 --- a/openbb_terminal/core/sdk/models/crypto_sdk_model.py +++ b/openbb_terminal/core/sdk/models/crypto_sdk_model.py @@ -291,8 +291,8 @@ def __init__(self): self.stvl_chart = lib.crypto_defi_llama_view.display_defi_tvl self.validators = lib.crypto_defi_terramoney_fcd_model.get_validators self.validators_chart = lib.crypto_defi_terramoney_fcd_view.display_validators - self.vaults = lib.crypto_defi_coindix_model.get_defi_vaults - self.vaults_chart = lib.crypto_defi_coindix_view.display_defi_vaults + self.vaults = lib.crypto_defi_nanoly_model.get_defi_vaults + self.vaults_chart = lib.crypto_defi_nanoly_view.display_defi_vaults class CryptoDiscovery(Category): diff --git a/openbb_terminal/core/sdk/sdk_init.py b/openbb_terminal/core/sdk/sdk_init.py index 2396d8ceb3c8..ce5095741519 100644 --- a/openbb_terminal/core/sdk/sdk_init.py +++ b/openbb_terminal/core/sdk/sdk_init.py @@ -91,12 +91,12 @@ # Cryptocurrency Defi from openbb_terminal.cryptocurrency.defi import ( - coindix_model as crypto_defi_coindix_model, - coindix_view as crypto_defi_coindix_view, cryptosaurio_model as crypto_defi_cryptosaurio_model, cryptosaurio_view as crypto_defi_cryptosaurio_view, llama_model as crypto_defi_llama_model, llama_view as crypto_defi_llama_view, + nanoly_model as crypto_defi_nanoly_model, + nanoly_view as crypto_defi_nanoly_view, smartstake_model as crypto_defi_smartstake_model, smartstake_view as crypto_defi_smartstake_view, substack_model as crypto_defi_substack_model, diff --git a/openbb_terminal/core/sdk/trail_map.csv b/openbb_terminal/core/sdk/trail_map.csv index 02a7223d87c6..e77f1699e3fd 100644 --- a/openbb_terminal/core/sdk/trail_map.csv +++ b/openbb_terminal/core/sdk/trail_map.csv @@ -88,7 +88,7 @@ crypto.defi.sratio,crypto_defi_terramoney_fcd_model.get_staking_ratio_history,cr crypto.defi.sreturn,crypto_defi_terramoney_fcd_model.get_staking_returns_history,crypto_defi_terramoney_fcd_view.display_staking_returns_history crypto.defi.stvl,crypto_defi_llama_model.get_defi_tvl,crypto_defi_llama_view.display_defi_tvl crypto.defi.validators,crypto_defi_terramoney_fcd_model.get_validators,crypto_defi_terramoney_fcd_view.display_validators -crypto.defi.vaults,crypto_defi_coindix_model.get_defi_vaults,crypto_defi_coindix_view.display_defi_vaults +crypto.defi.vaults,crypto_defi_nanoly_model.get_defi_vaults,crypto_defi_nanoly_view.display_defi_vaults crypto.disc.categories_keys,crypto_disc_pycoingecko_model.get_categories_keys, crypto.disc.coin_list,crypto_disc_pycoingecko_model.get_coin_list, crypto.disc.coins,crypto_disc_pycoingecko_model.get_coins,crypto_disc_pycoingecko_view.display_coins From 6ccd76b2ee76d535c3ecfdc5100ca30f096cb306 Mon Sep 17 00:00:00 2001 From: David Tran Date: Tue, 5 Dec 2023 18:18:02 -0500 Subject: [PATCH 7/8] Deleted old coindix testing files --- .../test_get_defi_vaults.yaml | 40 ---------------- .../test_display_defi_vaults.yaml | 41 ---------------- .../cryptocurrency/defi/test_coindix_model.py | 41 ---------------- .../cryptocurrency/defi/test_coindix_view.py | 47 ------------------- 4 files changed, 169 deletions(-) delete mode 100644 tests/openbb_terminal/cryptocurrency/defi/cassettes/test_coindix_model/test_get_defi_vaults.yaml delete mode 100644 tests/openbb_terminal/cryptocurrency/defi/cassettes/test_coindix_view/test_display_defi_vaults.yaml delete mode 100644 tests/openbb_terminal/cryptocurrency/defi/test_coindix_model.py delete mode 100644 tests/openbb_terminal/cryptocurrency/defi/test_coindix_view.py diff --git a/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_coindix_model/test_get_defi_vaults.yaml b/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_coindix_model/test_get_defi_vaults.yaml deleted file mode 100644 index c6ec5b1787d8..000000000000 --- a/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_coindix_model/test_get_defi_vaults.yaml +++ /dev/null @@ -1,40 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.10; rv:83.0) Gecko/20100101 Firefox/83.0 - method: GET - uri: https://apiv2.coindix.com/search?sort=-apy&tvl=1m&kind=all - response: - body: - string: '{"hasPrevPage":false,"hasNextPage":true,"total":981,"totalPages":50,"data":[{"id":273200,"name":"MAGIC-WETH","chain":"Arbitrum","protocol":"Uniswap","base":23.7902436,"reward":0,"rewards":{},"apy":23.7902436,"tvl":1041078,"link":"https://api.nanoly.com/vaults/273200/redirect","is_new":false,"watched":false},{"id":272292,"name":"LCX-WETH","chain":"Ethereum","protocol":"Uniswap","base":3.3537874,"reward":0,"rewards":{},"apy":3.3537874,"tvl":1059213,"link":"https://api.nanoly.com/vaults/272292/redirect","is_new":false,"watched":false},{"id":272170,"name":"LDO-WETH","chain":"Ethereum","protocol":"Uniswap","base":3.2958058,"reward":0,"rewards":{},"apy":3.2958058,"tvl":4170799,"link":"https://api.nanoly.com/vaults/272170/redirect","is_new":false,"watched":false},{"id":272470,"name":"DYDX-WETH","chain":"Ethereum","protocol":"Uniswap","base":2.4461352,"reward":0,"rewards":{},"apy":2.4461352,"tvl":1486170,"link":"https://api.nanoly.com/vaults/272470/redirect","is_new":false,"watched":false},{"id":272216,"name":"FTM-WETH","chain":"Ethereum","protocol":"Uniswap","base":2.4265455,"reward":0,"rewards":{},"apy":2.4265455,"tvl":1710725,"link":"https://api.nanoly.com/vaults/272216/redirect","is_new":false,"watched":false},{"id":272424,"name":"OP-USDC","chain":"Optimism","protocol":"Uniswap","base":2.4134576,"reward":0,"rewards":{},"apy":2.4134576,"tvl":2478859,"link":"https://api.nanoly.com/vaults/272424/redirect","is_new":false,"watched":false},{"id":272140,"name":"APE-WETH","chain":"Ethereum","protocol":"Uniswap","base":2.3316127,"reward":0,"rewards":{},"apy":2.3316127,"tvl":8071844,"link":"https://api.nanoly.com/vaults/272140/redirect","is_new":false,"watched":false},{"id":273083,"name":"WMATIC-CRV","chain":"Polygon","protocol":"Uniswap","base":2.3040111,"reward":0,"rewards":{},"apy":2.3040111,"tvl":1229701,"link":"https://api.nanoly.com/vaults/273083/redirect","is_new":false,"watched":false},{"id":272850,"name":"USDC-CRV","chain":"Ethereum","protocol":"Uniswap","base":2.30376,"reward":0,"rewards":{},"apy":2.30376,"tvl":1106306,"link":"https://api.nanoly.com/vaults/272850/redirect","is_new":false,"watched":false},{"id":32055,"name":"AVAX-USDC","chain":"Avalanche","protocol":"Trader - Joe","base":2.1417,"reward":0,"rewards":{},"apy":2.1417,"tvl":6652279,"link":"https://api.nanoly.com/vaults/32055/redirect","is_new":false,"watched":false},{"id":272340,"name":"FXS-WETH","chain":"Ethereum","protocol":"Uniswap","base":2.0582594,"reward":0,"rewards":{},"apy":2.0582594,"tvl":3994551,"link":"https://api.nanoly.com/vaults/272340/redirect","is_new":false,"watched":false},{"id":272183,"name":"WETH-OP","chain":"Optimism","protocol":"Uniswap","base":1.7595914,"reward":0,"rewards":{},"apy":1.7595914,"tvl":10287442,"link":"https://api.nanoly.com/vaults/272183/redirect","is_new":false,"watched":false},{"id":273797,"name":"WETH-CRV","chain":"Ethereum","protocol":"Uniswap","base":1.6795949,"reward":0,"rewards":{},"apy":1.6795949,"tvl":2316095,"link":"https://api.nanoly.com/vaults/273797/redirect","is_new":false,"watched":false},{"id":29232,"name":"MAGIC-ETH","chain":"Arbitrum","protocol":"Beefy","base":0.48329553,"reward":0,"rewards":{},"apy":1.60662408,"tvl":2821521,"link":"https://api.nanoly.com/vaults/29232/redirect","is_new":false,"watched":false},{"id":272838,"name":"WETH-USDT","chain":"Arbitrum","protocol":"Uniswap","base":1.5718619,"reward":0,"rewards":{},"apy":1.5718619,"tvl":1126252,"link":"https://api.nanoly.com/vaults/272838/redirect","is_new":false,"watched":false},{"id":273081,"name":"WMATIC-USDT","chain":"Polygon","protocol":"Uniswap","base":1.5272906,"reward":0,"rewards":{},"apy":1.5272906,"tvl":1791001,"link":"https://api.nanoly.com/vaults/273081/redirect","is_new":false,"watched":false},{"id":13265,"name":"MAGIC-WETH","chain":"Arbitrum","protocol":"Sushi","base":1.51100925,"reward":0,"rewards":{},"apy":1.51100925,"tvl":18056222,"link":"https://api.nanoly.com/vaults/13265/redirect","is_new":false,"watched":false},{"id":272192,"name":"WMATIC-USDC","chain":"Polygon","protocol":"Uniswap","base":1.3378611,"reward":0,"rewards":{},"apy":1.3378611,"tvl":6845295,"link":"https://api.nanoly.com/vaults/272192/redirect","is_new":false,"watched":false},{"id":272232,"name":"LDO-WETH","chain":"Ethereum","protocol":"Uniswap","base":1.3300697,"reward":0,"rewards":{},"apy":1.3300697,"tvl":9763869,"link":"https://api.nanoly.com/vaults/272232/redirect","is_new":false,"watched":false},{"id":184751,"name":"BTC.b-AVAX","chain":"Avalanche","protocol":"Trader - Joe","base":1.28,"reward":0,"rewards":{},"apy":1.28,"tvl":2447906,"link":"https://api.nanoly.com/vaults/184751/redirect","is_new":false,"watched":false}]}' - headers: - Access-Control-Allow-Origin: - - '*' - Connection: - - keep-alive - Content-Length: - - '4656' - Content-Type: - - application/json; charset=utf-8 - Date: - - Thu, 26 Jan 2023 19:07:41 GMT - ETag: - - W/"1230-Zg8G/jUGRtIxDf0M548Nuh+ZBuA" - Server: - - nginx/1.18.0 (Ubuntu) - X-Powered-By: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_coindix_view/test_display_defi_vaults.yaml b/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_coindix_view/test_display_defi_vaults.yaml deleted file mode 100644 index 4bfde1445018..000000000000 --- a/tests/openbb_terminal/cryptocurrency/defi/cassettes/test_coindix_view/test_display_defi_vaults.yaml +++ /dev/null @@ -1,41 +0,0 @@ -interactions: -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:86.0) Gecko/20100101 Firefox/86.0 - method: GET - uri: https://apiv2.coindix.com/search?sort=-apy&tvl=1m&kind=all - response: - body: - string: '{"hasPrevPage":false,"hasNextPage":true,"total":1331,"totalPages":50,"data":[{"id":120568,"name":"WETH-10k","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1698882,"link":"https://api.coindix.com/vault/120568/redirect","is_new":false,"watched":false},{"id":113873,"name":"Azuki-WETH","icon":"https://api.coindix.com/icons/Azuki-WETH.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1180607,"link":"https://api.coindix.com/vault/113873/redirect","is_new":false,"watched":false},{"id":111282,"name":"WETH-RYOSHI","icon":"https://api.coindix.com/icons/WETH-RYOSHI.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1569332,"link":"https://api.coindix.com/vault/111282/redirect","is_new":false,"watched":false},{"id":110372,"name":"Hasbro-WETH","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1025188,"link":"https://api.coindix.com/vault/110372/redirect","is_new":false,"watched":false},{"id":118073,"name":"WETH-GENIE","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1770296,"link":"https://api.coindix.com/vault/118073/redirect","is_new":false,"watched":false},{"id":165735,"name":"WETH-PRAG","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1359190,"link":"https://api.coindix.com/vault/165735/redirect","is_new":false,"watched":false},{"id":113531,"name":"APELAND-WETH","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1216107,"link":"https://api.coindix.com/vault/113531/redirect","is_new":false,"watched":false},{"id":108126,"name":"Line-WETH","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":2065257,"link":"https://api.coindix.com/vault/108126/redirect","is_new":false,"watched":false},{"id":167534,"name":"USDC-CRV","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1721977,"link":"https://api.coindix.com/vault/167534/redirect","is_new":false,"watched":false},{"id":121969,"name":"USDD-USDT - (0.01%)","icon":"https://api.coindix.com/icons/USDD-USDT.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":3925917,"link":"https://api.coindix.com/vault/121969/redirect","is_new":false,"watched":false},{"id":97162,"name":"WETH-DOODLE","icon":"https://api.coindix.com/icons/WETH-DOODLE.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":2886965,"link":"https://api.coindix.com/vault/97162/redirect","is_new":false,"watched":false},{"id":112952,"name":"HOOT-WETH","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1474099,"link":"https://api.coindix.com/vault/112952/redirect","is_new":false,"watched":false},{"id":95445,"name":"Firefox-WETH","icon":"https://api.coindix.com/icons/Firefox-WETH.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1963426,"link":"https://api.coindix.com/vault/95445/redirect","is_new":false,"watched":false},{"id":178382,"name":"WBTC-BBTC - (0.05%)","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":4200389,"link":"https://api.coindix.com/vault/178382/redirect","is_new":true,"watched":false},{"id":104732,"name":"WETH-Richemont","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1630815,"link":"https://api.coindix.com/vault/104732/redirect","is_new":false,"watched":false},{"id":119426,"name":"WETH-OP","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":null,"reward":0,"rewards":{},"apy":null,"tvl":1664803,"link":"https://api.coindix.com/vault/119426/redirect","is_new":false,"watched":false},{"id":50508,"name":"GRAPE-MIM","icon":"https://api.coindix.com/icons/GRAPE-MIM.png","chain":"Avalanche","protocol":"Beefy","base":7.47626288,"reward":0,"rewards":{},"apy":7.47626288,"tvl":1056770,"link":"https://api.coindix.com/vault/50508/redirect","is_new":false,"watched":false},{"id":150035,"name":"WBTC-cxBTC","icon":"https://api.coindix.com/default_icon.png","chain":"Polygon","protocol":"Beefy","base":3.85182283,"reward":0,"rewards":{},"apy":3.85182283,"tvl":1542565,"link":"https://api.coindix.com/vault/150035/redirect","is_new":false,"watched":false},{"id":72936,"name":"ETH-cxETH","icon":"https://api.coindix.com/icons/ETH-cxETH.png","chain":"Polygon","protocol":"Beefy","base":3.76929371,"reward":0,"rewards":{},"apy":3.76929371,"tvl":1547500,"link":"https://api.coindix.com/vault/72936/redirect","is_new":false,"watched":false},{"id":162981,"name":"SHIT-WETH - (1%)","icon":"https://api.coindix.com/default_icon.png","chain":"Ethereum","protocol":"Uniswap","base":3.65199141,"reward":0,"rewards":{},"apy":3.65199141,"tvl":2179266,"link":"https://api.coindix.com/vault/162981/redirect","is_new":false,"watched":false}]}' - headers: - Access-Control-Allow-Origin: - - '*' - Connection: - - keep-alive - Content-Length: - - '5576' - Content-Type: - - application/json; charset=utf-8 - Date: - - Fri, 17 Jun 2022 11:05:35 GMT - ETag: - - W/"15c8-U7oBaaf65q92UwgeoTPkw3i+bn0" - Server: - - nginx/1.18.0 (Ubuntu) - X-Powered-By: - - Express - status: - code: 200 - message: OK -version: 1 diff --git a/tests/openbb_terminal/cryptocurrency/defi/test_coindix_model.py b/tests/openbb_terminal/cryptocurrency/defi/test_coindix_model.py deleted file mode 100644 index 97ad79283999..000000000000 --- a/tests/openbb_terminal/cryptocurrency/defi/test_coindix_model.py +++ /dev/null @@ -1,41 +0,0 @@ -# IMPORTATION STANDARD - -# IMPORTATION THIRDPARTY -import pandas as pd -import pytest - -# IMPORTATION INTERNAL -from openbb_terminal.cryptocurrency.defi import coindix_model - - -@pytest.mark.vcr -def test_get_defi_vaults(recorder): - df = coindix_model.get_defi_vaults( - chain=None, - protocol=None, - kind=None, - ) - recorder.capture(df) - - -@pytest.mark.vcr(record_mode="none") -def test_get_defi_vaults_no_data(mocker): - # MOCK GET - attrs = { - "status_code": 200, - "json.return_value": {"data": []}, - } - mock_response = mocker.Mock(**attrs) - mocker.patch( - target="openbb_terminal.helper_funcs.requests.get", - new=mocker.Mock(return_value=mock_response), - ) - - df = coindix_model.get_defi_vaults( - chain=None, - protocol=None, - kind=None, - ) - - assert isinstance(df, pd.DataFrame) - assert df.empty diff --git a/tests/openbb_terminal/cryptocurrency/defi/test_coindix_view.py b/tests/openbb_terminal/cryptocurrency/defi/test_coindix_view.py deleted file mode 100644 index 570d7dd44e4d..000000000000 --- a/tests/openbb_terminal/cryptocurrency/defi/test_coindix_view.py +++ /dev/null @@ -1,47 +0,0 @@ -# IMPORTATION STANDARD - -# IMPORTATION THIRDPARTY -import pandas as pd -import pytest - -# IMPORTATION INTERNAL -from openbb_terminal.cryptocurrency.defi import coindix_view - - -@pytest.mark.vcr -@pytest.mark.record_stdout -def test_display_defi_vaults(mocker): - # MOCK EXPORT_DATA - mocker.patch(target="openbb_terminal.cryptocurrency.defi.coindix_view.export_data") - - coindix_view.display_defi_vaults( - chain=None, - protocol=None, - kind=None, - limit=None, - sortby="apy", - ascend=False, - link=True, - export="", - ) - - -@pytest.mark.vcr(record_mode="none") -@pytest.mark.record_stdout -def test_display_defi_vaults_empty_df(mocker): - # MOCK GET_DEFI_VAULTS - mocker.patch( - target="openbb_terminal.cryptocurrency.defi.coindix_view.coindix_model.get_defi_vaults", - return_value=pd.DataFrame(), - ) - - coindix_view.display_defi_vaults( - chain=None, - protocol=None, - kind=None, - limit=None, - sortby="apy", - ascend=False, - link=True, - export="", - ) From 8b925e2a29044ab3f4837ee434b2268b8e563656 Mon Sep 17 00:00:00 2001 From: David Tran Date: Wed, 6 Dec 2023 15:14:59 -0500 Subject: [PATCH 8/8] Fixed openbb_terminal.cryptocurrency.defi imports such that they're in alphabetical order --- openbb_terminal/cryptocurrency/defi/defi_controller.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openbb_terminal/cryptocurrency/defi/defi_controller.py b/openbb_terminal/cryptocurrency/defi/defi_controller.py index cabd1f376006..e7054ae9f960 100644 --- a/openbb_terminal/cryptocurrency/defi/defi_controller.py +++ b/openbb_terminal/cryptocurrency/defi/defi_controller.py @@ -9,11 +9,11 @@ from openbb_terminal.core.session.current_user import get_current_user from openbb_terminal.cryptocurrency.defi import ( - nanoly_model, - nanoly_view, cryptosaurio_view, llama_model, llama_view, + nanoly_model, + nanoly_view, smartstake_view, substack_view, terramoney_fcd_model,