Example #1
0
 def test_validate_commands(self, *args):
     call_args = [
         ["element"],
         ["window"],
     ]
     [numerical_identifier, untranslated_data, level,
      segmented] = [123, "whatever", 2, 10000]
     commands = call_args + [
         ["method", ["element"], "method_name"] + call_args,
         ["function", ["element"]] + call_args,
         ["id", "untranslated"],
         ["bytes", u"12ff"],
         ["list"] + call_args,
         ["dict", {
             "key": ["element"]
         }],
         [
             "callback", numerical_identifier, untranslated_data, level,
             segmented
         ],
         ["get", ["element"], "whatever"],
         ["set", ["element"], "whatever", ["window"]],
         ["null", ["element"]],
         dict,
     ]
     widget = proxy_widget.JSProxyWidget()
     widget.validate_commands(commands)
     with self.assertRaises(ValueError):
         widget.validate_commands([["BAD_INDICATOR", "OTHER", "STUFF"]])
     with self.assertRaises(ValueError):
         widget.validate_command("TOP LEVEL COMMAND MUST BE A LIST",
                                 top=True)
Example #2
0
 def test_save_new(self, *mocks):
     widget = proxy_widget.JSProxyWidget()
     #m = widget.element.New = MagicMock()
     m2 = widget.save = MagicMock()
     widget.save_new("name", "constructor", [1, 2, 3])
     #assert m.called
     assert m2.called
Example #3
0
 def test_widget_call(self):
     widget = proxy_widget.JSProxyWidget()
     m = widget.flush = MagicMock()
     widget.send_commands = MagicMock()
     widget.auto_flush = True
     widget("console.log('not executed')")
     assert m.called
Example #4
0
 def test_handle_custom_message(self, *mocks):
     i = proxy_widget.INDICATOR
     p = proxy_widget.PAYLOAD
     data_list = [
         {
             i: proxy_widget.RESULTS,
             p: "bogus payload"
         },
         {
             i: proxy_widget.CALLBACK_RESULTS,
             p: "bogus payload"
         },
         {
             i: proxy_widget.JSON_CB_FINAL,
             p: "[1,2,3]"
         },
         {
             i: proxy_widget.JSON_CB_FRAGMENT,
             p: "bogus payload"
         },
         {
             i: "unknown indicator",
             p: "bogus payload"
         },
     ]
     for data in data_list:
         widget = proxy_widget.JSProxyWidget()
         widget.handle_custom_message(None, data)
Example #5
0
    def test_seg_callback(self, *args):
        widget = proxy_widget.JSProxyWidget()

        def f(*args):
            return args

        data = (1, 2, 3)
        widget.seg_callback(f, data)
Example #6
0
    def test_require_js(self, *mocks):
        widget = proxy_widget.JSProxyWidget()

        def uses_require(action):
            action()

        widget.uses_require = uses_require
        widget.require_js("js/simple.css", "js/simple.css")
Example #7
0
 def test_get_value_async_smoke_test(self):
     "real test is in end_to_end_testing"
     js = "1 + 1"
     widget = proxy_widget.JSProxyWidget()
     m = widget.js_init = MagicMock(return_value=3)
     callback = None  # never called in smoke test
     widget.get_value_async(callback, js, debug=True)
     assert m.called
Example #8
0
 def test_require_loads(self, *mocks):
     widget = proxy_widget.JSProxyWidget()
     e = widget.element = RequireMockElement()
     e.require_is_loaded = False
     proxy_widget.JSProxyWidget._require_checked = False
     action = MagicMock()
     widget.uses_require(action)
     assert action.called
Example #9
0
 def test_handle_rendered_error(self):
     widget = proxy_widget.JSProxyWidget()
     widget.buffered_commands = ["bogus"]
     m = widget.send_commands = MagicMock(side_effect=KeyError('foo'))
     with self.assertRaises(KeyError):
         #widget.handle_rendered("att", "old", "new")
         widget.rendered = True
     assert m.called
Example #10
0
 def test_handle_custom_message_error(self, *mocks):
     i = proxy_widget.INDICATOR
     p = proxy_widget.PAYLOAD
     data = {i: proxy_widget.RESULTS, p: "bogus payload"}
     widget = proxy_widget.JSProxyWidget()
     m = widget.handle_results = MagicMock(side_effect=KeyError('foo'))
     with self.assertRaises(KeyError):
         widget.handle_custom_message(None, data)
Example #11
0
 def test_element_wrapper(self, *args):
     widget = proxy_widget.JSProxyWidget()
     element = MagicMock()
     widget.get_element = MagicMock(returns=element)
     element._set = MagicMock()
     wrapper = proxy_widget.ElementWrapper(widget)
     get_attribute = wrapper.some_attribute
     set_attribute = wrapper._set("some_attribute", "some value")
     assert widget.get_element.called
Example #12
0
 def test_handle_rendered(self):
     widget = proxy_widget.JSProxyWidget()
     #widget.commands_awaiting_render = ["bogus"]
     widget.buffered_commands = ["bogus"]
     m = widget.send_commands = MagicMock()
     #widget.handle_rendered("att", "old", "new")
     widget.rendered = True
     assert m.called
     self.assertEqual(widget.status, "Rendered.")
Example #13
0
 def test_require_wont_load(self, *mocks):
     widget = proxy_widget.JSProxyWidget()
     e = widget.element = RequireMockElement()
     e.require_is_loaded = False
     proxy_widget.JSProxyWidget._require_checked = True
     action = MagicMock()
     with self.assertRaises(ImportError):
         widget.uses_require(action)
     assert not action.called
Example #14
0
 def test_lazy_get(self, *args):
     widget = proxy_widget.JSProxyWidget()
     get = widget.element["AnyAttribute"]
     method_call = get("called")
     self.assertIsInstance(method_call, proxy_widget.LazyMethodCall)
     call_attribute = method_call["someOtherAttribute"]
     self.assertIsInstance(call_attribute, proxy_widget.LazyGet)
     self.assertIsInstance(repr(call_attribute),
                           str)  # exercise the repr method
Example #15
0
 def test_set_element(self):
     "is this method used?"
     name = "name"
     value = "value"
     widget = proxy_widget.JSProxyWidget()
     m = widget.js_init = MagicMock(return_value=3)
     widget.set_element(name, value)
     m.assert_called_with("element[slot_name] = value;",
                          slot_name=name,
                          value=value)
Example #16
0
 def test_callback_results(self, *args):
     widget = proxy_widget.JSProxyWidget()
     widget.verbose = True
     new_results = [1, 2, [3], 4]
     [identifier, json_value, arguments, counter] = new_results
     cb = MagicMock()
     i2c = widget.identifier_to_callback = {identifier: cb}
     widget.handle_callback_results(new_results)
     assert cb.called
     assert len(i2c) == 1
Example #17
0
    def test_on_rendered(self, *args):
        widget = proxy_widget.JSProxyWidget()

        def fake_js_init(js, call_it):
            call_it()

        widget.js_init = fake_js_init
        m = MagicMock()
        widget.on_rendered(m, "some", "arguments")
        assert m.called
Example #18
0
    def test_evaluate_success(self, *args):
        widget = proxy_widget.JSProxyWidget()

        def fake_poll(*args):
            widget._synced_command_evaluated = True
            widget._synced_command_result = 42

        proxy_widget.run_ui_poll_loop = fake_poll
        get_value = widget.element["AnyAttribute"].sync_value(ms_delay=10)
        self.assertEqual(get_value, 42)
Example #19
0
 def test_send_command_before_render(self, *args):
     widget = proxy_widget.JSProxyWidget()
     widget.rendered = False
     command = [1, 2, 3]
     cb = MagicMock()
     before = len(widget.buffered_commands)
     widget.send_command(command, cb)
     assert not cb.called
     assert len(widget.buffered_commands) == before + 1
     return widget
Example #20
0
 def test_flush(self):
     widget = proxy_widget.JSProxyWidget()
     m = widget.send_commands = MagicMock()
     widget.flush()
     assert not m.called
     widget.rendered = True
     widget.flush()
     assert m.called
     widget.error_on_flush = True
     with self.assertRaises(ValueError):
         widget.flush()
Example #21
0
    def test_evaluate_exception(self, *args):
        widget = proxy_widget.JSProxyWidget()

        def fake_poll(*args):
            widget._synced_command_evaluated = True
            widget._synced_command_result = "SOMETHING WENT WRONG"
            widget.error_msg = "SOMETHING WENT WRONG"

        proxy_widget.run_ui_poll_loop = fake_poll
        with self.assertRaises(proxy_widget.JavascriptException):
            get_value = widget.element["AnyAttribute"].sync_value(ms_delay=10)
Example #22
0
    def test_save_function(self):
        widget = proxy_widget.JSProxyWidget()
        m = widget.save_new = MagicMock()

        class fakeWindow:
            Function = None

        m2 = widget.window = MagicMock(return_value=fakeWindow)
        widget.save_function("name", ("a", "b"), "return a+b")
        assert m.called
        assert m2.called
Example #23
0
 def test_handle_results(self, *args):
     widget = proxy_widget.JSProxyWidget()
     widget.verbose = True
     idnt = 1
     cb = MagicMock()
     i2c = widget.identifier_to_callback = {idnt: cb}
     v = "the value"
     new_results = [idnt, v]
     widget.handle_results(new_results)
     assert cb.called
     assert len(i2c) == 0
Example #24
0
 def test_require_loads_action_fails(self, *mocks):
     widget = proxy_widget.JSProxyWidget()
     e = widget.element = RequireMockElement()
     e.require_is_loaded = False
     proxy_widget.JSProxyWidget._require_checked = False
     action = MagicMock(side_effect=KeyError('foo'))
     #with self.assertRaises(KeyError):
     widget.error_msg = ""
     widget.uses_require(action)
     assert action.called
     assert widget.error_msg.startswith(
         "require.js delayed action exception")
Example #25
0
 def test_handle_results_error(self, *args):
     widget = proxy_widget.JSProxyWidget()
     widget.verbose = True
     idnt = 1
     cb = MagicMock(side_effect=KeyError('foo'))
     i2c = widget.identifier_to_callback = {idnt: cb}
     v = "the value"
     new_results = [idnt, v]
     with self.assertRaises(KeyError):
         widget.handle_results(new_results)
     assert cb.called
     assert len(i2c) == 0
Example #26
0
 def test_callback_results_error(self, *args):
     widget = proxy_widget.JSProxyWidget()
     widget.verbose = True
     new_results = [1, 2, [3], 4]
     [identifier, json_value, arguments, counter] = new_results
     cb = MagicMock(side_effect=KeyError('foo'))
     i2c = widget.identifier_to_callback = {identifier: cb}
     with self.assertRaises(KeyError):
         widget.handle_callback_results(new_results)
     assert cb.called
     assert len(i2c) == 1
     assert widget.error_msg.startswith("Handle callback results")
Example #27
0
 def test_delay_flush(self):
     widget = proxy_widget.JSProxyWidget()
     m = widget.send_commands = MagicMock()
     widget.rendered = True
     widget.flush()
     assert m.called
     m = widget.send_commands = MagicMock()
     with widget.delay_flush():
         widget.element.do_something_in_javascript()
         assert not m.called
         assert len(widget.buffered_commands) > 0
     assert m.called
     assert len(widget.buffered_commands) == 0
Example #28
0
 def test_in_dialog(self, *args):
     widget = proxy_widget.JSProxyWidget()
     m = MagicMock()
     widget.element.dialog = m
     widget.in_dialog(
         title="A Counter",
         autoOpen=False,
         buttons=dict(Increment=MagicMock()),
         height=150,
         width=600,
         modal=True,
         show=dict(effect="blind", duration=1000),
         hide=dict(effect="fade", duration=1000),
     )
     assert m.called
Example #29
0
    def test_load_js_files(self, *args):
        widget = proxy_widget.JSProxyWidget()

        def mock_callable(c):
            return c

        widget.callable = mock_callable

        def mock_test_js_loaded(paths, dummy, callback):
            callback()

        widget.element.test_js_loaded = mock_test_js_loaded
        widget.send_command = MagicMock()
        widget.load_js_files(["js/simple.js"], force=False)
        widget.load_js_files(["js/simple.js"], force=True)
Example #30
0
    def test_callable(self, *args):
        widget = proxy_widget.JSProxyWidget()

        def f(*args):
            #print("got args: " + repr(args))
            return args

        c = widget.callable(f)
        c2 = widget.callable(c)
        assert c is c2
        assert type(c) is jp_proxy_widget.CallMaker
        # call the callback
        identifier = c.args[0]
        callback = widget.identifier_to_callback[identifier]
        callback("dummy", {"0": "the first argument"})