def test_load_should_load_javascript_files(self):
        js_code_dummy = """
        function tab_navigation(text){
            console.log('unit_testing:' + text);
        }"""
        dummy_argument = 'argument1'
        expected_js_code_dummy = """current_document = this.browserbot.getCurrentWindow().document; current_window = this.browserbot.getCurrentWindow();

        function tab_navigation(text){
            console.log('unit_testing:' + text);
        }
action = new tab_navigation();
result = action.execute("argument1");"""
        js_file_dummy = 'js_test.js'

        mocked_file = Mock()
        mocked_file.read.return_value = js_code_dummy

        mocked_open = Mock()
        mocked_open.return_value = mocked_file
        with patch.dict(__builtins__, {'open': mocked_open}):
            js_loader = JsCodeLoader()
            result = js_loader._load(js_file_dummy, ['argument1'])

            mocked_open.assert_called_with('js_codes/' + js_file_dummy, 'r')
            self.assertTrue(mocked_file.read.called)

        self.assertEquals(expected_js_code_dummy, result)
    def execute(self, context, text):
        js_loader = JsCodeLoader()

        active_element_dom = js_loader.exec_js(context, 'get_active_element_dom.js')
        context.browser_driver.type_text(active_element_dom, text)
        active_element_value = js_loader.exec_js(context, 'verify_active_element_value.js')

        if (active_element_value != text):
            raise self.failed('Focused element does not support keyboard input')
    def execute(self, context, element_type, element_text, tab_number):
        js_loader = JsCodeLoader()
        if (tab_number):
            result = js_loader.exec_js(context, 'tab_navigation.js', element_text, tab_number)
        else:
            result = js_loader.exec_js(context, 'tab_navigation.js', element_text, self.MAX_NUMBER_OF_TAB_KEYS)

        if (result == self.NOT_FOUND_ELEMENT):
            raise self.failed('"' + element_text + '" does not exists or is not focusable...')
        if (result == self.MAX_TAB_PRESSES_EXCEEDED):
            raise self.failed('"' + element_text + '" max number of tab key presses was exceeded...')
    def execute(self, context, element_type, element_text, key_number):
        js_loader = JsCodeLoader()

        if (key_number):
            result = js_loader.exec_js(context, 'arrow_navigation.js', element_text, key_number)
        else:
            result = js_loader.exec_js(context, 'arrow_navigation.js', element_text, self.MAX_NUMBER_OF_KEY_PRESSES)

        if result == self.NOT_FOUND_RESPONSE:
            raise self.failed('"' + element_text + '" does not exists or is not present in the page structure')
        if result == self.MAX_NUMBER_OF_KEY_PRESSES_RESPONSE:
            raise self.failed('"' + element_text + '" was not found within the max number of key presses established')
    def test_exec_js_should_call_js_loader_and_browser_driver_exec_js(self):
        context_mock = Mock()
        context_mock.browser_driver.exec_js.return_value = 'document.getEle...'
        js_file_stub = 'some_js_file.js'

        jsloader = JsCodeLoader()
        jsloader._load = Mock()
        jsloader._load.return_value = 'function(){console.log();...'
        result = jsloader.exec_js(context_mock, js_file_stub)

        jsloader._load.assert_called_with('some_js_file.js', ())
        context_mock.browser_driver.exec_js.assert_called_with('function(){console.log();...')

        self.assertEquals('document.getEle...', result)
 def execute(self, context, extra_argument):
     js_loader = JsCodeLoader()
     active_element_dom = js_loader.exec_js(context, 'get_active_element_dom.js')
     context.browser_driver.type_keys(active_element_dom, '\13')
     result = js_loader.exec_js(context, 'activate_elements.js')