|
| 1 | +import pytest |
| 2 | +from bcb import currency |
| 3 | + |
| 4 | + |
| 5 | +# --------------------------------------------------------------------------- |
| 6 | +# Mock data constants |
| 7 | +# --------------------------------------------------------------------------- |
| 8 | + |
| 9 | +CURRENCY_ID_LIST_HTML = b""" |
| 10 | +<html><body><form> |
| 11 | + <select name="ChkMoeda"> |
| 12 | + <option value="61">DOLLAR DOS EUA</option> |
| 13 | + </select> |
| 14 | +</form></body></html> |
| 15 | +""" |
| 16 | + |
| 17 | +# First row is treated as header by pd.read_csv, then overwritten by df.columns = [...] |
| 18 | +CURRENCY_LIST_CSV = ( |
| 19 | + "Codigo;Nome;Simbolo;CodPais;NomePais;Tipo;DataExclusao\n" |
| 20 | + "61;DOLLAR DOS EUA;USD;249;EUA;A;\n" |
| 21 | +) |
| 22 | + |
| 23 | +# 8 columns, no header, date format DDMMYYYY, comma as decimal separator |
| 24 | +CURRENCY_RATE_CSV = ( |
| 25 | + "01122020;0;0;0;5,0000;5,1000;0;0\n" |
| 26 | + "02122020;0;0;0;5,0100;5,1100;0;0\n" |
| 27 | + "03122020;0;0;0;5,0200;5,1200;0;0\n" |
| 28 | + "04122020;0;0;0;5,0300;5,1300;0;0\n" |
| 29 | + "07122020;0;0;0;5,0400;5,1400;0;0\n" |
| 30 | +) |
| 31 | + |
| 32 | +SGS_JSON_5 = ( |
| 33 | + '[{"data":"18/01/2021","valor":"5.1234"},' |
| 34 | + '{"data":"19/01/2021","valor":"5.2345"},' |
| 35 | + '{"data":"20/01/2021","valor":"5.3456"},' |
| 36 | + '{"data":"21/01/2021","valor":"5.4567"},' |
| 37 | + '{"data":"22/01/2021","valor":"5.5678"}]' |
| 38 | +) |
| 39 | + |
| 40 | +ODATA_METADATA_XML = b"""<?xml version="1.0" encoding="utf-8"?> |
| 41 | +<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx"> |
| 42 | + <edmx:DataServices> |
| 43 | + <Schema Namespace="IFBCB_DadosSeries_v2" xmlns="http://docs.oasis-open.org/odata/ns/edm"> |
| 44 | + <EntityType Name="Expectativa"> |
| 45 | + <Property Name="Indicador" Type="Edm.String"/> |
| 46 | + <Property Name="Data" Type="Edm.Date"/> |
| 47 | + <Property Name="Mediana" Type="Edm.Decimal"/> |
| 48 | + </EntityType> |
| 49 | + <EntityContainer Name="IFBCB_DadosSeries_v2"> |
| 50 | + <EntitySet Name="ExpectativasMercadoAnuais" |
| 51 | + EntityType="IFBCB_DadosSeries_v2.Expectativa"/> |
| 52 | + </EntityContainer> |
| 53 | + </Schema> |
| 54 | + </edmx:DataServices> |
| 55 | +</edmx:Edmx>""" |
| 56 | + |
| 57 | +ODATA_SERVICE_ROOT_JSON = """{ |
| 58 | + "@odata.context": "https://olinda.bcb.gov.br/olinda/servico/Expectativas/versao/v1/odata/$metadata", |
| 59 | + "value": [ |
| 60 | + {"name": "ExpectativasMercadoAnuais", "kind": "EntitySet", "url": "ExpectativasMercadoAnuais"} |
| 61 | + ] |
| 62 | +}""" |
| 63 | + |
| 64 | +ODATA_QUERY_RESPONSE_JSON = """{ |
| 65 | + "value": [ |
| 66 | + {"Indicador": "IPCA", "Data": "2021-01-04", "Mediana": 4.5} |
| 67 | + ] |
| 68 | +}""" |
| 69 | + |
| 70 | + |
| 71 | +# --------------------------------------------------------------------------- |
| 72 | +# Fixtures |
| 73 | +# --------------------------------------------------------------------------- |
| 74 | + |
| 75 | +@pytest.fixture(autouse=True) |
| 76 | +def clear_currency_cache(): |
| 77 | + """Clear module-level currency cache before and after each test.""" |
| 78 | + currency.CACHE.clear() |
| 79 | + yield |
| 80 | + currency.CACHE.clear() |
0 commit comments