예제 #1
0
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
예제 #2
0
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}}
예제 #3
0
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
예제 #4
0
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'
예제 #5
0
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]
예제 #6
0
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"
예제 #7
0
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())
예제 #8
0
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"
예제 #9
0
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
예제 #10
0
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
예제 #11
0
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'
        }]
예제 #12
0
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
        }]]
예제 #13
0
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
예제 #14
0
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'
예제 #15
0
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'