예제 #1
0
def test_load_data_filled():
    file_system.INSTANCE = FileSystemStub()
    file_system.instance().write(SHARES_PATH, '{"demo": 1234}')

    result = load_data()

    assert result.content == {'demo': 1234}
예제 #2
0
def write(database):

    content = database.einzelbuchungen.get_static_content().to_csv(index=False)

    content += wrap_tableheader(KEYWORD_DAUERAUFRTAEGE)
    content += database.dauerauftraege.content.to_csv(index=False)

    content += wrap_tableheader(KEYWORD_GEMEINSAME_BUCHUNGEN)
    content += database.gemeinsamebuchungen.content.to_csv(index=False)

    content += wrap_tableheader(KEYWORD_SPARBUCHUNGEN)
    content += database.sparbuchungen.get_static_content().to_csv(index=False)

    content += wrap_tableheader(KEYWORD_SPARKONTOS)
    content += database.sparkontos.get_static_content().to_csv(index=False)

    content += wrap_tableheader(KEYWORD_DEPOTWERTE)
    content += database.depotwerte.get_static_content().to_csv(index=False)

    content += wrap_tableheader(KEYWORD_ORDER)
    content += database.order.get_static_content().to_csv(index=False)

    content += wrap_tableheader(KEYWORD_ORDERDAUERAUFTRAG)
    content += database.orderdauerauftrag.get_static_content().to_csv(
        index=False)

    content += wrap_tableheader(KEYWORD_DEPOTAUSZUEGE)
    content += database.depotauszuege.get_static_content().to_csv(index=False)

    file_system.instance().write(database_path_from(database.name), content)
    print("WRITER: All Saved")
    def teste_write_with_old_database_should_migrate(self):
        self.mock_filesystem()
        self.write_db_file_stub('testuser', self.full_db_old)

        database = database_manager.read('testuser', set())
        database_manager.write(database)

        assert file_system.instance().read(
            '../Database_testuser.csv') == file_system.instance(
            ).stub_pad_content(self.full_db)
    def set_up(self):
        file_system.INSTANCE = FileSystemStub()
        file_system.instance().write(
            file_system.ABRECHNUNG_PATH + '*Abrechnung_A',
            self.ABRECHNUNG_A_CONTENT)
        file_system.instance().write(file_system.IMPORT_PATH + '*Import_A',
                                     self.IMPORT_A_CONTENT)

        persisted_state.DATABASE_INSTANCE = None
        request_handler.stub_me()
예제 #5
0
def read(nutzername, ausgeschlossene_kategorien):
    if not file_system.instance().read(database_path_from(nutzername)):
        neue_datenbank = Database(nutzername)
        write(neue_datenbank)

    file_content = file_system.instance().read(database_path_from(nutzername))

    parser = DatabaseParser()
    parser.from_string(file_content)

    database = Database(nutzername,
                        ausgeschlossene_kategorien=ausgeschlossene_kategorien)

    database.einzelbuchungen.parse(_to_table(parser.einzelbuchungen()))
    print('READER: Einzelbuchungen gelesen')

    database.dauerauftraege.parse(_to_table(parser.dauerauftraege()))
    print('READER: Daueraufträge gelesen')

    database.gemeinsamebuchungen.parse(_to_table(
        parser.gemeinsame_buchungen()))
    print('READER: Gemeinsame Buchungen gelesen')

    if parser.sparkontos():
        database.sparkontos.parse(_to_table(parser.sparkontos()))
        print('READER: Sparkontos gelesen')

    if parser.sparbuchungen():
        database.sparbuchungen.parse(_to_table(parser.sparbuchungen()))
        print('READER: Sparbuchungen gelesen')

    if parser.depotwerte():
        database.depotwerte.parse(_to_table(parser.depotwerte()))
        print('READER: Depotwerte gelesen')

    if parser.order():
        database.order.parse(_to_table(parser.order()))
        print('READER: Depotwerte gelesen')

    if parser.depotauszuege():
        database.depotauszuege.parse(_to_table(parser.depotauszuege()))
        print('READER: Depotauszuege gelesen')

    if parser.order_dauerauftrag():
        database.orderdauerauftrag.parse(_to_table(
            parser.order_dauerauftrag()))
        print('READER: Order Dauerauftrag gelesen')

    print('READER: Refreshe Database')
    database.refresh()
    print('READER: Refresh done')
    return database
예제 #6
0
def test_import_should_write_into_abrechnungen():
    set_up()
    einzelbuchungen = database_instance().einzelbuchungen
    einzelbuchungen.add(datum('01.01.2017'), 'Essen', 'some name', -1.54)

    import_data.index(PostRequest({'import': _IMPORT_DATA}))

    written_abrechnung = None
    for key in file_system.instance()._fs_stub.keys():
        if key.startswith('../Import'):
            written_abrechnung = file_system.instance()._fs_stub[key]

    assert written_abrechnung == _IMPORT_DATA
예제 #7
0
    def test_alle_abrechnungen(self):
        file_system.INSTANCE = FileSystemStub()
        file_system.instance().write(file_system.ABRECHNUNG_PATH+'*Abrechnung_A', 'content abrechnung a')
        file_system.instance().write(file_system.IMPORT_PATH+'*Import_A', 'content import a')

        abrechnungen = file_system.all_abrechnungen()

        assert abrechnungen == [
                                 {
                                     'content': ['content abrechnung a'],
                                     'name': '../Abrechnungen/*Abrechnung_A'
                                 },
                                 {
                                     'content': ['content import a'],
                                     'name': '../Import/*Import_A'
                                 }
                              ]
def _load_config():
    lines = file_system.instance().read(get_config_path() + '/config')
    if not lines:
        return dict(configuration_provider.DEFAULT_CONFIG)
    loaded_config = {}
    for line in lines:
        if ':' in line:
            line = line.strip()
            loaded_config[line.split(':', 1)[0]] = line.split(':', 1)[1]
    for key in dict(configuration_provider.DEFAULT_CONFIG):
        if key not in loaded_config:
            loaded_config[key] = configuration_provider.DEFAULT_CONFIG[key]
    print("#####", loaded_config)
    return loaded_config
예제 #9
0
    def test_abrechnen_should_create_abrechnung_on_disk(self):
        self.set_up()

        testdb = persisted_state.database_instance()
        testdb.gemeinsamebuchungen.add(datum('01.01.2010'), 'Eine Katgorie',
                                       'Ein Name', 2.60, 'Eine Person')
        gemeinsam_abrechnen.abrechnen(
            PostRequest({
                'set_mindate': '01.01.2010',
                'set_maxdate': '01.01.2010',
                'set_ergebnis': '%Ergebnis%',
                'set_verhaeltnis': 50
            }))

        abrechnung = file_system.instance().read(
            '../Abrechnungen/Abrechnung_2019-01-01 00:00:00')
        assert abrechnung == [
            'Abrechnung vom 01.01.2019 (01.01.2010-01.01.2010)\n',
            '########################################\n', ' Ergebnis:\n',
            '%Ergebnis%\n', '\n', 'Ausgaben von Partner             0.00\n',
            'Ausgaben von Test_User           0.00\n',
            '--------------------------------------\n',
            'Gesamt                           2.60\n', '\n', '\n',
            '########################################\n',
            ' Gesamtausgaben pro Person \n',
            '########################################\n',
            ' Datum      Kategorie    Name                    Wert\n',
            '01.01.2010  Eine Katgorie Ein Name                1.30\n', '\n',
            '\n', '########################################\n',
            ' Ausgaben von Partner\n',
            '########################################\n',
            ' Datum      Kategorie    Name                    Wert\n', '\n',
            '\n', '########################################\n',
            ' Ausgaben von Test_User\n',
            '########################################\n',
            ' Datum      Kategorie    Name                    Wert\n', '\n',
            '\n', '#######MaschinenimportStart\n',
            'Datum,Kategorie,Name,Wert,Dynamisch\n',
            '2010-01-01,Eine Katgorie,Ein Name,1.30,False\n',
            '#######MaschinenimportEnd\n', ''
        ]
예제 #10
0
 def write_db_file_stub(self, name, stub):
     file_system.instance().write('../Database_' + name + '.csv', stub)
예제 #11
0
def save_if_needed(shares_data):
    if not shares_data.is_changed():
        return
    file_system.instance().write(SHARES_PATH, json.dumps(shares_data.content))
예제 #12
0
def load_data():
    data = file_system.instance().read(SHARES_PATH)
    if not data:
        return SharesInfo({})
    return SharesInfo(json.loads(''.join(data)))
def _save_config(config):
    content = []
    for key in config:
        content.append('{key}:{value}'.format(key=key, value=config[key]))
    content = reduce(lambda x, y: str(x) + '\n' + str(y), content)
    file_system.instance().write(get_config_path() + '/config', content)