def test_interlab4_connection_table_only_1(self): db_utils.sql_alter_db('''INSERT INTO zz_staff (staff) VALUES ('DV')''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid) VALUES ('obsid1')''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid) VALUES ('obsid2')''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid) VALUES ('anobsid')''') db_utils.sql_alter_db('''INSERT INTO zz_interlab4_obsid_assignment (specifik_provplats, provplatsnamn, obsid) VALUES ('Demo', 'Demo1 vattenverk', 'obsid1')''') interlab4_lines = ( '#Interlab', '#Version=4.0', '#Tecken=UTF-8', '#Textavgränsare=Nej', '#Decimaltecken=,', '#Provadm', 'Lablittera;Namn;Adress;Postnr;Ort;Kommunkod;Projekt;Laboratorium;Provtyp;Provtagare;Registertyp;ProvplatsID;Provplatsnamn;Specifik provplats;Provtagningsorsak;Provtyp;Provtypspecifikation;Bedömning;Kemisk bedömning;Mikrobiologisk bedömning;Kommentar;År;Provtagningsdatum;Provtagningstid;Inlämningsdatum;Inlämningstid;', 'DM-990908-2773;MFR;PG Vejdes väg 15;351 96;Växjö;0780;Demoproj;Demo-Laboratoriet;NSG;DV;;;Demo1 vattenverk;Demo;;Dricksvatten enligt SLVFS 2001:30;Utgående;Nej;Tjänligt;;;2010;2010-09-07;10:15;2010-09-07;14:15;', 'DM-990908-2774;MFR;PG Vejdes väg 15;351 96;Växjö;0780;Demoproj;Demo-Laboratoriet;NSG;DV;;;Demo2 vattenverk;Demo;;Dricksvatten enligt SLVFS 2001:30;Utgående;Nej;Tjänligt;;;2010;2010-09-07;10:15;2010-09-07;14:15;', '#Provdat', 'Lablittera;Metodbeteckning;Parameter;Mätvärdetext;Mätvärdetal;Mätvärdetalanm;Enhet;Rapporteringsgräns;Detektionsgräns;Mätosäkerhet;Mätvärdespår;Parameterbedömning;Kommentar;', 'DM-990908-2773;SS-EN ISO 7887-1/4;Kalium;<2,5;2,5;;mg/l Pt;;;;;;;', 'DM-990908-2773;SS-EN ISO 7887-1/4;Kalium;<1;1;;mg/l Pt;;;;;;;', 'DM-990908-2774;SS-EN ISO 7887-1/4;Kalium;<15;15;;mg/l Pt;;;;;;;', '#S**t' ) with utils.tempinput('\n'.join(interlab4_lines), 'utf-8') as filename: @mock.patch('midvatten_utils.NotFoundQuestion') @mock.patch('import_data_to_db.utils.Askuser', mocks_for_tests.mock_askuser.get_v) @mock.patch('qgis.utils.iface', autospec=True) @mock.patch('import_data_to_db.utils.pop_up_info', autospec=True) @mock.patch('import_data_to_db.qgis.PyQt.QtWidgets.QFileDialog.getOpenFileNames') def _test(self, filename, mock_filenames, mock_skippopup, mock_iface, mock_not_found_question): mock_not_found_question.return_value.answer = 'ok' mock_not_found_question.return_value.value = 'anobsid' mock_not_found_question.return_value.reuse_column = 'obsid' mock_filenames.return_value = [[filename]] importer = Interlab4Import(self.iface.mainWindow(), self.midvatten.ms) importer.init_gui() importer.select_files_button.click() importer.use_obsid_assignment_table.setChecked(True) importer.start_import_button.click() _test(self, filename) test_string = utils_for_tests.create_test_string(db_utils.sql_load_fr_db('''SELECT * FROM w_qual_lab''')) reference_string = r'''(True, [(obsid1, None, DM-990908-2773, Demoproj, DV, 2010-09-07 10:15:00, SS-EN ISO 7887-1/4, Kalium, 2.5, <2,5, mg/l Pt, provtyp: Dricksvatten enligt SLVFS 2001:30. provtypspecifikation: Utgående. bedömning: Nej. kemisk bedömning: Tjänligt. provplatsnamn: Demo1 vattenverk. specifik provplats: Demo), (obsid1, None, DM-990908-2773, Demoproj, DV, 2010-09-07 10:15:00, SS-EN ISO 7887-1/4, Kalium (dubblett 1), 1.0, <1, mg/l Pt, provtyp: Dricksvatten enligt SLVFS 2001:30. provtypspecifikation: Utgående. bedömning: Nej. kemisk bedömning: Tjänligt. provplatsnamn: Demo1 vattenverk. specifik provplats: Demo), (anobsid, None, DM-990908-2774, Demoproj, DV, 2010-09-07 10:15:00, SS-EN ISO 7887-1/4, Kalium, 15.0, <15, mg/l Pt, provtyp: Dricksvatten enligt SLVFS 2001:30. provtypspecifikation: Utgående. bedömning: Nej. kemisk bedömning: Tjänligt. provplatsnamn: Demo2 vattenverk. specifik provplats: Demo)])''' print(reference_string) print(test_string) assert test_string == reference_string test_string = utils_for_tests.create_test_string(db_utils.sql_load_fr_db('''SELECT * FROM zz_interlab4_obsid_assignment''')) reference_string = '(True, [(Demo, Demo1 vattenverk, obsid1), (Demo, Demo2 vattenverk, anobsid)])' assert test_string == reference_string
def test_interlab4_full_test_to_db_staff_0(self): db_utils.sql_alter_db( u'''INSERT INTO obs_points (obsid) VALUES ('anobsid')''') interlab4_lines = ( '#Interlab', '#Version=4.0', '#Tecken=UTF-8', '#Textavgränsare=Nej', '#Decimaltecken=,', '#Provadm', 'Lablittera;Namn;Adress;Postnr;Ort;Kommunkod;Projekt;Laboratorium;Provtyp;Provtagare;Registertyp;ProvplatsID;Provplatsnamn;Specifik provplats;Provtagningsorsak;Provtyp;Provtypspecifikation;Bedömning;Kemisk bedömning;Mikrobiologisk bedömning;Kommentar;År;Provtagningsdatum;Provtagningstid;Inlämningsdatum;Inlämningstid;', 'DM-990908-2773;MFR;PG Vejdes väg 15;351 96;Växjö;0780;Demoproj;Demo-Laboratoriet;NSG;0;;Demo1 vattenverk;;Föreskriven regelbunden undersökning enligt SLVFS 2001:30;Dricksvatten enligt SLVFS 2001:30;Utgående;Nej;Tjänligt;;;;2010;2010-09-07;10:15;2010-09-07;14:15;', '#Provdat', 'Lablittera;Metodbeteckning;Parameter;Mätvärdetext;Mätvärdetal;Mätvärdetalanm;Enhet;Rapporteringsgräns;Detektionsgräns;Mätosäkerhet;Mätvärdespår;Parameterbedömning;Kommentar;', 'DM-990908-2773;SS-EN ISO 7887-1/4;Kalium;<2,5;2,5;;mg/l Pt;;;;;;;', 'DM-990908-2773;SS-EN ISO 7887-1/4;Kalium;<1;1;;mg/l Pt;;;;;;;', '#S**t') with utils.tempinput(u'\n'.join(interlab4_lines), 'utf-8') as filename: @mock.patch('midvatten_utils.NotFoundQuestion') @mock.patch('db_utils.QgsProject.instance', utils_for_tests.MidvattenTestSpatialiteNotCreated. mock_instance_settings_database) @mock.patch('import_data_to_db.utils.Askuser', mocks_for_tests.mock_askuser.get_v) @mock.patch('qgis.utils.iface', autospec=True) @mock.patch('import_data_to_db.utils.pop_up_info', autospec=True) @mock.patch( 'import_data_to_db.qgis.PyQt.QtWidgets.QFileDialog.getOpenFileNames' ) def _test(self, filename, mock_filenames, mock_skippopup, mock_iface, mock_not_found_question): mock_not_found_question.return_value.answer = 'ok' mock_not_found_question.return_value.value = 'anobsid' mock_not_found_question.return_value.reuse_column = 'obsid' mock_filenames.return_value = [[filename]] importer = Interlab4Import(self.iface.mainWindow(), self.ms) importer.parse_observations_and_populate_gui() importer.start_import( importer.all_lab_results, importer.metadata_filter.get_selected_lablitteras()) _test(self, filename) test_string = utils_for_tests.create_test_string( db_utils.sql_load_fr_db(u'''SELECT * FROM w_qual_lab''')) reference_string = '''(True, [(anobsid, None, DM-990908-2773, Demoproj, 0, 2010-09-07 10:15:00, SS-EN ISO 7887-1/4, Kalium, 2.5, <2,5, mg/l Pt, provtagningsorsak: Dricksvatten enligt SLVFS 2001:30. provtyp: Utgående. provtypspecifikation: Nej. bedömning: Tjänligt. provplatsid: Demo1 vattenverk. specifik provplats: Föreskriven regelbunden undersökning enligt SLVFS 2001:30), (anobsid, None, DM-990908-2773, Demoproj, 0, 2010-09-07 10:15:00, SS-EN ISO 7887-1/4, Kalium (dubblett 1), 1.0, <1, mg/l Pt, provtagningsorsak: Dricksvatten enligt SLVFS 2001:30. provtyp: Utgående. provtypspecifikation: Nej. bedömning: Tjänligt. provplatsid: Demo1 vattenverk. specifik provplats: Föreskriven regelbunden undersökning enligt SLVFS 2001:30)])''' print(reference_string) print(test_string) assert test_string == reference_string test_string = utils_for_tests.create_test_string( db_utils.sql_load_fr_db(u'''SELECT * FROM zz_staff''')) reference_string = '(True, [(0, None)])' assert test_string == reference_string
def test_SublocationFilter(): sublocation_filter = import_fieldlogger.SublocationFilter([u'a.1', u'a.2']) assert u'{sublocation: a.1}' == create_test_string(sublocation_filter.alter_data({u'sublocation': u'a.1'})) sublocation_filter.set_selection([u'a.1'], False) assert sublocation_filter.alter_data({u'sublocation': u'a.1'}) is None assert u'{sublocation: a.2}' == create_test_string(sublocation_filter.alter_data({u'sublocation': u'a.2'})) sublocation_filter.set_selection([u'a.1'], True) assert u'{sublocation: a.1}' == create_test_string(sublocation_filter.alter_data({u'sublocation': u'a.1'})) assert u'{sublocation: a.2}' == create_test_string(sublocation_filter.alter_data({u'sublocation': u'a.2'}))
def test_create_db_locale_se(self, mock_locale): mock_locale.return_value = [u'se_SV'] self.midvatten.new_db(u'sv_SE') test_string = utils_for_tests.create_test_string(utils.sql_load_fr_db(u'select * from zz_strat')) reference_string = ur"""(True, [(okänt, white, , white, NoBrush, not in ('berg','b','rock','ro','grovgrus','grg','coarse gravel','cgr','grus','gr','gravel','mellangrus','grm','medium gravel','mgr','fingrus','grf','fine gravel','fgr','grovsand','sag','coarse sand','csa','sand','sa','mellansand','sam','medium sand','msa','finsand','saf','fine sand','fsa','silt','si','lera','ler','le','clay','cl','morän','moran','mn','till','ti','torv','t','peat','pt','fyll','fyllning','f','made ground','mg','land fill')), (berg, red, x, red, DiagCrossPattern, in ('berg','b','rock','ro')), (grovgrus, DarkGreen, O, darkGreen, Dense7Pattern, in ('grovgrus','grg','coarse gravel','cgr')), (grus, DarkGreen, O, darkGreen, Dense7Pattern, in ('grus','gr','gravel')), (mellangrus, DarkGreen, o, darkGreen, Dense6Pattern, in ('mellangrus','grm','medium gravel','mgr')), (fingrus, DarkGreen, o, darkGreen, Dense6Pattern, in ('fingrus','grf','fine gravel','fgr')), (grovsand, green, *, green, Dense5Pattern, in ('grovsand','sag','coarse sand','csa')), (sand, green, *, green, Dense5Pattern, in ('sand','sa')), (mellansand, green, ., green, Dense4Pattern, in ('mellansand','sam','medium sand','msa')), (finsand, DarkOrange, ., orange, Dense5Pattern, in ('finsand','saf','fine sand','fsa')), (silt, yellow, \\, yellow, BDiagPattern, in ('silt','si')), (lera, yellow, -, yellow, HorPattern, in ('lera','ler','le','clay','cl')), (morän, cyan, /, yellow, CrossPattern, in ('morän','moran','mn','till','ti')), (torv, DarkGray, +, darkGray, NoBrush, in ('torv','t','peat','pt')), (fyll, white, +, white, DiagCrossPattern, in ('fyll','fyllning','f','made ground','mg','land fill'))])""" assert test_string == reference_string
def test_parse_hobologger_file_convert_tz(self, mock_messagelog): f = ('"Plot Title: temp"', '"#","Date Time, GMT+03:00","Temp, °C (LGR S/N: 1234, SEN S/N: 1234, LBL: Rb1)","Coupler Detached (LGR S/N: 1234)","Coupler Attached (LGR S/N: 1234)","Stopped (LGR S/N: 1234)","End Of File (LGR S/N: 1234)"', '1,07/19/18 10:00:00 fm,4.558,Logged,,,', '2,07/19/18 11:00:00 fm,4.402,,,,', '3,07/19/18 12:00:00 em,4.402,,,,', '4,07/19/18 01:00:00 em,4.402,,,,') charset_of_hobologgerfile = 'utf-8' #tz_string = get_tz_string('Date Time, GMT+02:00') tzconverter = TzConverter() tzconverter.target_tz = 'GMT+01:00' #tzconverter.source_tz = tz_string with utils.tempinput('\n'.join(f), charset_of_hobologgerfile) as path: file_data = HobologgerImport.parse_hobologger_file(path, charset_of_hobologgerfile, tz_converter=tzconverter) test_string = utils_for_tests.create_test_string(file_data[0]) reference_string = '[[date_time, head_cm, temp_degc, cond_mscm], [2018-07-19 08:00:00, , 4.558, ], [2018-07-19 09:00:00, , 4.402, ], [2018-07-19 10:00:00, , 4.402, ], [2018-07-19 11:00:00, , 4.402, ]]' #print(str(test_string)) #print(str(reference_string)) #print(str(mock_messagelog.mock_calls)) assert test_string == reference_string assert os.path.basename(path) == file_data[1] assert file_data[2] == 'Rb1'
def test_calibrlogger_adjust_trend(self, mock_messagebar): db_utils.sql_alter_db("INSERT INTO obs_points (obsid) VALUES ('rb1')") db_utils.sql_alter_db("INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)") db_utils.sql_alter_db("INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-10 00:00', 200)") db_utils.sql_alter_db("INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 200)") db_utils.sql_alter_db("INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-10 00:00', 100)") calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms) gui_utils.set_combobox(calibrlogger.combobox_obsid, 'rb1 (uncalibrated)') calibrlogger.update_plot() calibrlogger.FromDateTime.setDateTime(date_utils.datestring_to_date('2000-01-01 00:00:00')) calibrlogger.L1_date.setDateTime(date_utils.datestring_to_date('2017-02-01 00:00')) calibrlogger.L2_date.setDateTime(date_utils.datestring_to_date('2017-02-10 00:00')) calibrlogger.M1_date.setDateTime(date_utils.datestring_to_date('2017-02-01 00:00')) calibrlogger.M2_date.setDateTime(date_utils.datestring_to_date('2017-02-10 00:00')) calibrlogger.adjust_trend_func() res = db_utils.sql_load_fr_db('SELECT * FROM w_levels_logger') l = list(res[1][1]) l[5] = '%.11e'%Decimal(l[5]) res[1][1] = tuple(l) test = utils_for_tests.create_test_string(res) print(mock_messagebar.mock_calls) print(test) ref = '(True, [(rb1, 2017-02-01 00:00, None, None, None, 100.0, None), (rb1, 2017-02-10 00:00, None, None, None, -2.84217094304e-14, None)])' assert test == ref
def test_getcurrentlocale(self, mock_get_locale, mock_default_locale): mock_get_locale.return_value = u'a_lang' mock_default_locale.return_value = [None, u'an_enc'] test_string = create_test_string(utils.getcurrentlocale()) reference_string = u'[a_lang, an_enc]' assert test_string == reference_string
def test_add_triggers_not_change_existing(self): """ Adding triggers should not automatically change the db """ utils.sql_alter_db(u'''INSERT INTO obs_points ("obsid", "east", "north") VALUES ('rb1', 1, 1)''') test_string = utils_for_tests.create_test_string(utils.sql_load_fr_db(u'select obsid, east, north, AsText(geometry) from obs_points')) utils.add_triggers_to_obs_points() reference_string = u'(True, [(rb1, 1.0, 1.0, None)])' assert test_string == reference_string
def test_create_export_printlist_assert_no_critical_msg( mock_latlons, mock_MessagebarAndLog): mock_latlons.return_value = { u'1': (123, 465), u'2': (123, 465), u'3': (123, 465) } stored_settings = [(0, ((u'input_field_group_list', [ u'p1.u1;it1:h1', u'l.comment;test;make a comment' ]), (u'location_suffix', u'ls'), (u'sublocation_suffix', u'with_p1_u1_and_l_comment'))), (1, ((u'input_field_group_list', [u'comment;test;make a general comment' ]), (u'location_suffix', u'ls'), (u'sublocation_suffix', u'with_comment')))] mock_connect = MagicMock() parameter_groups = ExportToFieldLogger.create_parameter_groups_using_stored_settings( stored_settings, mock_connect) parameter_groups[0]._obsid_list.paste_data([u'1', u'2', u'3']) parameter_groups[1]._obsid_list.paste_data([u'1', u'2', u'3']) printlist = ExportToFieldLogger.create_export_printlist( parameter_groups) test_string = create_test_string(printlist) mock_MessagebarAndLog.critical.assert_not_called() reference_string = u'[FileVersion 1;3, NAME;INPUTTYPE;HINT, p1.u1;it1:h1 , l.comment;test;make a comment , comment;test;make a general comment , NAME;SUBNAME;LAT;LON;INPUTFIELD, 1.ls;1.ls.with_comment;123;465;comment, 1.ls;1.ls.with_p1_u1_and_l_comment;123;465;p1.u1|l.comment, 2.ls;2.ls.with_comment;123;465;comment, 2.ls;2.ls.with_p1_u1_and_l_comment;123;465;p1.u1|l.comment, 3.ls;3.ls.with_comment;123;465;comment, 3.ls;3.ls.with_p1_u1_and_l_comment;123;465;p1.u1|l.comment]' assert test_string == reference_string
def test_load_file(self): f = [ "LOCATION;DATE;TIME;VALUE;TYPE\n", "Rb1202.sample;30-03-2016;15:31:30;hej2;s.comment\n", "Rb1608.level;30-03-2016;15:34:40;testc;l.comment\n", "Rb1615.flow;30-03-2016;15:30:09;357;f.Accvol.m3\n", "Rb1615.flow;30-03-2016;15:30:09;gick bra;f.comment\n", "Rb1608.level;30-03-2016;15:34:13;ergv;l.comment\n", "Rb1608.level;30-03-2016;15:34:13;555;l.meas.m\n", "Rb1512.sample;30-03-2016;15:31:30;899;s.turbiditet.FNU\n", "Rb1505.quality;30-03-2016;15:29:26;hej;q.comment\n", "Rb1505.quality;30-03-2016;15:29:26;863;q.konduktivitet.µS/cm\n", "Rb1512.quality;30-03-2016;15:30:39;test;q.comment\n", "Rb1512.quality;30-03-2016;15:30:39;67;q.syre.mg/L\n", "Rb1512.quality;30-03-2016;15:30:39;8;q.temperatur.grC\n", "Rb1512.quality;30-03-2016;15:30:40;58;q.syre.%\n", ] with utils.tempinput(''.join(f)) as filename: @mock.patch('import_fieldlogger.utils.QtWidgets.QFileDialog.getOpenFileNames') @mock.patch('import_fieldlogger.utils.QtWidgets.QInputDialog.getText') @mock.patch('import_fieldlogger.utils.MessagebarAndLog') def _test(self, filename, mock_MessagebarAndLog, mock_charset, mock_savefilename ): mock_charset.return_value = ('utf-8', True) mock_savefilename.return_value = [[filename]] test_string = create_test_string(sorted(FieldloggerImport.select_file_and_parse_rows(FieldloggerImport.parse_rows), key=itemgetter('date_time', 'parametername', 'sublocation'))) return test_string test_string = _test(self, filename) reference = utils_for_tests.create_test_string(sorted([{'date_time': '2016-03-30 15:29:26', 'parametername': 'q.comment', 'sublocation': 'Rb1505.quality', 'value': 'hej'}, {'date_time': '2016-03-30 15:30:39', 'parametername': 'q.syre.mg/L', 'sublocation': 'Rb1512.quality', 'value': '67'}, {'date_time': '2016-03-30 15:31:30', 'parametername': 's.turbiditet.FNU', 'sublocation': 'Rb1512.sample', 'value': '899'}, {'date_time': '2016-03-30 15:29:26', 'parametername': 'q.konduktivitet.µS/cm', 'sublocation': 'Rb1505.quality', 'value': '863'}, {'date_time': '2016-03-30 15:30:09', 'parametername': 'f.comment', 'sublocation': 'Rb1615.flow', 'value': 'gick bra'}, {'date_time': '2016-03-30 15:30:40', 'parametername': 'q.syre.%', 'sublocation': 'Rb1512.quality', 'value': '58'}, {'date_time': '2016-03-30 15:34:13', 'parametername': 'l.meas.m', 'sublocation': 'Rb1608.level', 'value': '555'}, {'date_time': '2016-03-30 15:30:39', 'parametername': 'q.comment', 'sublocation': 'Rb1512.quality', 'value': 'test'}, {'date_time': '2016-03-30 15:31:30', 'parametername': 's.comment', 'sublocation': 'Rb1202.sample', 'value': 'hej2'}, {'date_time': '2016-03-30 15:34:40', 'parametername': 'l.comment', 'sublocation': 'Rb1608.level', 'value': 'testc'}, {'date_time': '2016-03-30 15:30:09', 'parametername': 'f.Accvol.m3', 'sublocation': 'Rb1615.flow', 'value': '357'}, {'date_time': '2016-03-30 15:34:13', 'parametername': 'l.comment', 'sublocation': 'Rb1608.level', 'value': 'ergv'}, {'date_time': '2016-03-30 15:30:39', 'parametername': 'q.temperatur.grC', 'sublocation': 'Rb1512.quality', 'value': '8'}], key=itemgetter('date_time', 'parametername', 'sublocation'))) assert test_string == reference
def test_get_stored_settings_parameter_browser(): mock_ms = MagicMock() mock_ms.settingsdict = {u'fieldlogger_export_parameter_browser': u'((0, (u"parameter_list", (u"p1.u1;input;hint", u"np2.u2;input2;hint2"), ), ), )'} settingskey = u'fieldlogger_export_parameter_browser' stored_settings = create_test_string(ExportToFieldLogger.get_stored_settings(mock_ms, settingskey)) reference_string = u'((0, (parameter_list, (p1.u1;input;hint, np2.u2;input2;hint2))))' assert stored_settings == reference_string
def test_get_stored_settings(): mock_ms = MagicMock() mock_ms.settingsdict = {u"test_settings_key": u'((0, (u"final_parameter_name", u"testname"), (u"test", u"gotten_test")), (1, (u"key1", u"value1"), (u"key2", u"value2"), (u"key3", u"value3")))'} settingskey = u'test_settings_key' stored_settings = create_test_string(ExportToFieldLogger.get_stored_settings(mock_ms, settingskey)) reference_string = u'((0, (final_parameter_name, testname), (test, gotten_test)), (1, (key1, value1), (key2, value2), (key3, value3)))' assert stored_settings == reference_string
def test_get_stored_settings(): mock_ms = MagicMock() mock_ms.settingsdict = {u'test_settings_key': u'0;final_parameter_name:testname;test:gotten_test/1;key1:value1;key2:value2;key3:value3'} settingskey = u'test_settings_key' stored_settings = create_test_string(ExportToFieldLogger.get_stored_settings(mock_ms, settingskey)) reference_string = u'((0, ((final_parameter_name, testname), (test, gotten_test))), (1, ((key1, value1), (key2, value2), (key3, value3))))' assert stored_settings == reference_string
def test_get_stored_settings_parameter_browser_real_parameter_name(): mock_ms = MagicMock() mock_ms.settingsdict = {u"fieldlogger_pbrowser": u'[(0, (u"parameter_list", [u"Aveflow.m3/s;numberDecimal|numberSigned;measure flow", u"Accflow.m3;numberDecimal|numberSigned;measure flow"]))]'} settingskey = u'fieldlogger_pbrowser' test_string = create_test_string(ExportToFieldLogger.get_stored_settings(mock_ms, settingskey)) reference_string = u'[(0, (parameter_list, [Aveflow.m3/s;numberDecimal|numberSigned;measure flow, Accflow.m3;numberDecimal|numberSigned;measure flow]))]' assert test_string == reference_string
def test_calc_selected_dont_overwrite_dont_skip_nulls( self, mock_selected_obsids, mock_messagebar, mock_skippopup): mock_selected_obsids.return_value = [u'rb1', u'rb2'] db_utils.sql_alter_db( u'''INSERT INTO obs_points (obsid, h_toc) VALUES ('rb1', 1)''') db_utils.sql_alter_db( u'''INSERT into w_levels (obsid, meas, date_time) VALUES ('rb1', 222, '2005-01-01 00:00:00')''' ) db_utils.sql_alter_db( u'''INSERT INTO obs_points (obsid, h_toc) VALUES ('rb2', NULL)''') db_utils.sql_alter_db( u'''INSERT into w_levels (obsid, meas, date_time) VALUES ('rb2', 444, '2005-01-01 00:00:00')''' ) db_utils.sql_alter_db( u'''INSERT into w_levels (obsid, meas, level_masl, date_time) VALUES ('rb2', 555, 667, '2005-01-02 00:00:00')''' ) self.calclvl.FromDateTime = QtGui.QDateTimeEdit() self.calclvl.FromDateTime.setDateTime( datestring_to_date(u'2000-01-01 00:00:00')) self.calclvl.ToDateTime = QtGui.QDateTimeEdit() self.calclvl.ToDateTime.setDateTime( datestring_to_date(u'2010-01-01 00:00:00')) self.calclvl.checkBox_overwrite_prev.setChecked(False) self.calclvl.calcselected() #self.checkBox_skipnulls test_string = utils_for_tests.create_test_string( db_utils.sql_load_fr_db( u'SELECT obsid, date_time, meas, h_toc, level_masl FROM w_levels ORDER BY obsid, date_time' )) reference_string = u'(True, [(rb1, 2005-01-01 00:00:00, 222.0, None, None), (rb2, 2005-01-01 00:00:00, 444.0, None, None), (rb2, 2005-01-02 00:00:00, 555.0, None, 667.0)])' print(str(mock_messagebar.mock_calls)) print(test_string) assert test_string == reference_string
def test_load_file_comma_separated(self): f = [ "LOCATION,DATE,TIME,VALUE,TYPE\n", "Rb1202.sample,30-03-2016,15:31:30,hej2,s.comment\n", "Rb1608.level,30-03-2016,15:34:40,testc,l.comment\n", "Rb1615.flow,30-03-2016,15:30:09,357,f.Accvol.m3\n", "Rb1615.flow,30-03-2016,15:30:09,gick bra,f.comment\n", "Rb1608.level,30-03-2016,15:34:13,ergv,l.comment\n", "Rb1608.level,30-03-2016,15:34:13,555,l.meas.m\n", "Rb1512.sample,30-03-2016,15:31:30,899,s.turbiditet.FNU\n", "Rb1505.quality,30-03-2016,15:29:26,hej,q.comment\n", "Rb1505.quality,30-03-2016,15:29:26,863,q.konduktivitet.µS/cm\n", "Rb1512.quality,30-03-2016,15:30:39,test,q.comment\n", "Rb1512.quality,30-03-2016,15:30:39,67,q.syre.mg/L\n", "Rb1512.quality,30-03-2016,15:30:39,8,q.temperatur.grC\n", "Rb1512.quality,30-03-2016,15:30:40,58,q.syre.%\n", ] with utils.tempinput(''.join(f)) as filename: @mock.patch('import_fieldlogger.utils.QtWidgets.QFileDialog.getOpenFileNames') @mock.patch('import_fieldlogger.utils.QtWidgets.QInputDialog.getText') @mock.patch('import_fieldlogger.utils.MessagebarAndLog') def _test(self, filename, mock_MessagebarAndLog, mock_charset, mock_savefilename ): mock_charset.return_value = ('utf-8', True) mock_savefilename.return_value = [[filename]] test_string = create_test_string(sorted(FieldloggerImport.select_file_and_parse_rows(FieldloggerImport.parse_rows), key=itemgetter('date_time', 'parametername', 'sublocation'))) return test_string test_string = _test(self, filename) reference = utils_for_tests.create_test_string(sorted([{'date_time': '2016-03-30 15:29:26', 'parametername': 'q.comment', 'sublocation': 'Rb1505.quality', 'value': 'hej'}, {'date_time': '2016-03-30 15:30:39', 'parametername': 'q.syre.mg/L', 'sublocation': 'Rb1512.quality', 'value': '67'}, {'date_time': '2016-03-30 15:31:30', 'parametername': 's.turbiditet.FNU', 'sublocation': 'Rb1512.sample', 'value': '899'}, {'date_time': '2016-03-30 15:29:26', 'parametername': 'q.konduktivitet.µS/cm', 'sublocation': 'Rb1505.quality', 'value': '863'}, {'date_time': '2016-03-30 15:30:09', 'parametername': 'f.comment', 'sublocation': 'Rb1615.flow', 'value': 'gick bra'}, {'date_time': '2016-03-30 15:30:40', 'parametername': 'q.syre.%', 'sublocation': 'Rb1512.quality', 'value': '58'}, {'date_time': '2016-03-30 15:34:13', 'parametername': 'l.meas.m', 'sublocation': 'Rb1608.level', 'value': '555'}, {'date_time': '2016-03-30 15:30:39', 'parametername': 'q.comment', 'sublocation': 'Rb1512.quality', 'value': 'test'}, {'date_time': '2016-03-30 15:31:30', 'parametername': 's.comment', 'sublocation': 'Rb1202.sample', 'value': 'hej2'}, {'date_time': '2016-03-30 15:34:40', 'parametername': 'l.comment', 'sublocation': 'Rb1608.level', 'value': 'testc'}, {'date_time': '2016-03-30 15:30:09', 'parametername': 'f.Accvol.m3', 'sublocation': 'Rb1615.flow', 'value': '357'}, {'date_time': '2016-03-30 15:34:13', 'parametername': 'l.comment', 'sublocation': 'Rb1608.level', 'value': 'ergv'}, {'date_time': '2016-03-30 15:30:39', 'parametername': 'q.temperatur.grC', 'sublocation': 'Rb1512.quality', 'value': '8'}], key=itemgetter('date_time', 'parametername', 'sublocation'))) assert test_string == reference
def test_getcurrentlocale(self, mock_get_locale, mock_default_locale): mock_get_locale.return_value = u'a_lang' mock_default_locale.return_value = [None, u'an_enc'] test_string = create_test_string(utils.getcurrentlocale()) reference_string = u'[a_lang, an_enc]' assert test_string == reference_string
def test_plot_section(self, mock_messagebar): """For now, the test only initiates the plot. Check that it does not crash """ db_utils.sql_alter_db('''INSERT INTO obs_lines (obsid, geometry) VALUES ('L1', ST_GeomFromText('LineString(633466.711659 6720684.24498, 633599.530455 6720727.016568)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P1', ST_GeomFromText('POINT(633466 711659)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P2', ST_GeomFromText('POINT(6720727 016568)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P3', ST_GeomFromText('POINT(6720728 016569)', 3006))''') self.create_and_select_vlayer() @mock.patch('midvatten_utils.find_layer') @mock.patch('midvatten_utils.getselectedobjectnames', autospec=True) @mock.patch('qgis.utils.iface', autospec=True) def _test_plot_section(self, mock_iface, mock_getselectedobjectnames, mock_findlayer): mock_iface.mapCanvas.return_value.currentLayer.return_value = self.vlayer mock_findlayer.return_value.isEditable.return_value = False mock_getselectedobjectnames.return_value = ('P1', 'P2', 'P3') mock_mapcanvas = mock_iface.mapCanvas.return_value mock_mapcanvas.layerCount.return_value = 0 self.midvatten.plot_section() self.myplot = self.midvatten.myplot self.myplot.drillstoplineEdit.setText("%berg%") self.myplot.draw_plot() self.selected_obsids = self.myplot.selected_obsids _test_plot_section(self) assert """call.info(log_msg='Settings {""" in str(mock_messagebar.mock_calls) assert self.myplot.drillstoplineEdit.text() == '%berg%' assert utils_for_tests.create_test_string(self.myplot.selected_obsids) == "['P1' 'P2' 'P3']" assert not mock_messagebar.warning.called assert not mock_messagebar.critical.called print("self.myplot.p {} self.myplot.labels {}".format(str(self.myplot.p), str(self.myplot.labels))) assert len(self.myplot.p) - 1 == len(self.myplot.labels) # The bars should not be labeled, so there is one less label than plot.
def test_plot_section_length_along(self, mock_messagebar): """For now, the test only initiates the plot. Check that it does not crash """ db_utils.sql_alter_db('''INSERT INTO obs_lines (obsid, geometry) VALUES ('L1', ST_GeomFromText('LineString(0 0, 1 0, 10 0)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P1', ST_GeomFromText('POINT(1 0)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P2', ST_GeomFromText('POINT(3 5)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P3', ST_GeomFromText('POINT(5 10)', 3006))''') self.create_and_select_vlayer() @mock.patch('midvatten_utils.getselectedobjectnames', autospec=True) @mock.patch('qgis.utils.iface', autospec=True) def _test(midvatten, vlayer, mock_iface, mock_getselectedobjectnames): mock_iface.mapCanvas.return_value.currentLayer.return_value = vlayer mock_getselectedobjectnames.return_value = ('P1', 'P2', 'P3') mock_mapcanvas = mock_iface.mapCanvas.return_value mock_mapcanvas.layerCount.return_value = 0 midvatten.plot_section() myplot = midvatten.myplot myplot.drillstoplineEdit.setText("%berg%") myplot.draw_plot() return myplot myplot = _test(self.midvatten, self.vlayer) test_string = utils_for_tests.create_test_string(myplot.LengthAlong) assert any([test_string == "[ 1. 3. 5.]", test_string == "[1. 3. 5.]"]) assert mock.call.info(log_msg='Hidden features, obsids and length along section:\nP1;P2;P3\\1.0;3.0;5.0') in mock_messagebar.mock_calls assert not mock_messagebar.warning.called assert not mock_messagebar.critical.called
def test_alter_data(self): observations = [{u'parametername': u'comment', u'date_time': datestring_to_date(u'2016-01-01'), u'sublocation': u'1', u'value': u'shared_comment'}, {u'parametername': u'par_get_shared_comment', u'date_time': datestring_to_date(u'2016-01-01'), u'sublocation': u'1', u'value': u'1'}, {u'parametername': u'par_not_get_shared_comment', u'date_time': datestring_to_date(u'2016-01-02'), u'sublocation': u'2', u'value': u'1'}, {u'parametername': u'par_not_get_shared_comment', u'date_time': datestring_to_date(u'2016-01-04'), u'sublocation': u'1', u'value': u'1'}, {u'parametername': u'comment', u'date_time': datestring_to_date(u'2016-01-03'), u'sublocation': u'1', u'value': u'not_shared_comment'} ] observations = self.comments_import.alter_data(observations) test_string = create_test_string(observations) reference_string = u'[{date_time: 2016-01-01 00:00:00, parametername: comment, skip_comment_import: True, sublocation: 1, value: shared_comment}, {comment: shared_comment, date_time: 2016-01-01 00:00:00, parametername: par_get_shared_comment, sublocation: 1, value: 1}, {date_time: 2016-01-02 00:00:00, parametername: par_not_get_shared_comment, sublocation: 2, value: 1}, {date_time: 2016-01-04 00:00:00, parametername: par_not_get_shared_comment, sublocation: 1, value: 1}, {date_time: 2016-01-03 00:00:00, parametername: comment, sublocation: 1, value: not_shared_comment}]' assert test_string == reference_string
def test_plot_section(self, mock_messagebar): """For now, the test only initiates the plot. Check that it does not crash """ db_utils.sql_alter_db('''INSERT INTO obs_lines (obsid, geometry) VALUES ('L1', ST_GeomFromText('LineString(633466.711659 6720684.24498, 633599.530455 6720727.016568)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P1', ST_GeomFromText('POINT(633466 711659)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P2', ST_GeomFromText('POINT(6720727 016568)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P3', ST_GeomFromText('POINT(6720728 016569)', 3006))''') self.create_and_select_vlayer() @mock.patch('db_utils.QgsProject.instance', utils_for_tests.MidvattenTestPostgisNotCreated.mock_instance_settings_database) @mock.patch('db_utils.get_postgis_connections', utils_for_tests.MidvattenTestPostgisNotCreated.mock_postgis_connections) @mock.patch('midvatten_utils.getselectedobjectnames', autospec=True) @mock.patch('qgis.utils.iface', autospec=True) def _test_plot_section(self, mock_iface, mock_getselectedobjectnames): mock_iface.mapCanvas.return_value.currentLayer.return_value = self.vlayer mock_getselectedobjectnames.return_value = ('P1', 'P2', 'P3') mock_mapcanvas = mock_iface.mapCanvas.return_value mock_mapcanvas.layerCount.return_value = 0 self.midvatten.plot_section() self.myplot = self.midvatten.myplot self.myplot.drillstoplineEdit.setText("%berg%") self.myplot.draw_plot() self.selected_obsids = self.myplot.selected_obsids _test_plot_section(self) assert """call.info(log_msg='Settings {""" in str(mock_messagebar.mock_calls) assert self.myplot.drillstoplineEdit.text() == '%berg%' assert utils_for_tests.create_test_string(self.myplot.selected_obsids) == "['P1' 'P2' 'P3']" assert not mock_messagebar.warning.called assert not mock_messagebar.critical.called assert len(self.myplot.p) == len(self.myplot.Labels)
def test_calibrlogger_adjust_trend(self, mock_messagebar): db_utils.sql_alter_db("INSERT INTO obs_points (obsid) VALUES ('rb1')") db_utils.sql_alter_db("INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)") db_utils.sql_alter_db("INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-10 00:00', 200)") db_utils.sql_alter_db("INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 200)") db_utils.sql_alter_db("INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-10 00:00', 100)") calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms) gui_utils.set_combobox(calibrlogger.combobox_obsid, 'rb1 (uncalibrated)') calibrlogger.update_plot() calibrlogger.FromDateTime.setDateTime(date_utils.datestring_to_date('2000-01-01 00:00:00')) calibrlogger.L1_date.setDateTime(date_utils.datestring_to_date('2017-02-01 00:00')) calibrlogger.L2_date.setDateTime(date_utils.datestring_to_date('2017-02-10 00:00')) calibrlogger.M1_date.setDateTime(date_utils.datestring_to_date('2017-02-01 00:00')) calibrlogger.M2_date.setDateTime(date_utils.datestring_to_date('2017-02-10 00:00')) calibrlogger.L1_level.setText('100') calibrlogger.L2_level.setText('200') calibrlogger.M1_level.setText('200') calibrlogger.M2_level.setText('100') calibrlogger.adjust_trend_func() res = db_utils.sql_load_fr_db('SELECT obsid, date_time, head_cm, temp_degc, cond_mscm, level_masl, comment FROM w_levels_logger') l = list(res[1][1]) l[5] = '%.11e'%Decimal(l[5]) res[1][1] = tuple(l) test = utils_for_tests.create_test_string(res) print(mock_messagebar.mock_calls) ref = '(True, [(rb1, 2017-02-01 00:00, None, None, None, 100.0, None), (rb1, 2017-02-10 00:00, None, None, None, -2.84217094304e-14, None)])' print("Ref") print(ref) print("Test") print(test) assert test == ref
def test_wlvllogg_import_from_diveroffice_files_cancel(self): files = [('Location=rb2', 'Date/time,Water head[cm],Temperature[°C]', '2016/03/15 10:30:00,1,10', '2016/03/15 11:00:00,11,101')] db_utils.sql_alter_db( '''INSERT INTO obs_points (obsid) VALUES ('Rb1')''') DiverofficeImport.charsetchoosen = 'utf-8' with utils.tempinput('\n'.join(files[0]), DiverofficeImport.charsetchoosen) as f1: filenames = [f1] utils_askuser_answer_no_obj = MockUsingReturnValue(None) utils_askuser_answer_no_obj.result = 0 utils_askuser_answer_no = MockUsingReturnValue( utils_askuser_answer_no_obj) @mock.patch('import_data_to_db.utils.NotFoundQuestion') @mock.patch('db_utils.QgsProject.instance', utils_for_tests.MidvattenTestPostgisNotCreated. mock_instance_settings_database) @mock.patch('db_utils.get_postgis_connections', utils_for_tests.MidvattenTestPostgisNotCreated. mock_postgis_connections) @mock.patch('import_data_to_db.utils.Askuser') @mock.patch('qgis.utils.iface', autospec=True) @mock.patch('qgis.PyQt.QtWidgets.QInputDialog.getText') @mock.patch('import_data_to_db.utils.pop_up_info', autospec=True) @mock.patch('import_data_to_db.utils.select_files') def _test_wlvllogg_import_from_diveroffice_files( self, filenames, mock_filenames, mock_skippopup, mock_encoding, mock_iface, mock_askuser, mock_notfoundquestion): mock_notfoundquestion.return_value.answer = 'cancel' mock_notfoundquestion.return_value.value = 'rb1' mock_notfoundquestion.return_value.reuse_column = 'location' mock_filenames.return_value = filenames mock_encoding.return_value = ['utf-8'] ms = MagicMock() ms.settingsdict = OrderedDict() importer = DiverofficeImport(self.iface.mainWindow(), ms) importer.select_files_and_load_gui() importer.import_all_data.checked = True importer.confirm_names.checked = False answer = importer.start_import( importer.files, importer.skip_rows.checked, importer.confirm_names.checked, importer.import_all_data.checked) return answer answer = _test_wlvllogg_import_from_diveroffice_files( self, filenames) test_string = utils_for_tests.create_test_string( db_utils.sql_load_fr_db( '''SELECT obsid, date_time, head_cm, temp_degc, cond_mscm, level_masl, comment FROM w_levels_logger''' )) reference_string = r'''(True, [])''' assert test_string == reference_string
def _test_export_csv(self, mock_iface, mock_savepath): mock_savepath.return_value = u'/tmp/' utils.sql_alter_db(u'''insert into obs_points (obsid, geometry) values ("P1", GeomFromText('POINT(633466, 711659)', 3006))''') utils.sql_alter_db(u'''insert into zz_staff (staff) values ('s1')''') utils.sql_alter_db(u'''insert into comments (obsid, date_time, staff, comment) values ('P1', '2015-01-01 00:00:00', 's1', 'comment1')''') utils.sql_alter_db(u'''insert into w_qual_lab (obsid, parameter, report, staff) values ('P1', 'labpar1', 'report1', 's1')''') utils.sql_alter_db(u'''insert into w_qual_field (obsid, parameter, staff, date_time) values ('P1', 'labpar1', 's1', '2015-01-01 01:00:00')''') utils.sql_alter_db(u'''insert into w_flow (obsid, instrumentid, flowtype, date_time, unit) values ('P1', 'inst1', 'Momflow', '2015-04-13 00:00:00', 'l/s')''') utils.sql_alter_db(u'''insert into w_levels (obsid, date_time, meas) values ('P1', '2015-01-02 00:00:01', '2')''') utils.sql_alter_db(u'''insert into stratigraphy (obsid, stratid) values ('P1', 'strat1')''') utils.sql_alter_db(u'''insert into obs_lines (obsid) values ('L1')''') utils.sql_alter_db(u'''insert into seismic_data (obsid, length) values ('L1', '5')''') utils.sql_alter_db(u'''insert into meteo (obsid, instrumentid, parameter, date_time) values ('P1', 'meteoinst', 'precip', '2017-01-01 00:19:00')''') self.midvatten.export_csv() file_contents = [] for filename in TestExport.exported_csv_files_no_zz: with io.open(filename, 'r', encoding='utf-8') as f: file_contents.append(os.path.basename(filename) + '\n') file_contents.append([l.replace('\r', '') for l in f]) test_string = utils_for_tests.create_test_string(file_contents) with io.open('/tmp/refstring.txt', 'w', encoding='utf-8') as of: of.write(test_string) reference_string = '\n'.join([ "[obs_points.csv", ", [obsid;name;place;type;length;drillstop;diam;material;screen;capacity;drilldate;wmeas_yn;wlogg_yn;east;north;ne_accur;ne_source;h_toc;h_tocags;h_gs;h_accur;h_syst;h_source;source;com_onerow;com_html;geometry", ", P1;;;;;;;;;;;;;;;;;;;;;;;;;;", "], comments.csv", ", [obsid;date_time;comment;staff", ", P1;2015-01-01 00:00:00;comment1;s1", "], w_levels.csv", ", [obsid;date_time;meas;h_toc;level_masl;comment", ", P1;2015-01-02 00:00:01;2.0;;;", "], w_flow.csv", ", [obsid;instrumentid;flowtype;date_time;reading;unit;comment", ", P1;inst1;Momflow;2015-04-13 00:00:00;;l/s;", "], w_qual_lab.csv", ", [obsid;depth;report;project;staff;date_time;anameth;parameter;reading_num;reading_txt;unit;comment", ", P1;;report1;;s1;;;labpar1;;;;", "], w_qual_field.csv", ", [obsid;staff;date_time;instrument;parameter;reading_num;reading_txt;unit;depth;comment", ", P1;s1;2015-01-01 01:00:00;;labpar1;;;;;", "], stratigraphy.csv", ", [obsid;stratid;depthtop;depthbot;geology;geoshort;capacity;development;comment", ", P1;strat1;;;;;;;", "], meteo.csv", ", [obsid;instrumentid;parameter;date_time;reading_num;reading_txt;unit;comment", ", P1;meteoinst;precip;2017-01-01 00:19:00;;;;", "], obs_lines.csv", ", [obsid;name;place;type;source;geometry", ", L1;;;;;", "], seismic_data.csv", ", [obsid;length;ground;bedrock;gw_table;comment", ", L1;5.0;;;;", "]]"]) assert test_string == reference_string
def test_plot_section_length_along_slope(self, mock_messagebar): db_utils.sql_alter_db('''INSERT INTO obs_lines (obsid, geometry) VALUES ('L1', ST_GeomFromText('LineString(2 0, 10 10)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P1', ST_GeomFromText('POINT(1 0)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P2', ST_GeomFromText('POINT(3 0)', 3006))''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P3', ST_GeomFromText('POINT(5 0)', 3006))''') self.create_and_select_vlayer() @mock.patch('midvatten_utils.getselectedobjectnames', autospec=True) @mock.patch('qgis.utils.iface', autospec=True) def _test(midvatten, vlayer, mock_iface, mock_getselectedobjectnames): mock_iface.mapCanvas.return_value.currentLayer.return_value = vlayer mock_getselectedobjectnames.return_value = ('P1', 'P2', 'P3') mock_mapcanvas = mock_iface.mapCanvas.return_value mock_mapcanvas.layerCount.return_value = 0 midvatten.plot_section() self.myplot = midvatten.myplot self.myplot.drillstoplineEdit.setText("%berg%") self.myplot.draw_plot() _test(self.midvatten, self.vlayer) test_string = utils_for_tests.create_test_string(self.myplot.LengthAlong) assert any([test_string == "[ 0. 0.62469505 1.87408514]", test_string == "[0. 0.62469505 1.87408514]"]) assert not mock_messagebar.warning.called assert not mock_messagebar.critical.called
def test_calibrlogger_calc_best_fit_add_no_matches_same_to_date( self, mock_messagebar, skip_popup): db_utils.sql_alter_db("INSERT INTO obs_points (obsid) VALUES ('rb1')") db_utils.sql_alter_db( "INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)" ) db_utils.sql_alter_db( "INSERT INTO w_levels_logger (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 01:00', 50)" ) calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms) calibrlogger.update_plot() calibrlogger.loggerpos_masl_or_offset_state = 2 calibrlogger.FromDateTime.setDateTime( date_utils.datestring_to_date('2010-02-01 01:00')) calibrlogger.ToDateTime.setDateTime( date_utils.datestring_to_date('2017-02-01 01:00')) gui_utils.set_combobox(calibrlogger.combobox_obsid, 'rb1 (uncalibrated)') calibrlogger.bestFitSearchRadius.setText('2 hours') calibrlogger.calc_best_fit() test = utils_for_tests.create_test_string( db_utils.sql_load_fr_db('SELECT * FROM w_levels_logger')) ref = '(True, [(rb1, 2017-02-01 01:00, None, None, None, 50.0, None)])' print(test) assert test == ref
def test_calibrlogger_set_log_pos(self, mock_messagebar): db_utils.sql_alter_db("INSERT INTO obs_points (obsid) VALUES ('rb1')") db_utils.sql_alter_db( "INSERT INTO w_levels (obsid, date_time, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100)" ) db_utils.sql_alter_db( "INSERT INTO w_levels_logger (obsid, date_time, head_cm) VALUES ('rb1', '2017-02-01 00:00', 100)" ) calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms) calibrlogger.update_plot() calibrlogger.FromDateTime.setDateTime( date_utils.datestring_to_date('2000-01-01 00:00:00')) calibrlogger.LoggerPos.setText('2') gui_utils.set_combobox(calibrlogger.combobox_obsid, 'rb1 (uncalibrated)') calibrlogger.set_logger_pos() print(str(mock_messagebar.mock_calls)) test = utils_for_tests.create_test_string( db_utils.sql_load_fr_db('SELECT * FROM w_levels_logger')) ref = '(True, [(rb1, 2017-02-01 00:00, 100.0, None, None, 3.0, None)])' print(test) assert test == ref
def test_calc_selected(self, mock_selected_obsids): mock_selected_obsids.return_value = [u'rb1'] db_utils.sql_alter_db( u'''INSERT INTO obs_points (obsid, h_toc) VALUES ('rb1', 1)''') db_utils.sql_alter_db( u'''INSERT into w_levels (obsid, meas, date_time) VALUES ('rb1', 222, '2005-01-01 00:00:00')''' ) db_utils.sql_alter_db( u'''INSERT INTO obs_points (obsid, h_toc) VALUES ('rb2', 4)''') db_utils.sql_alter_db( u'''INSERT into w_levels (obsid, meas, date_time) VALUES ('rb2', 444, '2005-01-01 00:00:00')''' ) self.calclvl.FromDateTime = QtGui.QDateTimeEdit() self.calclvl.FromDateTime.setDateTime( datestring_to_date(u'2000-01-01 00:00:00')) self.calclvl.ToDateTime = QtGui.QDateTimeEdit() self.calclvl.ToDateTime.setDateTime( datestring_to_date(u'2010-01-01 00:00:00')) self.calclvl.calcselected() test_string = utils_for_tests.create_test_string( db_utils.sql_load_fr_db( u'SELECT obsid, date_time, meas, h_toc, level_masl FROM w_levels ORDER BY obsid' )) reference_string = u'(True, [(rb1, 2005-01-01 00:00:00, 222.0, 1.0, -221.0), (rb2, 2005-01-01 00:00:00, 444.0, None, None)])' assert test_string == reference_string
def test_export_spatialite_zz_tables(self, mock_skip_popup, mock_iface, mock_find_layer, mock_newdbpath, mock_verify, mock_locale, mock_createdb_crs_question, mock_messagebar): mock_find_layer.return_value.crs.return_value.authid.return_value = 'EPSG:3006' mock_createdb_crs_question.return_value = [3006, True] dbconnection = db_utils.DbConnectionManager() mock_newdbpath.return_value = (EXPORT_DB_PATH, '') mock_verify.return_value = 0 """ insert into zz_strat(geoshort,strata) values('land fill','fyll'); insert into zz_stratigraphy_plots (strata,color_mplot,hatch_mplot,color_qt,brush_qt) values('torv','DarkGray','+','darkGray','NoBrush'); insert into zz_capacity (capacity,explanation) values('6 ','mycket god'); insert into zz_capacity (capacity,explanation) values('6+','mycket god'); insert into zz_capacity_plots (capacity,color_qt) values('', 'gray'); """ db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, geometry) VALUES ('P1', ST_GeomFromText('POINT(633466 711659)', 3006))''', dbconnection=dbconnection) dbconnection.execute('''PRAGMA foreign_keys='off' ''') dbconnection.execute('''UPDATE zz_strat SET strata = 'filling' WHERE geoshort = 'land fill' ''') dbconnection.execute('''INSERT INTO zz_stratigraphy_plots (strata,color_mplot,hatch_mplot,color_qt,brush_qt) values ('filling','Yellow','+','darkGray','NoBrush') ''') dbconnection.execute('''UPDATE zz_stratigraphy_plots SET color_mplot = 'OrangeFIX' WHERE strata = 'made ground' ''') dbconnection.execute('''UPDATE zz_capacity SET explanation = 'anexpl' WHERE capacity = 0 ''') dbconnection.execute('''UPDATE zz_capacity_plots SET color_qt = 'whiteFIX' WHERE capacity = 0 ''') #print(str(dbconnection.execute_and_fetchall('select * from zz_strat'))) dbconnection.commit_and_closedb() print("Before export") mock_locale.return_value.answer = 'ok' mock_locale.return_value.value = 'en_US' self.midvatten.export_spatialite() sql_list = ['''SELECT geoshort, strata FROM zz_strat WHERE geoshort IN ('land fill', 'rock') ''', '''SELECT strata, color_mplot FROM zz_stratigraphy_plots WHERE strata IN ('made ground', 'rock', 'filling') ''', '''SELECT capacity, explanation FROM zz_capacity WHERE capacity IN (0, 1)''', '''SELECT capacity, color_qt FROM zz_capacity_plots WHERE capacity IN (0, 1) '''] conn = db_utils.connect_with_spatialite_connect(EXPORT_DB_PATH) curs = conn.cursor() test_list = [] for sql in sql_list: test_list.append('\n' + sql + '\n') test_list.append(curs.execute(sql).fetchall()) conn.commit() conn.close() test_string = utils_for_tests.create_test_string(test_list) reference_string = ['''[''', '''SELECT geoshort, strata FROM zz_strat WHERE geoshort IN ('land fill', 'rock') ''', ''', [(land fill, filling), (rock, rock)], ''', '''SELECT strata, color_mplot FROM zz_stratigraphy_plots WHERE strata IN ('made ground', 'rock', 'filling') ''', ''', [(filling, Yellow), (made ground, OrangeFIX), (rock, red)], ''', '''SELECT capacity, explanation FROM zz_capacity WHERE capacity IN (0, 1)''', ''', [(0, anexpl), (1, above gwl)], ''', '''SELECT capacity, color_qt FROM zz_capacity_plots WHERE capacity IN (0, 1) ''', ''', [(0, whiteFIX), (1, red)]]'''] reference_string = '\n'.join(reference_string) assert test_string == reference_string
def test_alter_data(self): observation = {u'sublocation': u'1'} self.staff_question.staff = u'teststaff' test_string = create_test_string(self.staff_question.alter_data(observation)) reference_string = u'{staff: teststaff, sublocation: 1}' assert test_string == reference_string
def test_wlvllogg_import_from_diveroffice_files_skip_missing_water_level(self): files = [('Location=rb1', 'Date/time,Water head[cm],Temperature[°C]', '2016/03/15 10:30:00,1,10', '2016/03/15 11:00:00,,101'), ('Location=rb2', 'Date/time,Water head[cm],Temperature[°C]', '2016/04/15 10:30:00,2,20', '2016/04/15 11:00:00,21,201'), ('Location=rb3', 'Date/time,Water head[cm],Temperature[°C],Conductivity[mS/cm]', '2016/05/15 10:30:00,3,30,5', '2016/05/15 11:00:00,31,301,6') ] db_utils.sql_alter_db('''INSERT INTO obs_points (obsid) VALUES ('rb1')''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid) VALUES ('rb2')''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid) VALUES ('rb3')''') db_utils.sql_alter_db('''INSERT INTO w_levels_logger (obsid, date_time, head_cm) VALUES ('rb1', '2016-03-15 10:31', '5.0')''') DiverofficeImport.charsetchoosen = 'utf-8' with utils.tempinput('\n'.join(files[0]), DiverofficeImport.charsetchoosen) as f1: with utils.tempinput('\n'.join(files[1]), DiverofficeImport.charsetchoosen) as f2: with utils.tempinput('\n'.join(files[2]), DiverofficeImport.charsetchoosen) as f3: filenames = [f1, f2, f3] @mock.patch('import_data_to_db.utils.NotFoundQuestion') @mock.patch('db_utils.QgsProject.instance', utils_for_tests.MidvattenTestPostgisNotCreated.mock_instance_settings_database) @mock.patch('db_utils.get_postgis_connections', utils_for_tests.MidvattenTestPostgisNotCreated.mock_postgis_connections) @mock.patch('import_data_to_db.utils.Askuser') @mock.patch('qgis.utils.iface', autospec=True) @mock.patch('qgis.PyQt.QtWidgets.QInputDialog.getText') @mock.patch('import_data_to_db.utils.pop_up_info', autospec=True) @mock.patch('import_data_to_db.utils.select_files') def _test_wlvllogg_import_from_diveroffice_files(self, filenames, mock_filenames, mock_skippopup, mock_encoding, mock_iface, mock_askuser, mock_notfoundquestion): mock_notfoundquestion.return_value.answer = 'ok' mock_notfoundquestion.return_value.value = 'rb1' mock_notfoundquestion.return_value.reuse_column = 'location' mock_filenames.return_value = filenames mock_encoding.return_value = ['utf-8'] ms = MagicMock() ms.settingsdict = OrderedDict() importer = DiverofficeImport(self.iface.mainWindow(), ms) importer.select_files_and_load_gui() importer.import_all_data.checked = True importer.confirm_names.checked = False importer.skip_rows.checked = True importer.start_import(importer.files, importer.skip_rows.checked, importer.confirm_names.checked, importer.import_all_data.checked) _test_wlvllogg_import_from_diveroffice_files(self, filenames) test_string = utils_for_tests.create_test_string(db_utils.sql_load_fr_db('''SELECT obsid, date_time, head_cm, temp_degc, cond_mscm, level_masl, comment FROM w_levels_logger''')) reference_string = r'''(True, [(rb1, 2016-03-15 10:31, 5.0, None, None, None, None), (rb1, 2016-03-15 10:30:00, 1.0, 10.0, None, None, None), (rb2, 2016-04-15 10:30:00, 2.0, 20.0, None, None, None), (rb2, 2016-04-15 11:00:00, 21.0, 201.0, None, None, None), (rb3, 2016-05-15 10:30:00, 3.0, 30.0, 5.0, None, None), (rb3, 2016-05-15 11:00:00, 31.0, 301.0, 6.0, None, None)])''' assert test_string == reference_string
def test_create_export_printlist_correct_order(mock_latlons, mock_MessagebarAndLog): mock_latlons.return_value = { u'1': (u'lat1', u'lon1'), u'2': (u'lat2', u'lon2'), u'4': (u'lat4', u'lon4') } tables_columns = OrderedDict([(u'testtable', (u'col1', u'col2'))]) stored_settings = [ (0, ((u'input_field_group_list', [u'par4;type1;hint1', u'par1;type1;hint1']), (u'sublocation_suffix', u'group'), (u'location_suffix', u'proj'))), (1, ((u'input_field_group_list', [u'par2;type2;hint2']), (u'sublocation_suffix', u'group'), (u'location_suffix', u'proj2'))) ] mock_connect = MagicMock() parameter_groups = ExportToFieldLogger.create_parameter_groups_using_stored_settings( stored_settings, mock_connect) parameter_groups[0]._obsid_list.paste_data([u'1', u'4']) parameter_groups[1]._obsid_list.paste_data([u'2', u'3', u'4']) printlist = ExportToFieldLogger.create_export_printlist( parameter_groups) test_string = create_test_string(printlist) reference_string = u'[FileVersion 1;3, NAME;INPUTTYPE;HINT, par4;type1;hint1 , par1;type1;hint1 , par2;type2;hint2 , NAME;SUBNAME;LAT;LON;INPUTFIELD, 1.proj;1.proj.group;lat1;lon1;par4|par1, 2.proj2;2.proj2.group;lat2;lon2;par2, 4.proj;4.proj.group;lat4;lon4;par4|par1, 4.proj2;4.proj2.group;lat4;lon4;par2]' assert reference_string == test_string
def test_interlab4_full_test_to_db_staff_0(self): db_utils.sql_alter_db(u'''INSERT INTO obs_points (obsid) VALUES ('anobsid')''') interlab4_lines = ( '#Interlab', '#Version=4.0', '#Tecken=UTF-8', '#Textavgränsare=Nej', '#Decimaltecken=,', '#Provadm', 'Lablittera;Namn;Adress;Postnr;Ort;Kommunkod;Projekt;Laboratorium;Provtyp;Provtagare;Registertyp;ProvplatsID;Provplatsnamn;Specifik provplats;Provtagningsorsak;Provtyp;Provtypspecifikation;Bedömning;Kemisk bedömning;Mikrobiologisk bedömning;Kommentar;År;Provtagningsdatum;Provtagningstid;Inlämningsdatum;Inlämningstid;', 'DM-990908-2773;MFR;PG Vejdes väg 15;351 96;Växjö;0780;Demoproj;Demo-Laboratoriet;NSG;0;;Demo1 vattenverk;;Föreskriven regelbunden undersökning enligt SLVFS 2001:30;Dricksvatten enligt SLVFS 2001:30;Utgående;Nej;Tjänligt;;;;2010;2010-09-07;10:15;2010-09-07;14:15;', '#Provdat', 'Lablittera;Metodbeteckning;Parameter;Mätvärdetext;Mätvärdetal;Mätvärdetalanm;Enhet;Rapporteringsgräns;Detektionsgräns;Mätosäkerhet;Mätvärdespår;Parameterbedömning;Kommentar;', 'DM-990908-2773;SS-EN ISO 7887-1/4;Kalium;<2,5;2,5;;mg/l Pt;;;;;;;', 'DM-990908-2773;SS-EN ISO 7887-1/4;Kalium;<1;1;;mg/l Pt;;;;;;;', '#S**t' ) with utils.tempinput(u'\n'.join(interlab4_lines), 'utf-8') as filename: @mock.patch('midvatten_utils.NotFoundQuestion') @mock.patch('db_utils.QgsProject.instance', utils_for_tests.MidvattenTestSpatialiteNotCreated.mock_instance_settings_database) @mock.patch('import_data_to_db.utils.Askuser', mocks_for_tests.mock_askuser.get_v) @mock.patch('qgis.utils.iface', autospec=True) @mock.patch('import_data_to_db.utils.pop_up_info', autospec=True) @mock.patch('import_data_to_db.qgis.PyQt.QtWidgets.QFileDialog.getOpenFileNames') def _test(self, filename, mock_filenames, mock_skippopup, mock_iface, mock_not_found_question): mock_not_found_question.return_value.answer = 'ok' mock_not_found_question.return_value.value = 'anobsid' mock_not_found_question.return_value.reuse_column = 'obsid' mock_filenames.return_value = [[filename]] importer = Interlab4Import(self.iface.mainWindow(), self.ms) importer.parse_observations_and_populate_gui() importer.start_import(importer.all_lab_results, importer.metadata_filter.get_selected_lablitteras()) _test(self, filename) test_string = utils_for_tests.create_test_string(db_utils.sql_load_fr_db(u'''SELECT * FROM w_qual_lab''')) reference_string = '''(True, [(anobsid, None, DM-990908-2773, Demoproj, 0, 2010-09-07 10:15:00, SS-EN ISO 7887-1/4, Kalium, 2.5, <2,5, mg/l Pt, provtagningsorsak: Dricksvatten enligt SLVFS 2001:30. provtyp: Utgående. provtypspecifikation: Nej. bedömning: Tjänligt. provplatsid: Demo1 vattenverk. specifik provplats: Föreskriven regelbunden undersökning enligt SLVFS 2001:30), (anobsid, None, DM-990908-2773, Demoproj, 0, 2010-09-07 10:15:00, SS-EN ISO 7887-1/4, Kalium (dubblett 1), 1.0, <1, mg/l Pt, provtagningsorsak: Dricksvatten enligt SLVFS 2001:30. provtyp: Utgående. provtypspecifikation: Nej. bedömning: Tjänligt. provplatsid: Demo1 vattenverk. specifik provplats: Föreskriven regelbunden undersökning enligt SLVFS 2001:30)])''' print(reference_string) print(test_string) assert test_string == reference_string test_string = utils_for_tests.create_test_string(db_utils.sql_load_fr_db(u'''SELECT * FROM zz_staff''')) reference_string = '(True, [(0, None)])' assert test_string == reference_string
def test_prepare_w_flow_data(self, mock_flow_instruments, mock_instrument_not_found): mock_flow_instruments = [True, {}] mock_instrument_not_found.return_value.answer = u'ok' mock_instrument_not_found.return_value.value = u'inst1' observations = [{u'obsid': u'obs1', u'flowtype': u'atype', u'date_time': datestring_to_date(u'2016-01-01 00:00'), u'unit': u'aunit', u'value': u'123,4'}] test_string = create_test_string(FieldloggerImport.prepare_w_flow_data(observations)) reference_string = u'[[obsid, instrumentid, flowtype, date_time, reading, unit, comment], [obs1, inst1, atype, 2016-01-01 00:00:00, 123.4, aunit, ]]' assert test_string == reference_string
def test_alter_data(self, mock_get_all_obsids): mock_get_all_obsids.return_value = [u'rb1', u'rb2'] observations = [{u'sublocation': u'rb1'}, {u'sublocation': u'rb2'}] test_string = create_test_string(self.obsid_filter.alter_data(observations)) reference_string = u'[{obsid: rb1, sublocation: rb1}, {obsid: rb2, sublocation: rb2}]' assert test_string == reference_string
def test_sql_to_parameters_units_tuple(self, mock_sqlload): mock_sqlload.return_value = (True, [(u'par1', u'un1'), (u'par2', u'un2')]) test_string = create_test_string( utils.sql_to_parameters_units_tuple(u'sql')) reference_string = u'''((par1, (un1)), (par2, (un2)))''' assert test_string == reference_string
def test_export_spatialite_with_umlauts(self, mock_skip_popup, mock_iface, mock_find_layer, mock_newdbpath, mock_verify, mock_selection, mock_locale, mock_createdb_crs_question, mock_messagebar): mock_selection.return_value = ('åäö', ) mock_find_layer.return_value.crs.return_value.authid.return_value = 'EPSG:3006' mock_createdb_crs_question.return_value = [3006, True] mock_newdbpath.return_value = (EXPORT_DB_PATH, '') mock_verify.return_value = 0 db_utils.sql_alter_db( '''INSERT INTO obs_points (obsid, geometry) VALUES ('åäö', ST_GeomFromText('POINT(633466 711659)', 3006))''' ) db_utils.sql_alter_db('''INSERT INTO zz_staff (staff) VALUES ('s1')''') db_utils.sql_alter_db( '''INSERT INTO comments (obsid, date_time, staff, comment) VALUES ('åäö', '2015-01-01 00:00:00', 's1', 'comment1')''' ) mock_locale.return_value.answer = 'ok' mock_locale.return_value.value = 'sv_SE' self.midvatten.export_spatialite() sql_list = [ '''select obsid, ST_AsText(geometry) from obs_points''', '''select staff from zz_staff''', '''select obsid, date_time, staff, comment from comments''' ] conn = db_utils.connect_with_spatialite_connect(EXPORT_DB_PATH) curs = conn.cursor() test_list = [] for sql in sql_list: test_list.append('\n' + sql + '\n') test_list.append(curs.execute(sql).fetchall()) conn.commit() conn.close() test_string = utils_for_tests.create_test_string(test_list) reference_string = [ '''[''', '''select obsid, ST_AsText(geometry) from obs_points''', ''', [(åäö, POINT(633466 711659))], ''', '''select staff from zz_staff''', ''', [(s1)], ''', '''select obsid, date_time, staff, comment from comments''', ''', [(åäö, 2015-01-01 00:00:00, s1, comment1)]]''' ] reference_string = '\n'.join(reference_string) print("Ref") print(reference_string) print("Test") print(test_string) assert test_string == reference_string
def test_create_parameter_groups_using_stored_settings(): stored_settings = [(0, ((u'parameter_list', [u'p1.u1;it1:h1, p2.u2;it2:h2']), (u'key0_2', u'value0_2'))), (1, ((u'location_suffix', u'value1_1'), (u'key1_2', u'value1_2')))] mock_connect = MagicMock() parameter_groups = ExportToFieldLogger.create_parameter_groups_using_stored_settings(stored_settings, mock_connect) stored_settings = create_test_string(ExportToFieldLogger.update_stored_settings(parameter_groups)) reference = u'[[0, ((parameter_list, [p1.u1;it1:h1, p2.u2;it2:h2]))], [1, ((location_suffix, value1_1))]]' assert stored_settings == reference
def test_translate_and_reorder_file_data(self): file_data = [['obsid', 'acol', 'acol2'], ['rb1', '1', '2']] translation_dict = {'obsid': ['obsid'], 'acol': ['num', 'txt'], 'acol2': ['comment']} test_string = utils_for_tests.create_test_string(GeneralCsvImportGui.translate_and_reorder_file_data(file_data, translation_dict)) reference_string = '[[num, txt, comment, obsid], [1, 1, 2, rb1]]' assert test_string == reference_string
def test_filter_dates_from_filedata(self): file_data = [['obsid', 'date_time'], ['rb1', '2015-05-01 00:00:00'], ['rb1', '2016-05-01 00:00'], ['rb2', '2015-05-01 00:00:00'], ['rb2', '2016-05-01 00:00'], ['rb3', '2015-05-01 00:00:00'], ['rb3', '2016-05-01 00:00']] obsid_last_imported_dates = {'rb1': [(datestring_to_date('2016-01-01 00:00:00'),)], 'rb2': [(datestring_to_date('2017-01-01 00:00:00'),)]} test_file_data = utils_for_tests.create_test_string(DiverofficeImport.filter_dates_from_filedata(file_data, obsid_last_imported_dates)) reference_file_data = '''[[obsid, date_time], [rb1, 2016-05-01 00:00], [rb3, 2015-05-01 00:00:00], [rb3, 2016-05-01 00:00]]''' assert test_file_data == reference_file_data
def test_create_db_se(self, mock_locale, mock_iface): mock_locale.return_value.answer = u'ok' mock_locale.return_value.value = u'sv_SE' self.midvatten.new_db() test_string = utils_for_tests.create_test_string(utils.sql_load_fr_db(u'select * from zz_strat')) reference_string = ur"""(True, [(berg, berg), (b, berg), (rock, berg), (ro, berg), (grovgrus, grovgrus), (grg, grovgrus), (coarse gravel, grovgrus), (cgr, grovgrus), (grus, grus), (gr, grus), (gravel, grus), (mellangrus, mellangrus), (grm, mellangrus), (medium gravel, mellangrus), (mgr, mellangrus), (fingrus, fingrus), (grf, fingrus), (fine gravel, fingrus), (fgr, fingrus), (grovsand, grovsand), (sag, grovsand), (coarse sand, grovsand), (csa, grovsand), (sand, sand), (sa, sand), (mellansand, mellansand), (sam, mellansand), (medium sand, mellansand), (msa, mellansand), (finsand, finsand), (saf, finsand), (fine sand, finsand), (fsa, finsand), (silt, silt), (si, silt), (lera, lera), (ler, lera), (le, lera), (clay, lera), (cl, lera), (morän, morän), (moran, morän), (mn, morän), (till, morän), (ti, morän), (torv, torv), (t, torv), (peat, torv), (pt, torv), (fyll, fyll), (fyllning, fyll), (f, fyll), (made ground, fyll), (mg, fyll), (land fill, fyll)])""" assert test_string == reference_string current_locale = utils.getcurrentlocale()[0] assert current_locale == u'sv_SE'
def test_update_stored_settings(): export_objects = [MagicMock(), MagicMock()] export_objects[0].get_settings.return_value = ((u'key0_1', u'value0_1'), (u'key0_2', u'value0_2')) export_objects[1].get_settings.return_value = ((u'key1_1', u'value1_1'), (u'key1_2', u'value1_2')) stored_settings = ExportToFieldLogger.update_stored_settings(export_objects) test_string = create_test_string(stored_settings) reference_string = u'[(0, ((key0_1, value0_1), (key0_2, value0_2))), (1, ((key1_1, value1_1), (key1_2, value1_2)))]' assert test_string == reference_string
def test_update_stored_settings(): parameter_groups = [MagicMock(), MagicMock()] parameter_groups[0].get_settings.return_value = ((u'key0_1', u'value0_1'), (u'key0_2', u'value0_2')) parameter_groups[1].get_settings.return_value = ((u'key1_1', u'value1_1'), (u'key1_2', u'value1_2')) stored_settings = ExportToFieldLogger.update_stored_settings(parameter_groups) test_string = create_test_string(stored_settings) reference_string = u'[[0, ((key0_1, value0_1), (key0_2, value0_2))], [1, ((key1_1, value1_1), (key1_2, value1_2))]]' assert test_string == reference_string
def test_add_east_north_from_geometry(self): """ Test that adding triggers and adding obsid with geometry also adds east, north :return: """ utils.add_triggers_to_obs_points() utils.sql_alter_db(u"""INSERT INTO obs_points (obsid, geometry) VALUES ('rb1', GeomFromText('POINT(1.0 1.0)', 3006))""") test_string = utils_for_tests.create_test_string(utils.sql_load_fr_db(u'select obsid, east, north, AsText(geometry) from obs_points')) reference_string = u'(True, [(rb1, 1.0, 1.0, POINT(1 1))])' assert test_string == reference_string
def test_calibrlogger_last_calibration(self, mock_messagebar): db_utils.sql_alter_db(u"INSERT INTO obs_points (obsid) VALUES ('rb1')") db_utils.sql_alter_db(u"INSERT INTO w_levels_logger (obsid, date_time, head_cm, level_masl) VALUES ('rb1', '2017-02-01 00:00', 50, 100)") db_utils.sql_alter_db(u"INSERT INTO w_levels_logger (obsid, date_time, head_cm, level_masl) VALUES ('rb1', '2017-03-01 00:00', 100, NULL)") calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms) calibrlogger.update_plot() test = utils_for_tests.create_test_string(calibrlogger.getlastcalibration(calibrlogger.selected_obsid)) ref = u'[(2017-02-01 00:00, 99.5)]' assert test == ref
def test_get_stored_settings_parameter_browser_real_parameter_name(): mock_ms = MagicMock() mock_ms.settingsdict = { u"fieldlogger_pbrowser": u'[(0, (u"input_field_group_list", [u"Aveflow.m3/s;numberDecimal|numberSigned;measure flow", u"Accflow.m3;numberDecimal|numberSigned;measure flow"]))]' } settingskey = u'fieldlogger_pbrowser' test_string = create_test_string( utils.get_stored_settings(mock_ms, settingskey)) reference_string = u'[(0, (input_field_group_list, [Aveflow.m3/s;numberDecimal|numberSigned;measure flow, Accflow.m3;numberDecimal|numberSigned;measure flow]))]' assert test_string == reference_string
def test_get_stored_settings(): mock_ms = MagicMock() mock_ms.settingsdict = { u"test_settings_key": u'((0, (u"final_parameter_name", u"testname"), (u"test", u"gotten_test")), (1, (u"key1", u"value1"), (u"key2", u"value2"), (u"key3", u"value3")))' } settingskey = u'test_settings_key' stored_settings = create_test_string( utils.get_stored_settings(mock_ms, settingskey)) reference_string = u'((0, (final_parameter_name, testname), (test, gotten_test)), (1, (key1, value1), (key2, value2), (key3, value3)))' assert stored_settings == reference_string
def test_get_stored_settings_parameter_browser(): mock_ms = MagicMock() mock_ms.settingsdict = { u'fieldlogger_export_parameter_browser': u'((0, (u"input_field_group_list", (u"p1.u1;input;hint", u"np2.u2;input2;hint2"), ), ), )' } settingskey = u'fieldlogger_export_parameter_browser' stored_settings = create_test_string( utils.get_stored_settings(mock_ms, settingskey)) reference_string = u'((0, (input_field_group_list, (p1.u1;input;hint, np2.u2;input2;hint2))))' assert stored_settings == reference_string
def test_get_last_logger_dates(self): db_utils.sql_alter_db('''INSERT INTO obs_points (obsid) VALUES ('rb1')''') db_utils.sql_alter_db('''INSERT INTO obs_points (obsid) VALUES ('rb2')''') db_utils.sql_alter_db('''INSERT INTO w_levels_logger (obsid, date_time) VALUES ('rb1', '2015-01-01 00:00')''') db_utils.sql_alter_db('''INSERT INTO w_levels_logger (obsid, date_time) VALUES ('rb1', '2015-01-01 00:00:00')''') db_utils.sql_alter_db('''INSERT INTO w_levels_logger (obsid, date_time) VALUES ('rb1', '2014-01-01 00:00:00')''') db_utils.sql_alter_db('''INSERT INTO w_levels_logger (obsid, date_time) VALUES ('rb2', '2013-01-01 00:00:00')''') db_utils.sql_alter_db('''INSERT INTO w_levels_logger (obsid, date_time) VALUES ('rb2', '2016-01-01 00:00')''') test_string = create_test_string(utils.get_last_logger_dates()) reference_string = '''{rb1: [(2015-01-01 00:00:00)], rb2: [(2016-01-01 00:00)]}''' assert test_string == reference_string
def test_calcall(self, mock_messagebar): db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, h_toc) VALUES ('rb1', 1)''') db_utils.sql_alter_db('''INSERT into w_levels (obsid, meas, date_time) VALUES ('rb1', 222, '2005-01-01 00:00:00')''') self.calclvl.FromDateTime = QtWidgets.QDateTimeEdit() self.calclvl.FromDateTime.setDateTime(datestring_to_date('2000-01-01 00:00:00')) self.calclvl.ToDateTime = QtWidgets.QDateTimeEdit() self.calclvl.ToDateTime.setDateTime(datestring_to_date('2010-01-01 00:00:00')) self.calclvl.calcall() test_string = utils_for_tests.create_test_string( db_utils.sql_load_fr_db('SELECT obsid, date_time, meas, h_toc, level_masl FROM w_levels')) reference_string = '(True, [(rb1, 2005-01-01 00:00:00, 222.0, 1.0, -221.0)])' assert test_string == reference_string
def test_calibrlogger_set_last_calibration_zero(self, mock_messagebar): db_utils.sql_alter_db(u"INSERT INTO obs_points (obsid) VALUES ('rb1')") db_utils.sql_alter_db(u"INSERT INTO w_levels_logger (obsid, date_time, head_cm, level_masl) VALUES ('rb1', '2017-02-01 00:00', 100, 1)") db_utils.sql_alter_db(u"INSERT INTO w_levels_logger (obsid, date_time, head_cm, level_masl) VALUES ('rb1', '2017-03-01 00:00', 100, NULL)") calibrlogger = Calibrlogger(self.iface.mainWindow(), self.ms) """(level_masl - (head_cm/100))""" calibrlogger.update_plot() res = calibrlogger.getlastcalibration(calibrlogger.selected_obsid) test = utils_for_tests.create_test_string(calibrlogger.INFO.text()) ref = u'Last pos. for logger in rb1 was 0.0 masl at 2017-02-01 00:00' assert test == ref
def test_translate_and_reorder_file_data(self): file_data = [['obsid', 'acol', 'acol2'], ['rb1', '1', '2']] translation_dict = { 'obsid': ['obsid'], 'acol': ['num', 'txt'], 'acol2': ['comment'] } test_string = utils_for_tests.create_test_string( GeneralCsvImportGui.translate_and_reorder_file_data( file_data, translation_dict)) reference_string = '[[num, txt, comment, obsid], [1, 1, 2, rb1]]' assert test_string == reference_string
def test_parse_diveroffice_file_comma_sep_comma_dec_failed(self): f = ('Location=rb1', 'Date/time,Water head[cm],Temperature[°C]', '2016/03/15 10:30:00,26,9,5,18', '2016/03/15 11:00:00,157,7,0,6' ) charset_of_diverofficefile = 'cp1252' with utils.tempinput('\n'.join(f), charset_of_diverofficefile) as path: file_data = DiverofficeImport.parse_diveroffice_file(path, charset_of_diverofficefile) test_string = utils_for_tests.create_test_string(file_data) reference_string = 'cancel' assert test_string == reference_string