def test_on_dialog_response_ok_creates_picture_folders_no_exist(self):
        # make sure thumbnails and pictures folder do not exist.
        import tempfile
        path = tempfile.mktemp()
        # create view and presenter.
        view = MockView(combos={'name_combo': [],
                                'type_combo': []})
        prefs.prefs[bauble.conn_list_pref] = {
            'nugkui': {'default': False,
                       'pictures': path,
                       'type': 'SQLite',
                       'file': path + '.db'}}
        (prefs.prefs[prefs.picture_root_pref],
         prefs.prefs[bauble.conn_default_pref],
         ) = os.path.split(path)
        view.reply_file_chooser_dialog = []
        presenter = ConnMgrPresenter(view)
        dialog = MockDialog()
        view.invoked = []
        # invoke action
        presenter.on_dialog_response(dialog, RESPONSE_OK)

        # check existence of pictures folder
        self.assertTrue(os.path.isdir(path))
        # check existence of thumbnails folder
        self.assertTrue(os.path.isdir(os.path.join(path, 'thumbs')))
 def test_when_user_selects_different_type(self):
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     prefs.prefs[bauble.conn_default_pref] = 'nugkui'
     prefs.prefs[bauble.conn_list_pref] = {
         'nugkui': {'type': 'SQLite',
                    'default': True,
                    'pictures': 'nugkui',
                    'file': 'nugkui.db'},
         'quisquis': {'type': 'PostgreSQL',
                      'passwd': False,
                      'pictures': '',
                      'db': 'quisquis',
                      'host': 'localhost',
                      'user': '******'}}
     presenter = ConnMgrPresenter(view)
     # T_0
     self.assertEquals(presenter.connection_name, 'nugkui')
     self.assertTrue(presenter.view.widget_get_visible(
         'sqlite_parambox'))
     # action
     view.widget_set_value('name_combo', 'quisquis')
     presenter.dbtype = 'PostgreSQL'  # who to trigger this in tests?
     presenter.on_name_combo_changed('name_combo')
     # result
     self.assertEquals(presenter.connection_name, 'quisquis')
     presenter.refresh_view()  # in reality this is triggered by gtk view
     self.assertEquals(presenter.dbtype, 'PostgreSQL')
     ## if the above succeeds, the following is riggered by the view!
     #presenter.on_combo_changed('type_combo', 'PostgreSQL')
     # T_1
     self.assertTrue(presenter.view.widget_get_visible(
         'dbms_parambox'))
 def test_check_parameters_valid(self):
     import copy
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     prefs.prefs[bauble.conn_default_pref] = 'quisquis'
     prefs.prefs[bauble.conn_list_pref] = {
         'quisquis': {'type': 'PostgreSQL',
                      'passwd': False,
                      'pictures': '/tmp/',
                      'db': 'quisquis',
                      'host': 'localhost',
                      'user': '******'}}
     presenter = ConnMgrPresenter(view)
     params = presenter.connections['quisquis']
     valid, message = presenter.check_parameters_valid(params)
     self.assertTrue(valid)
     params = copy.copy(presenter.connections['quisquis'])
     params['user'] = ''
     valid, message = presenter.check_parameters_valid(params)
     self.assertFalse(valid)
     params = copy.copy(presenter.connections['quisquis'])
     params['host'] = ''
     valid, message = presenter.check_parameters_valid(params)
     self.assertFalse(valid)
     sqlite_params = {'type': 'SQLite',
                      'default': False,
                      'file': '/tmp/test.db',
                      'pictures': '/tmp/'}
     params = copy.copy(sqlite_params)
     valid, message = presenter.check_parameters_valid(params)
     self.assertTrue(valid)
     params = copy.copy(sqlite_params)
     params['file'] = '/usr/bin/sh'
     valid, message = presenter.check_parameters_valid(params)
     self.assertFalse(valid)
 def test_connection_uri_property(self):
     view = MockView(combos={'name_combo': [], 'type_combo': []})
     prefs.prefs[bauble.conn_default_pref] = 'quisquis'
     prefs.prefs[bauble.conn_list_pref] = {
         'quisquis': {
             'type': 'PostgreSQL',
             'passwd': False,
             'pictures': '/tmp/',
             'db': 'quisquis',
             'host': 'localhost',
             'user': '******'
         }
     }
     presenter = ConnMgrPresenter(view)
     self.assertEquals(presenter.connection_name, 'quisquis')
     self.assertEquals(presenter.dbtype, 'PostgreSQL')
     ## we need trigger all signals that would go by gtk
     p = presenter.connections[presenter.connection_name]
     presenter.view.widget_set_value('database_entry', p['db'])
     presenter.on_text_entry_changed('database_entry')
     presenter.view.widget_set_value('user_entry', p['user'])
     presenter.on_text_entry_changed('user_entry')
     presenter.view.widget_set_value('host_entry', p['host'])
     presenter.on_text_entry_changed('host_entry')
     self.assertEquals(presenter.connection_uri,
                       'postgresql://pg@localhost/quisquis')
    def test_on_dialog_response_ok_creates_picture_folders_half_exist(self):
        # make sure pictures and thumbs folders respectively do and do not
        # already exist as folders.
        import tempfile
        path = tempfile.mktemp()
        os.mkdir(path)
        view = MockView(combos={'name_combo': [],
                                'type_combo': []})
        prefs.prefs[bauble.conn_list_pref] = {
            'nugkui': {'default': False,
                       'pictures': path,
                       'type': 'SQLite',
                       'file': path + '.db'}}
        (prefs.prefs[prefs.picture_root_pref],
         prefs.prefs[bauble.conn_default_pref],
         ) = os.path.split(path)
        view.reply_file_chooser_dialog = []
        presenter = ConnMgrPresenter(view)
        dialog = MockDialog()
        view.invoked = []
        # invoke action
        presenter.on_dialog_response(dialog, RESPONSE_OK)

        # superfluous action is not performed, view is closed
        # check existence of pictures folder
        self.assertTrue(os.path.isdir(path))
        # check existence of thumbnails folder
        self.assertTrue(os.path.isdir(os.path.join(path, 'thumbs')))
 def test_pictureroot2_not_chosen(self):
     view = MockView(combos={'name_combo': [], 'type_combo': []})
     view.reply_file_chooser_dialog = []
     presenter = ConnMgrPresenter(view)
     presenter.pictureroot = 'previously'
     presenter.on_pictureroot2_btnbrowse_clicked()
     self.assertEquals(presenter.pictureroot, 'previously')
 def test_on_dialog_response_cancel_params_changed(self):
     view = MockView(combos={'name_combo': [], 'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {
         'nugkui': {
             'default': False,
             'pictures': '/tmp/nugkui',
             'type': 'SQLite',
             'file': '/tmp/nugkui.db'
         }
     }
     prefs.prefs[bauble.conn_default_pref] = 'nugkui'
     view.reply_file_chooser_dialog = []
     presenter = ConnMgrPresenter(view)
     ## change something
     view.widget_set_value('usedefaults_chkbx', True)
     presenter.on_usedefaults_chkbx_toggled('usedefaults_chkbx')
     ## press escape
     dialog = MockDialog()
     view.reply_yes_no_dialog = [True]
     view.invoked = []
     presenter.on_dialog_response(dialog, RESPONSE_CANCEL)
     ## question was asked whether to save
     self.assertFalse('run_message_dialog' in view.invoked)
     self.assertTrue('run_yes_no_dialog' in view.invoked)
     self.assertTrue(dialog.hidden)
 def test_pictureroot2_chosen(self):
     view = MockView(combos={'name_combo': [], 'type_combo': []})
     view.reply_file_chooser_dialog.append('chosen')
     presenter = ConnMgrPresenter(view)
     presenter.on_pictureroot2_btnbrowse_clicked()
     presenter.on_text_entry_changed('pictureroot2_entry')
     self.assertEquals(presenter.pictureroot, 'chosen')
    def test_no_connections_then_message(self):
        view = MockView(combos={'name_combo': [], 'type_combo': []})
        prefs.prefs[bauble.conn_list_pref] = {}
        presenter = ConnMgrPresenter(view)

        self.assertFalse(presenter.view.widget_get_visible('expander'))
        self.assertTrue(presenter.view.widget_get_visible('noconnectionlabel'))
 def test_parameters_to_uri_sqlite(self):
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     prefs.prefs[bauble.conn_default_pref] = None
     prefs.prefs[bauble.conn_list_pref] = {}
     presenter = ConnMgrPresenter(view)
     params = {'type': 'SQLite',
               'default': False,
               'file': '/tmp/test.db',
               'pictures': '/tmp/'}
     self.assertEquals(presenter.parameters_to_uri(params),
                       'sqlite:////tmp/test.db')
     params = {'type': 'PostgreSQL',
               'passwd': False,
               'pictures': '/tmp/',
               'db': 'quisquis',
               'host': 'localhost',
               'user': '******'}
     self.assertEquals(presenter.parameters_to_uri(params),
                       'postgresql://pg@localhost/quisquis')
     params = {'type': 'PostgreSQL',
               'passwd': True,
               'pictures': '/tmp/',
               'db': 'quisquis',
               'host': 'localhost',
               'user': '******'}
     view.reply_entry_dialog.append('secret')
     self.assertEquals(presenter.parameters_to_uri(params),
                       'postgresql://*****:*****@localhost/quisquis')
     params = {'type': 'PostgreSQL',
               'passwd': False,
               'pictures': '/tmp/',
               'port': '9876',
               'db': 'quisquis',
               'host': 'localhost',
               'user': '******'}
     self.assertEquals(presenter.parameters_to_uri(params),
                       'postgresql://pg@localhost:9876/quisquis')
     params = {'type': 'PostgreSQL',
               'passwd': True,
               'pictures': '/tmp/',
               'port': '9876',
               'db': 'quisquis',
               'host': 'localhost',
               'user': '******'}
     view.reply_entry_dialog.append('secret')
     self.assertEquals(presenter.parameters_to_uri(params),
                       'postgresql://*****:*****@localhost:9876/quisquis')
     params = {'type': 'PostgreSQL',
               'passwd': False,
               'pictures': '/tmp/',
               'options': ['is_this_possible=no',
                           'why_do_we_test=because'],
               'db': 'quisquis',
               'host': 'localhost',
               'user': '******'}
     self.assertEquals(presenter.parameters_to_uri(params),
                       'postgresql://pg@localhost/quisquis?'
                       'is_this_possible=no&why_do_we_test=because')
 def test_on_dialog_response_cancel(self):
     view = MockView(combos={'name_combo': [], 'type_combo': []})
     view.reply_file_chooser_dialog = []
     presenter = ConnMgrPresenter(view)
     dialog = MockDialog()
     view.reply_yes_no_dialog = [False]
     presenter.on_dialog_response(dialog, RESPONSE_CANCEL)
     self.assertFalse('run_message_dialog' in view.invoked)
     self.assertTrue(dialog.hidden)
 def test_on_dialog_response_ok_invalid_params(self):
     view = MockView(combos={'name_combo': [], 'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {}
     view.reply_file_chooser_dialog = []
     presenter = ConnMgrPresenter(view)
     dialog = MockDialog()
     presenter.on_dialog_response(dialog, RESPONSE_OK)
     self.assertTrue('run_message_dialog' in view.invoked)
     self.assertTrue(dialog.hidden)
 def test_on_dialog_close_or_delete(self):
     view = MockView(combos={'name_combo': [], 'type_combo': []})
     view.reply_file_chooser_dialog = []
     presenter = ConnMgrPresenter(view)
     # T_0
     self.assertFalse(view.get_window().hidden)
     # action
     presenter.on_dialog_close_or_delete("widget")
     # T_1
     self.assertTrue(view.get_window().hidden)
 def test_no_connection_on_add_confirm_negative(self):
     view = MockView(combos={'name_combo': [], 'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {}
     presenter = ConnMgrPresenter(view)
     presenter.view.reply_entry_dialog.append('')
     presenter.on_add_button_clicked('button')
     ## nothing changes
     self.assertFalse(presenter.view.widget_get_visible('expander'))
     self.assertFalse(presenter.view.widget_get_sensitive('connect_button'))
     self.assertTrue(presenter.view.widget_get_visible('noconnectionlabel'))
 def test_no_connection_on_add_confirm_positive(self):
     view = MockView(combos={'name_combo': [], 'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {}
     presenter = ConnMgrPresenter(view)
     presenter.view.reply_entry_dialog.append('conn_name')
     presenter.on_add_button_clicked('button')
     presenter.refresh_view()  # this is done by gtk
     ## visibility swapped
     self.assertTrue(presenter.view.widget_get_visible('expander'))
     self.assertTrue(presenter.view.widget_get_sensitive('connect_button'))
     self.assertFalse(
         presenter.view.widget_get_visible('noconnectionlabel'))
 def test_set_default_toggles_sensitivity(self):
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     prefs.prefs[bauble.conn_default_pref] = 'nugkui'
     prefs.prefs[bauble.conn_list_pref] = {
         'nugkui': {'type': 'SQLite',
                    'default': True,
                    'pictures': 'nugkui',
                    'file': 'nugkui.db'},
         }
     presenter = ConnMgrPresenter(view)
     view.widget_set_value('usedefaults_chkbx', True)
     presenter.on_usedefaults_chkbx_toggled('usedefaults_chkbx')
     self.assertFalse(view.widget_get_sensitive('file_entry'))
 def test_one_connection_shown_and_selected_sqlite(self):
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {
         'nugkui': {'default': True,
                    'pictures': 'nugkui',
                    'type': 'SQLite',
                    'file': 'nugkui.db'}}
     prefs.prefs[bauble.conn_default_pref] = 'nugkui'
     presenter = ConnMgrPresenter(view)
     self.assertEquals(presenter.connection_name, 'nugkui')
     self.assertTrue(presenter.view.widget_get_visible(
         'expander'))
     self.assertFalse(presenter.view.widget_get_visible(
         'noconnectionlabel'))
 def test_one_connection_on_remove_confirm_negative(self):
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {
         'nugkui': {'default': True,
                    'pictures': 'nugkui',
                    'type': 'SQLite',
                    'file': 'nugkui.db'}}
     presenter = ConnMgrPresenter(view)
     presenter.view.reply_yes_no_dialog.append(False)
     presenter.on_remove_button_clicked('button')
     ## nothing changes
     self.assertTrue(presenter.view.widget_get_visible(
         'expander'))
     self.assertFalse(presenter.view.widget_get_visible(
         'noconnectionlabel'))
 def test_on_dialog_response_ok_valid_params(self):
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {
         'nugkui': {'default': False,
                    'pictures': '/tmp/nugkui',
                    'type': 'SQLite',
                    'file': '/tmp/nugkui.db'}}
     prefs.prefs[bauble.conn_default_pref] = 'nugkui'
     prefs.prefs[prefs.picture_root_pref] = '/tmp'
     view.reply_file_chooser_dialog = []
     presenter = ConnMgrPresenter(view)
     dialog = MockDialog()
     view.invoked = []
     presenter.on_dialog_response(dialog, RESPONSE_OK)
     self.assertFalse('run_message_dialog' in view.invoked)
     self.assertTrue(dialog.hidden)
     self.assertEquals(prefs.prefs[prefs.picture_root_pref], '/tmp/nugkui')
 def test_two_connection_initialize_default_second(self):
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {
         'nugkui': {'default': True,
                    'pictures': 'nugkui',
                    'type': 'SQLite',
                    'file': 'nugkui.db'},
         'btuu': {'default': False,
                  'pictures': 'btuu',
                  'type': 'SQLite',
                  'file': 'btuu.db'}}
     prefs.prefs[bauble.conn_default_pref] = 'bruu'
     presenter = ConnMgrPresenter(view)
     self.assertEquals(presenter.connection_name, 'btuu')
     params = presenter.connections[presenter.connection_name]
     self.assertEquals(params['default'], False)
     self.assertFalse(view.widget_get_value('usedefaults_chkbx'))
 def test_one_connection_on_add_confirm_positive(self):
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {
         'nugkui': {'default': True,
                    'pictures': 'nugkui',
                    'type': 'SQLite',
                    'file': 'nugkui.db'}}
     prefs.prefs[bauble.conn_default_pref] = 'nugkui'
     presenter = ConnMgrPresenter(view)
     presenter.view.reply_entry_dialog.append('new_conn')
     presenter.on_add_button_clicked('button')
     presenter.refresh_view()  # this is done by gtk
     self.assertTrue(('combobox_prepend_text', ['name_combo', 'new_conn'])
                     in presenter.view.invoked_detailed)
     self.assertTrue(('widget_set_value', ['name_combo', 'new_conn', ()])
                     in presenter.view.invoked_detailed)
     print presenter.view.invoked_detailed
     raise SkipTest("related to issue #194")
 def test_two_connections_wrong_default_use_first_one(self):
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     prefs.prefs[bauble.conn_default_pref] = 'nugkui'
     prefs.prefs[bauble.conn_list_pref] = {
         'nugkui': {'default': True,
                    'pictures': 'nugkui',
                    'type': 'SQLite',
                    'file': 'nugkui.db'},
         'quisquis': {'passwd': False,
                      'pictures': '',
                      'db': 'quisquis',
                      'host': 'localhost',
                      'user': '******',
                      'type': 'Oracle'}}
     prefs.prefs[bauble.conn_default_pref] = 'nonce'
     presenter = ConnMgrPresenter(view)
     as_list = presenter.connection_names
     self.assertEquals(presenter.connection_name, as_list[0])
 def test_one_connection_shown_removed_message(self):
     view = MockView(combos={'name_combo': [], 'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {
         'nugkui': {
             'default': True,
             'pictures': 'nugkui',
             'type': 'SQLite',
             'file': 'nugkui.db'
         }
     }
     presenter = ConnMgrPresenter(view)
     # T_0
     self.assertTrue(presenter.view.widget_get_visible('expander'))
     self.assertFalse(
         presenter.view.widget_get_visible('noconnectionlabel'))
     # action
     presenter.remove_connection('nugkui')
     # T_1
     self.assertTrue(presenter.view.widget_get_visible('noconnectionlabel'))
     self.assertFalse(presenter.view.widget_get_visible('expander'))
 def test_one_connection_shown_and_selected_oracle(self):
     view = MockView(combos={'name_combo': [], 'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {
         'quisquis': {
             'passwd': False,
             'pictures': '',
             'db': 'quisquis',
             'host': 'localhost',
             'user': '******',
             'type': 'Oracle'
         }
     }
     prefs.prefs[bauble.conn_default_pref] = 'quisquis'
     presenter = ConnMgrPresenter(view)
     self.assertEquals(presenter.connection_name, 'quisquis')
     self.assertTrue(presenter.view.widget_get_visible('expander'))
     self.assertTrue(presenter.view.widget_get_visible('dbms_parambox'))
     self.assertFalse(presenter.view.widget_get_visible('sqlite_parambox'))
     self.assertFalse(
         presenter.view.widget_get_visible('noconnectionlabel'))
 def test_two_connection_on_remove_confirm_positive(self):
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     prefs.prefs[bauble.conn_list_pref] = {
         'nugkui': {'default': True,
                    'pictures': 'nugkui',
                    'type': 'SQLite',
                    'file': 'nugkui.db'},
         'btuu': {'default': True,
                  'pictures': 'btuu',
                  'type': 'SQLite',
                  'file': 'btuu.db'}}
     presenter = ConnMgrPresenter(view)
     presenter.view.reply_yes_no_dialog.append(True)
     presenter.on_remove_button_clicked('button')
     ## visibility same
     self.assertTrue(presenter.view.widget_get_visible(
         'expander'))
     self.assertFalse(presenter.view.widget_get_visible(
         'noconnectionlabel'))
     self.assertTrue('combobox_set_active' in view.invoked)
 def test_can_create_presenter(self):
     view = MockView(combos={'name_combo': [],
                             'type_combo': []})
     presenter = ConnMgrPresenter(view)
     self.assertEquals(presenter.view, view)