def test_optionen(self): self.set_up() context = uebersicht_monat.abrechnen( PostRequest({ 'date': '2011_9', 'einnahmen': 'einnahmen' })) self.contains_only_header(context['abrechnungstext'], '---Einnahmen---') context = uebersicht_monat.abrechnen( PostRequest({ 'date': '2011_9', 'ausgaben': 'ausgaben' })) self.contains_only_header(context['abrechnungstext'], '---Ausgaben---') context = uebersicht_monat.abrechnen( PostRequest({ 'date': '2011_9', 'zusammenfassung_einnahmen': 'zusammenfassung_einnahmen' })) self.contains_only_header(context['abrechnungstext'], 'Einnahmen ') context = uebersicht_monat.abrechnen( PostRequest({ 'date': '2011_9', 'zusammenfassung_ausgaben': 'zusammenfassung_ausgaben' })) self.contains_only_header(context['abrechnungstext'], 'Ausgaben ')
def test_add_should_only_fire_once(self): self.set_up() next_id = request_handler.current_key() addgemeinsam.index( PostRequest({ 'action': 'add', 'ID': next_id, 'date': rfc('1.1.2017'), 'kategorie': 'Essen', 'name': 'testname', 'person': 'testperson', 'wert': '2,00' })) addgemeinsam.index( PostRequest({ 'action': 'add', 'ID': next_id, 'date': rfc('1.1.2017'), 'kategorie': 'overwritten', 'name': 'overwritten', 'person': 'overwritten', 'wert': '0,00' })) testdb = viewcore.database_instance() assert testdb.gemeinsamebuchungen.content.Wert[0] == -1 * float('2.00') assert testdb.gemeinsamebuchungen.content.Name[0] == 'testname' assert testdb.gemeinsamebuchungen.content.Kategorie[0] == 'Essen' assert testdb.gemeinsamebuchungen.content.Datum[0] == datum('1.1.2017') assert testdb.gemeinsamebuchungen.content.Person[0] == 'testperson'
def test_add_ausgabe_should_only_fire_once(self): self.set_up() request_key = request_handler.current_key() addausgabe.index( PostRequest({ 'action': 'add', 'ID': request_key, 'date': rfc('1.1.2017'), 'kategorie': 'Essen', 'name': 'testname', 'wert': '2,00' })) addausgabe.index( PostRequest({ 'action': 'add', 'ID': request_key, 'date': rfc('1.1.2017'), 'kategorie': 'overwritten', 'name': 'overwritten', 'wert': '0,00' })) testdb = database_instance() assert len(testdb.einzelbuchungen.content) == 1 assert testdb.einzelbuchungen.content.Wert[0] == -1 * float('2.00') assert testdb.einzelbuchungen.content.Name[0] == 'testname' assert testdb.einzelbuchungen.content.Kategorie[0] == 'Essen' assert testdb.einzelbuchungen.content.Datum[0] == datum('1.1.2017')
def test_set_kategorien_with_ausgeschlossene_kategoerien_should_hide_ausgeschlossene_kategorien( self): self.set_up() viewcore.database_instance().einzelbuchungen.add( datum('20.01.1990'), 'JaEins', 'SomeTitle', -10) viewcore.database_instance().einzelbuchungen.add( datum('20.01.1990'), 'NeinEins', 'SomeTitle', -10) viewcore.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': ''}) context = import_data.index( PostRequest({ 'action': 'set_kategorien', 'email': '', 'server': 'test.test', 'password': '' })) assert requester.instance().data_of_request( 'https://test.test/setkategorien.php' )[0]['kategorien'] == 'JaEins,JaZwei'
def test_editCallFromUeberischt_presetValuesCorrect(self): self.set_up() db().dauerauftraege.add(datum('10.10.2010'), datum('10.10.2011'), '0kategorie', '0name', 'monatlich', 10) context = adddauerauftrag.index( PostRequest({ 'action': 'edit', 'edit_index': '0' })) assert context['approve_title'] == 'Dauerauftrag aktualisieren' preset = context['default_item'] assert preset['Name'] == '0name' assert preset['Startdatum'] == rfc('10.10.2010') assert preset['Endedatum'] == rfc('10.10.2011') assert preset['Kategorie'] == '0kategorie' assert preset['Wert'] == '10,00' assert preset['typ'] == 'Einnahme' db().dauerauftraege.add(datum('10.10.2015'), datum('10.10.2015'), '0kategorie', '0name', 'monatlich', -10) context = adddauerauftrag.handle_request( PostRequest({ 'action': 'edit', 'edit_index': '1' })) preset = context['default_item'] assert preset['Startdatum'] == rfc('10.10.2015') assert preset['Wert'] == '10,00' assert preset['typ'] == 'Ausgabe'
def test_gemeinsamImport_withUnpassendenKategorie_shouldImportValueAndRequestmapping( self): self.set_up() einzelbuchungen = viewcore.database_instance().einzelbuchungen einzelbuchungen.add(datum('01.01.2017'), 'KeinEssen', 'some name', -1.54) requester.INSTANCE = RequesterStub({ 'https://test.test/getgemeinsam.php': self._IMPORT_DATA_GEMEINSAM, 'https://test.test/deletegemeinsam.php': '', 'https://test.test/getusername.php': 'Sebastian' }) context = import_data.index( PostRequest({ 'action': 'load_online_gemeinsame_transactions', 'email': '', 'server': 'test.test', 'password': '' })) assert context['element_titel'] == 'Kategorien zuweisen' assert context['import'] == self._IMPORT_DATA_GEMEINSAM assert context['unpassende_kategorien'] == ['Essen'] context = import_data.index( PostRequest({ 'action': 'map_and_push', 'Essen_mapping': 'neue Kategorie anlegen', 'import': self._IMPORT_DATA_GEMEINSAM })) assert context['element_titel'] == 'Export / Import' assert len( viewcore.database_instance().gemeinsamebuchungen.content) == 2 assert viewcore.database_instance( ).gemeinsamebuchungen.content.Person[0] == 'Sebastian' assert viewcore.database_instance( ).gemeinsamebuchungen.content.Person[1] == 'Maureen' assert viewcore.database_instance( ).gemeinsamebuchungen.content.Kategorie[0] == 'Essen' assert viewcore.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_edit_dauerauftrag_should_only_fire_once(self): self.set_up() adddauerauftrag.index( VersionedPostRequest({ 'action': 'add', 'startdatum': rfc('1.1.2017'), 'endedatum': rfc('6.1.2017'), 'kategorie': 'Essen', 'typ': 'Ausgabe', 'rhythmus': 'monatlich', 'name': 'testname', 'wert': '2,00' })) next_id = request_handler.current_key() adddauerauftrag.index( PostRequest({ 'action': 'add', 'ID': next_id, 'edit_index': '0', 'startdatum': rfc('2.1.2017'), 'endedatum': rfc('5.1.2017'), 'kategorie': 'Essen', 'typ': 'Ausgabe', 'rhythmus': 'monatlich', 'name': 'testname', 'wert': '2,50' })) adddauerauftrag.index( PostRequest({ 'action': 'add', 'ID': next_id, 'edit_index': '0', 'startdatum': rfc('2.1.2017'), 'endedatum': rfc('5.1.2017'), 'kategorie': 'overwritten', 'typ': 'Ausgabe', 'rhythmus': 'overwritten', 'name': 'overwritten', 'wert': '0,00' })) assert len(db().dauerauftraege.content) == 1 assert db().dauerauftraege.content.Wert[0] == -1 * float('2.50') assert db().dauerauftraege.content.Name[0] == 'testname' assert db().dauerauftraege.content.Kategorie[0] == 'Essen' assert db().dauerauftraege.content.Startdatum[0] == datum('2.1.2017') assert db().dauerauftraege.content.Endedatum[0] == datum('5.1.2017')
def test_change_db_should_trigger_db_reload(self): self.set_up() configuration.index( PostRequest({ 'action': 'edit_databases', 'dbs': 'test' })) assert viewcore.database_instance().name == 'test' configuration.index( PostRequest({ 'action': 'edit_databases', 'dbs': 'test2' })) assert viewcore.database_instance().name == 'test2'
def teste_contextValues_withMutlibleEinnahmeAndAusgabe(self): self.set_up() db = viewcore.database_instance() db.einzelbuchungen.add(datum('10.10.2010'), 'some kategorie', 'some name', -100) db.einzelbuchungen.add(datum('10.10.2010'), 'eine einnahme kategorie', 'some name', 10) db.einzelbuchungen.add(datum('10.10.2010'), 'some kategorie', 'some name', -100) db.einzelbuchungen.add(datum('10.10.2010'), 'eine einnahme kategorie', 'some name', 10) db.einzelbuchungen.add(datum('10.10.2010'), 'some kategorie2', 'some name', -100) db.einzelbuchungen.add(datum('10.10.2010'), 'eine einnahme kategorie2', 'some name', 10) result_context = uebersicht_jahr.index( PostRequest({ 'date': '2010', 'mode': '' })) assert result_context['zusammenfassung_ausgaben'] == [[ 'some kategorie', '-200.00', '00a65a' ], ['some kategorie2', '-100.00', '00c0ef']] assert result_context['zusammenfassung_einnahmen'] == [[ 'eine einnahme kategorie', '20.00', '3c8dbc' ], ['eine einnahme kategorie2', '10.00', 'f56954']] assert result_context['buchungen'][0]['wert'] == ['30.00'] assert result_context['buchungen'][1]['wert'] == ['300.00']
def test_gemeinsamImport_withUnpassendenUsername_shouldImportValueAndRepalceName( self): self.set_up() einzelbuchungen = viewcore.database_instance().einzelbuchungen einzelbuchungen.add(datum('01.01.2017'), 'Essen', 'some name', -1.54) requester.INSTANCE = RequesterStub({ 'https://test.test/getgemeinsam.php': self._IMPORT_DATA_GEMEINSAM_WRONG_SELF, 'https://test.test/deletegemeinsam.php': '', 'https://test.test/getusername.php': 'Sebastian_Online' }) context = import_data.index( PostRequest({ 'action': 'load_online_gemeinsame_transactions', 'email': '', 'server': 'test.test', 'password': '' })) assert context['element_titel'] == 'Export / Import' assert len( viewcore.database_instance().gemeinsamebuchungen.content) == 2 assert viewcore.database_instance( ).gemeinsamebuchungen.content.Person[0] == 'Sebastian' assert viewcore.database_instance( ).gemeinsamebuchungen.content.Person[1] == 'Maureen' assert requester.instance().call_count_of( 'https://test.test/deletegemeinsam.php') == 1 assert requester.instance().complete_call_count() == 3
def test_edit_ausgabe(self): self.set_up() addgemeinsam.index( VersionedPostRequest({ 'action': 'add', 'date': rfc('1.1.2017'), 'kategorie': 'Essen', 'name': 'testname', 'person': 'testperson', 'wert': '2,00' })) addgemeinsam.index( PostRequest({ 'action': 'add', 'ID': request_handler.current_key(), 'edit_index': '0', 'date': rfc('5.1.2017'), 'kategorie': 'Essen', 'name': 'testname', 'person': 'testperson2', 'wert': '2,50' })) testdb = viewcore.database_instance() assert testdb.gemeinsamebuchungen.content.Wert[0] == -1 * float('2.50') assert testdb.gemeinsamebuchungen.content.Name[0] == 'testname' assert testdb.gemeinsamebuchungen.content.Kategorie[0] == 'Essen' assert testdb.gemeinsamebuchungen.content.Datum[0] == datum('5.1.2017') assert testdb.gemeinsamebuchungen.content.Person[0] == 'testperson2'
def test_redirect(self): request_handler.stub_me() result = request_handler.handle_request( PostRequest({'redirect': 'test_page'}), lambda x: {}, 'nothing') assert result == '/test_page/'
def teste_mitMehrAusgabenAlsEinnahmen(self): self.set_up() db = viewcore.database_instance() db.einzelbuchungen.add(datum('10.10.2010'), 'some kategorie', 'some name', -100) db.einzelbuchungen.add(datum('10.10.2010'), 'eine einnahme kategorie', 'some name', 10) result_context = uebersicht_monat.index( PostRequest({'date': '2010_10'})) assert result_context['gesamt'] == '-100.00' assert result_context['gesamt_einnahmen'] == '10.00' assert result_context['einnahmen'] == [('eine einnahme kategorie', '10.00', '3c8dbc')] assert result_context['einnahmen_labels'] == [ 'eine einnahme kategorie' ] assert result_context['einnahmen_data'] == ['10.00'] assert result_context['ausgaben'] == [('some kategorie', '-100.00', 'f56954')] assert result_context['ausgaben_labels'] == ['some kategorie'] assert result_context['ausgaben_data'] == ['100.00']
def test_addePassendeKategorie_shouldImportValue(self): self.set_up() einzelbuchungen = viewcore.database_instance().einzelbuchungen einzelbuchungen.add(datum('01.01.2017'), 'Essen', 'some name', -1.54) context = import_data.index(PostRequest({'import': self._IMPORT_DATA})) assert context['element_titel'] == 'Export / Import' assert einzelbuchungen.select().select_year(2017).sum() == -11.54
def test_addeUnpassendenKategorie_shouldShowImportMappingPage(self): self.set_up() einzelbuchungen = viewcore.database_instance().einzelbuchungen einzelbuchungen.add(datum('01.01.2017'), 'unbekannt', 'some name', -1.54) context = import_data.index(PostRequest({'import': self._IMPORT_DATA})) assert context['element_titel'] == 'Kategorien zuweisen'
def test_abrechnen(self): self.set_up() testdb = viewcore.database_instance() testdb.gemeinsamebuchungen.add(datum('01.01.2010'), 'Eine Katgorie', 'Ein Name', 2.60, 'Eine Person') gemeinsam_abrechnen.abrechnen(PostRequest({})) assert testdb.einzelbuchungen.anzahl() == 1 assert testdb.einzelbuchungen.get_all().Wert[0] == '1.30'
def test_change_partnername_should_change_partnername(self): self.set_up() assert viewcore.name_of_partner() == 'kein_Partnername_gesetzt' configuration.index( PostRequest({ 'action': 'set_partnername', 'partnername': 'testpartner' })) assert viewcore.name_of_partner() == 'testpartner'
def test_addKategorie(self): self.set_up() configuration.index( PostRequest({ 'action': 'add_kategorie', 'neue_kategorie': 'test' })) assert viewcore.database_instance( ).einzelbuchungen.get_alle_kategorien() == set(['test'])
def test_editCallFromUeberischt_shouldNameButtonEdit(self): self.set_up() database_instance().einzelbuchungen.add(datum('10.10.2010'), 'kategorie', 'name', 10.00) context = addausgabe.handle_request( PostRequest({ 'action': 'edit', 'edit_index': '0' })) assert context['approve_title'] == 'Ausgabe aktualisieren'
def test_delete(self): self.set_up() self.add_test_data() uebersicht_einzelbuchungen.index( PostRequest({ 'action': 'delete', 'delete_index': '1' })) einzelbuchungen = viewcore.database_instance().einzelbuchungen assert einzelbuchungen.select().sum() == 100
def test_gemeinsam_addePassendeKategorie_shouldImportValue(self): self.set_up() einzelbuchungen = viewcore.database_instance().einzelbuchungen einzelbuchungen.add(datum('01.01.2017'), 'Essen', 'some name', -1.54) html, context = import_data.handle_request(PostRequest( {'import': self._IMPORT_DATA_GEMEINSAM}), gemeinsam=True) assert context['element_titel'] == 'Export / Import' assert len( viewcore.database_instance().gemeinsamebuchungen.content) == 2
def test_change_themecolor_should_change_partnername(self): self.set_up() assert configuration_provider.get_configuration( 'THEME_COLOR') == '#00acd6' configuration.index( PostRequest({ 'action': 'change_themecolor', 'themecolor': '#000000' })) assert configuration_provider.get_configuration( 'THEME_COLOR') == '#000000'
def test_change_themecolor_should_change_partnername(self): self.set_up() assert configuration_provider.get_configuration( 'AUSGESCHLOSSENE_KATEGORIEN') == '' configuration.index( PostRequest({ 'action': 'set_ausgeschlossene_kategorien', 'ausgeschlossene_kategorien': 'Alkohol' })) assert configuration_provider.get_configuration( 'AUSGESCHLOSSENE_KATEGORIEN') == 'Alkohol'
def teste_gleitkommadarstellung_jahress_zusammenfassung(self): self.set_up() db = viewcore.database_instance() db.einzelbuchungen.add(datum('10.10.2010'), 'some kategorie', 'some name', -100) result_context = uebersicht_monat.index( PostRequest({'date': '2010_10'})) assert result_context['wert_uebersicht_jahr_gruppe_1'] == '0.00' assert result_context['wert_uebersicht_jahr_gruppe_2'] == '100.00'
def test_edit_ausgabe_should_only_fire_once(self): self.set_up() addeinnahme.index(VersionedPostRequest( {'action':'add', 'date': rfc('1.1.2017'), 'kategorie':'Essen', 'name':'testname', 'wert':'2,00' } )) next_id = request_handler.current_key() addeinnahme.index(PostRequest( {'action':'add', 'ID':next_id, 'edit_index':'0', 'date': rfc('5.1.2017'), 'kategorie':'Essen', 'name':'testname', 'wert':'2,50' } )) addeinnahme.index(PostRequest( {'action':'add', 'ID':next_id, 'edit_index':'0', 'date': rfc('5.1.2017'), 'kategorie':'overwritten', 'name':'overwritten', 'wert':'0,0' } )) assert len(db().einzelbuchungen.content) == 1 assert db().einzelbuchungen.content.Wert[0] == float('2.50') assert db().einzelbuchungen.content.Name[0] == 'testname' assert db().einzelbuchungen.content.Kategorie[0] == 'Essen' assert db().einzelbuchungen.content.Datum[0] == datum('5.1.2017')
def test_import_shouldWriteIntoAbrechnungen(self): self.set_up() einzelbuchungen = viewcore.database_instance().einzelbuchungen einzelbuchungen.add(datum('01.01.2017'), 'Essen', 'some name', -1.54) context = import_data.index(PostRequest({'import': self._IMPORT_DATA})) written_abrechnung = None for key in FileSystem.instance()._fs_stub.keys(): if key.startswith('../Import'): written_abrechnung = FileSystem.instance()._fs_stub[key] assert written_abrechnung == self._IMPORT_DATA
def test_change_colors(self): self.set_up() assert viewcore.design_colors( ) == '3c8dbc,f56954,00a65a,00c0ef,f39c12,d2d6de,001F3F,39CCCC,3D9970,01FF70,FF851B,F012BE,8E24AA,D81B60,222222,d2d6de'.split( ',') configuration.index( PostRequest({ 'action': 'change_colorpalette', '0_checked': 'on', '0_farbe': '#000000', '1_checked': 'on', '1_farbe': '#FFFFFF', '2_farbe': '#555555' })) assert viewcore.design_colors() == ['000000', 'FFFFFF'] self.set_up()
def test_delete(self): self.set_up() dauerauftraege = viewcore.database_instance().dauerauftraege dauerauftraege.add(datum('01.01.2011'), datum('01.01.2011'), '', '11', 'monatlich', 1) dauerauftraege.add(datum('01.01.2011'), datum('01.01.2011'), '', '22', 'monatlich', 1) uebersicht_dauerauftrag.index( PostRequest({ 'action': 'delete', 'delete_index': '1' })) assert len(dauerauftraege.content) == 1 assert dauerauftraege.content.Name.tolist() == ['11']
def test_change_partnername_should_mirgrate_old_partnernames(self): self.set_up() name_of_partner = viewcore.name_of_partner() gemeinsame_buchungen = viewcore.database_instance().gemeinsamebuchungen gemeinsame_buchungen.add(datum('01.01.2017'), 'kat', 'name', 1, name_of_partner) configuration.index( PostRequest({ 'action': 'set_partnername', 'partnername': 'testpartner_renamed' })) gemeinsame_buchungen = viewcore.database_instance().gemeinsamebuchungen database_partners = gemeinsame_buchungen.content.Person assert set(database_partners) == set(['testpartner_renamed'])
def test_editCallFromUeberischt_shouldNameButtonEdit(self): self.set_up() db = viewcore.database_instance() db.gemeinsamebuchungen.add(datum('10.10.2010'), 'kategorie', 'ausgaben_name', -10, 'Sebastian') context = addgemeinsam.index( PostRequest({ 'action': 'edit', 'edit_index': '0' })) assert context['approve_title'] == 'Gemeinsame Ausgabe aktualisieren' preset = context['default_item'] assert preset['datum'] == rfc('10.10.2010') assert preset['edit_index'] == '0' assert preset['kategorie'] == 'kategorie' assert preset['name'] == 'ausgaben_name' assert preset['wert'] == '10,00' assert preset['person'] == 'Sebastian'