Ejemplo n.º 1
0
    def test_partial_structure_subscriptions(self):
        block_1 = MagicMock(to_dict=MagicMock(return_value={
            "attr": "value",
            "inner": {
                "attr2": "value"
            }
        }))
        block_2 = MagicMock(to_dict=MagicMock(return_value={"attr": "value"}))

        sub_1 = MagicMock()
        sub_1.endpoint = ["block_1", "inner"]
        sub_1.delta = False
        sub_2 = MagicMock()
        sub_2.endpoint = ["block_1", "inner"]
        sub_2.delta = True

        changes_1 = [[["block_1", "inner", "attr2"], "new_value"],
                     [["block_1", "attr"], "new_value"]]
        changes_2 = [[["block_2", "attr"], "block_2_value"]]
        request_1 = BlockChanges(changes_1)
        request_2 = BlockChanges(changes_2)
        p = Process("proc", MagicMock())
        p.q.get = MagicMock(side_effect=[request_1, request_2, PROCESS_STOP])
        p._subscriptions = [sub_1, sub_2]

        p._handle_block_add(BlockAdd(block_1, "block_1"))
        p._handle_block_add(BlockAdd(block_2, "block_2"))
        p.recv_loop()

        response_1 = sub_1.respond_with_update.call_args[0][0]
        response_2 = sub_2.respond_with_delta.call_args[0][0]
        self.assertEquals({"attr2": "new_value"}, response_1)
        self.assertEquals([[["attr2"], "new_value"]], response_2)