コード例 #1
0
    def test_change_dependent_wf_modules(self):
        # tab slug: tab-1
        workflow = Workflow.create_and_init(selected_tab_position=2)
        workflow.tabs.create(position=1, slug='tab-2')
        workflow.tabs.create(position=2, slug='tab-3')

        # Create `wf_module` depending on tabs 2+3 (and their order)
        ModuleVersion.create_or_replace_from_spec({
            'id_name':
            'x',
            'name':
            'X',
            'category':
            'Clean',
            'parameters': [
                {
                    'id_name': 'tabs',
                    'type': 'multitab'
                },
            ]
        })
        wf_module = workflow.tabs.first().wf_modules.create(
            order=0,
            module_id_name='x',
            params={'tabs': ['tab-2', 'tab-3']},
            last_relevant_delta_id=workflow.last_delta_id)

        cmd = self.run_with_async_db(
            ReorderTabsCommand.create(workflow=workflow,
                                      new_order=['tab-3', 'tab-1', 'tab-2']))
        wf_module.refresh_from_db()
        self.assertEqual(wf_module.last_relevant_delta_id, cmd.id)
コード例 #2
0
    def test_no_op(self):
        workflow = Workflow.create_and_init()  # initial tab slug: tab-1
        workflow.tabs.create(position=1, slug='tab-2')

        cmd = self.run_with_async_db(
            ReorderTabsCommand.create(workflow=workflow,
                                      new_order=['tab-1', 'tab-2']))
        self.assertIsNone(cmd)
コード例 #3
0
    def test_disallow_missing_tab_slug(self):
        workflow = Workflow.create_and_init()  # initial tab slug: tab-1
        workflow.tabs.create(position=1, slug='tab-2')

        with self.assertRaises(ValueError):
            self.run_with_async_db(
                ReorderTabsCommand.create(workflow=workflow,
                                          new_order=['tab-1']))
コード例 #4
0
    def test_ws_data(self, send_delta):
        send_delta.return_value = async_noop()

        # initial tab slug: tab-1
        workflow = Workflow.create_and_init(selected_tab_position=2)
        workflow.tabs.create(position=1, slug='tab-2')
        workflow.tabs.create(position=2, slug='tab-3')

        self.run_with_async_db(
            ReorderTabsCommand.create(workflow=workflow,
                                      new_order=['tab-3', 'tab-1', 'tab-2']))

        delta = send_delta.call_args[0][1]
        self.assertEqual(delta['updateWorkflow']['tab_slugs'],
                         ['tab-3', 'tab-1', 'tab-2'])
コード例 #5
0
    def test_adjust_selected_tab_position(self):
        # tab slug: tab-1
        workflow = Workflow.create_and_init(selected_tab_position=2)
        workflow.tabs.create(position=1, slug='tab-2')
        workflow.tabs.create(position=2, slug='tab-3')

        cmd = self.run_with_async_db(
            ReorderTabsCommand.create(workflow=workflow,
                                      new_order=['tab-3', 'tab-1', 'tab-2']))
        workflow.refresh_from_db()
        self.assertEqual(workflow.selected_tab_position, 0)

        self.run_with_async_db(cmd.backward())
        workflow.refresh_from_db()
        self.assertEqual(workflow.selected_tab_position, 2)

        self.run_with_async_db(cmd.forward())
        workflow.refresh_from_db()
        self.assertEqual(workflow.selected_tab_position, 0)
コード例 #6
0
    def test_reorder_slugs(self):
        workflow = Workflow.create_and_init()  # tab slug: tab-1
        workflow.tabs.create(position=1, slug='tab-2')
        workflow.tabs.create(position=2, slug='tab-3')

        cmd = self.run_with_async_db(
            ReorderTabsCommand.create(workflow=workflow,
                                      new_order=['tab-3', 'tab-1', 'tab-2']))
        self.assertEqual(
            list(workflow.live_tabs.values_list('slug', 'position')),
            [('tab-3', 0), ('tab-1', 1), ('tab-2', 2)])

        self.run_with_async_db(cmd.backward())
        self.assertEqual(
            list(workflow.live_tabs.values_list('slug', 'position')),
            [('tab-1', 0), ('tab-2', 1), ('tab-3', 2)])

        self.run_with_async_db(cmd.forward())
        self.assertEqual(
            list(workflow.live_tabs.values_list('slug', 'position')),
            [('tab-3', 0), ('tab-1', 1), ('tab-2', 2)])