def test_gemeinsam_import_adde_passende_kategorie_should_import_value(): set_up() einzelbuchungen = database_instance().einzelbuchungen einzelbuchungen.add(datum('01.01.2017'), 'Essen', 'some name', -1.54) requester.INSTANCE = RequesterStub( { 'https://test.test/gemeinsamebuchung.php': _JSON_IMPORT_DATA_GEMEINSAM, 'https://test.test/deletegemeinsam.php': '', 'https://test.test/login.php': LOGIN_RESPONSE }, DECODED_LOGIN_DATA, auth_cookies=LOGIN_COOKIES) context = import_data.index( PostRequest({ 'action': 'load_online_gemeinsame_transactions', 'email': '', 'server': 'test.test', 'password': '' })) assert context['element_titel'] == 'Export / Import' assert len(database_instance().gemeinsamebuchungen.content) == 2 assert database_instance().gemeinsamebuchungen.get( 0)['Name'] == 'Testausgabe1' assert database_instance().gemeinsamebuchungen.get( 0)['Person'] == 'TestUser' assert database_instance().gemeinsamebuchungen.get( 1)['Name'] == 'Testausgabe2' assert requester.instance().call_count_of( 'https://test.test/deletegemeinsam.php') == 1 assert requester.instance().complete_call_count() == 3
def test_parse_json(): requester.INSTANCE = RequesterStub( { 'https://api.etf-data.com/product/DE000A14ND46': DEMO_DATA } ) result = get_data_for('DE000A14ND46') assert result == {'IndexName': 'WisdomTree Europe Small Cap Dividend Index', 'Kosten': 0.38, 'Name': 'WisdomTree Europe SmallCap Dividend UCITS ETF', 'Regionen': {'GBR': 29.52, 'NOR': 12.55}, 'Sektoren': {'Basiskonsumgüter': 5.87, 'Energie': 7.43, 'Finanzen': 16.35, 'Gesundheitswesen': 6.99, 'Immobilien': 6.19, 'Industriegüter': 20.61, 'Informationstechnologie': 6.75, 'Kommunikationsdienste': 3.70, 'Konsumgüter': 11.40, 'Roh- und Grundstoffe': 8.11, 'Sonstiges': 0.05, 'Versorgungsunternehmen': 6.55}}
def test_delete_einzelbuchhungen(): requester.INSTANCE = RequesterStub( {'https://test.test/deleteitems.php': 'ok'}) delete_einzelbuchungen('https://test.test', auth_container=OnlineAuth(None, None, None)) assert requester.INSTANCE.call_count_of( 'https://test.test/deleteitems.php') == 1
def test_login(): requester.INSTANCE = RequesterStub( {'https://test.test/api/login.php': login_response}, decoded_login_data) auth_container = login('https://test.test/api', '', '') assert auth_container.cookies() == 'login cookies' assert auth_container.online_name() == 'online user name'
def test_upload_gemeinsame_buchungen(): api_url = 'https://test.test/api/gemeinsamebuchung.php' data = ['Gemeinsame Buchungen'] requester.INSTANCE = RequesterStub({api_url: _RESULT_OK}, auth_cookies='auth_cookies') result = upload_gemeinsame_buchungen('https://test.test/api', data, OnlineAuth('', '', 'auth_cookies')) assert result assert requester.INSTANCE.data_of_request(api_url) == [data]
def test_import_einzelbuchungen(): requester.INSTANCE = RequesterStub( {'https://test.test/einzelbuchung.php': _JSON_IMPORT_DATA}) result = get_einzelbuchungen('https://test.test', auth_container=OnlineAuth(None, None, None)) assert result[0]["id"] == "122" assert result[0]["name"] == "Testausgabe1" assert result[1]["id"] == "123" assert result[1]["name"] == "Testausgabe2"
def test_refresh_data(): requester.INSTANCE = RequesterStub( {'https://api.etf-data.com/product/DE000A14ND46': DEMO_DATA}) result = index(PostRequestAction('update_data', {'isin': 'DE000A14ND46'})) assert result['message'] assert result['message_type'] == 'success' assert result['message_content'] == language.SHARES_DATA_UPDATED.format( isin='DE000A14ND46') assert persisted_state.shares_data().get_last_changed_date_for( 'DE000A14ND46') == datum_to_german(today())
def test_get_gemeinsame_buchungen(): requester.INSTANCE = RequesterStub({'https://test.test/api/gemeinsamebuchung.php': _JSON_IMPORT_DATA}) result = get_gemeinsame_buchungen('https://test.test/api', OnlineAuth(None, None, None)) assert result[0]["id"] == "122" assert result[0]["name"] == "Testausgabe1" assert result[0]["user"] == "Sebastian" assert result[0]["zielperson"] == "Sebastian" assert result[1]["id"] == "123" assert result[1]["name"] == "Testausgabe2" assert result[1]["user"] == "other" assert result[1]["zielperson"] == "other"
def test_gemeinsam_import_with_unpassenden_kategorie_should_import_value_and_requestmapping( ): set_up() einzelbuchungen = database_instance().einzelbuchungen einzelbuchungen.add(datum('01.01.2017'), 'KeinEssen', 'some name', -1.54) requester.INSTANCE = RequesterStub( { 'https://test.test/gemeinsamebuchung.php': _JSON_IMPORT_DATA_GEMEINSAM, 'https://test.test/deletegemeinsam.php': '', 'https://test.test/login.php': LOGIN_RESPONSE }, DECODED_LOGIN_DATA, auth_cookies=LOGIN_COOKIES) context = import_data.index( PostRequest({ 'action': 'load_online_gemeinsame_transactions', 'email': '', 'server': 'test.test', 'password': '' })) assert context['element_titel'] == 'Kategorien zuweisen' assert context['import'] == _IMPORT_DATA_GEMEINSAM assert context['unpassende_kategorien'] == ['Essen'] context = import_data.index( PostRequest({ 'action': 'map_and_push', 'Essen_mapping': 'neue Kategorie anlegen', 'import': _IMPORT_DATA_GEMEINSAM })) assert context['element_titel'] == 'Export / Import' assert len(database_instance().gemeinsamebuchungen.content) == 2 assert database_instance( ).gemeinsamebuchungen.content.Person[0] == 'TestUser' assert database_instance( ).gemeinsamebuchungen.content.Person[1] == 'Partner' assert database_instance( ).gemeinsamebuchungen.content.Kategorie[0] == 'Essen' assert database_instance( ).gemeinsamebuchungen.content.Kategorie[1] == 'Essen' assert requester.instance().call_count_of( 'https://test.test/deletegemeinsam.php') == 1 assert requester.instance().complete_call_count() == 3
def test_gemeinsam_import_with_unpassenden_partnername_should_import_value_and_repalce_name( ): set_up() einzelbuchungen = database_instance().einzelbuchungen einzelbuchungen.add(datum('01.01.2017'), 'Essen', 'some name', -1.54) requester.INSTANCE = RequesterStub( { 'https://test.test/gemeinsamebuchung.php': _JSON_IMPORT_DATA_GEMEINSAM_WRONG_PARTNER, 'https://test.test/deletegemeinsam.php': '', 'https://test.test/login.php': LOGIN_RESPONSE }, DECODED_LOGIN_DATA, auth_cookies=LOGIN_COOKIES) context = import_data.index( PostRequest({ 'action': 'load_online_gemeinsame_transactions', 'email': '', 'server': 'test.test', 'password': '' })) assert context['element_titel'] == 'Export / Import' assert len(database_instance().gemeinsamebuchungen.content) == 2 assert database_instance().gemeinsamebuchungen.get(0) == { 'Datum': datetime.date(2019, 7, 11), 'Dynamisch': False, 'Kategorie': 'Essen', 'Name': 'Testausgabe2', 'Person': 'TestUser', 'Wert': -0.9, 'index': 0 } assert database_instance().gemeinsamebuchungen.get(1) == { 'Datum': datetime.date(2019, 7, 15), 'Dynamisch': False, 'Kategorie': 'Essen', 'Name': 'Testausgabe1', 'Person': 'Partner', 'Wert': -1.3, 'index': 1 } assert requester.instance().call_count_of( 'https://test.test/deletegemeinsam.php') == 1 assert requester.instance().complete_call_count() == 3
def test_set_kategorien(): requester.INSTANCE = RequesterStub( {'https://test.test/setkategorien.php': 'ok'}) set_kategorien('https://test.test', 'kategorie1,kategorie2', auth_container=OnlineAuth(None, None, None)) assert requester.INSTANCE.call_count_of( 'https://test.test/setkategorien.php') == 1 assert requester.INSTANCE.data_of_request( 'https://test.test/setkategorien.php') == [{ 'kategorien': 'kategorie1,kategorie2' }]
def test_upload_data_fehler(): set_up() database_instance().gemeinsamebuchungen.add(datum('1.1.2020'), 'kategorie1', 'name1', 1.11, 'TestUser') database_instance().gemeinsamebuchungen.add(datum('2.2.2020'), 'kategorie2', 'name2', 2.22, 'Partner') requester.INSTANCE = RequesterStub( { 'https://test.test/api/gemeinsamebuchung.php': '{"result": "error"}', 'https://test.test/api/partner.php': _JSON_DATA_PARTNER, 'https://test.test/api/login.php': LOGIN_RESPONSE }, DECODED_LOGIN_DATA, auth_cookies=LOGIN_COOKIES) result = import_data.index( PostRequest({ 'action': 'upload_gemeinsame_transactions', 'email': '', 'server': 'test.test/api', 'password': '' })) assert len(database_instance().gemeinsamebuchungen.content) == 2 assert result['message'] assert result['message_type'] == 'error' assert result[ 'message_content'] == 'Fehler beim Hochladen der gemeinsamen Buchungen.' assert requester.INSTANCE.data_of_request( 'https://test.test/api/gemeinsamebuchung.php') == [[{ 'datum': '2020-01-01', 'kategorie': 'kategorie1', 'name': 'name1', 'zielperson': 'online user name', 'wert': 1.11 }, { 'datum': '2020-02-02', 'kategorie': 'kategorie2', 'name': 'name2', 'zielperson': 'OnlinePartner', 'wert': 2.22 }]]
def test_einzelbuchung_import_adde_passende_kategorie_should_import_value(): set_up() einzelbuchungen = database_instance().einzelbuchungen einzelbuchungen.add(datum('01.01.2017'), 'Essen', 'some name', -1.54) requester.INSTANCE = RequesterStub( { 'https://test.test/einzelbuchung.php': _JSON_IMPORT_DATA, 'https://test.test/deleteitems.php': '', 'https://test.test/login.php': LOGIN_RESPONSE }, mocked_decode=DECODED_LOGIN_DATA) context = import_data.index( PostRequest({ 'action': 'load_online_transactions', 'email': '', 'server': 'test.test', 'password': '' })) assert context['element_titel'] == 'Export / Import' assert len(database_instance().einzelbuchungen.content) == 3 assert database_instance().einzelbuchungen.get(1) == { 'Datum': datum('11.07.2019'), 'Dynamisch': False, 'Kategorie': 'Essen', 'Name': 'Testausgabe2', 'Tags': np.nan, 'Wert': -0.9, 'index': 1 } assert database_instance().einzelbuchungen.get(2) == { 'Datum': datum('15.07.2019'), 'Dynamisch': False, 'Kategorie': 'Essen', 'Name': 'Testausgabe1', 'Tags': np.nan, 'Wert': -1.3, 'index': 2 } assert requester.instance().call_count_of( 'https://test.test/deleteitems.php') == 1 assert requester.instance().complete_call_count() == 3
def test_set_kategorien_with_ausgeschlossene_kategoerien_should_hide_ausgeschlossene_kategorien( ): set_up() database_instance().einzelbuchungen.add(datum('20.01.1990'), 'JaEins', 'SomeTitle', -10) database_instance().einzelbuchungen.add(datum('20.01.1990'), 'NeinEins', 'SomeTitle', -10) database_instance().einzelbuchungen.add(datum('20.01.1990'), 'JaZwei', 'SomeTitle', -10) configuration.index( PostRequest({ 'action': 'set_ausgeschlossene_kategorien', 'ausgeschlossene_kategorien': 'NeinEins' })) requester.INSTANCE = RequesterStub( { 'https://test.test/setkategorien.php': '', 'https://test.test/login.php': LOGIN_RESPONSE }, DECODED_LOGIN_DATA, auth_cookies=LOGIN_COOKIES) result = import_data.index( PostRequest({ 'action': 'set_kategorien', 'email': '', 'server': 'test.test', 'password': '' })) assert result['message'] assert result['message_type'] == 'success' assert result[ 'message_content'] == 'Kategorien erfolgreich in die Online-Version übertragen.' assert requester.instance().data_of_request( 'https://test.test/setkategorien.php' )[0]['kategorien'] == 'JaEins,JaZwei'
def test_get_partnername(): requester.INSTANCE = RequesterStub( {'https://test.test/api/partner.php': partnername_response}) assert get_partnername('https://test.test/api', OnlineAuth(None, None, None)) == 'Partner1'