Projet

Général

Profil

0001-tests-test-lazy-eval-from-multiple-sources-39030.patch

Serghei Mihai (congés, retour 15/05), 02 février 2020 20:25

Télécharger (4,49 ko)

Voir les différences:

Subject: [PATCH] tests: test lazy eval from multiple sources (#39030)

 tests/test_backoffice_pages.py | 73 ++++++++++++++++++++++++++++++++++
 tests/test_formdata.py         | 19 +++++++++
 2 files changed, 92 insertions(+)
tests/test_backoffice_pages.py
5593 5593

  
5594 5594
    assert LoggedError.count() == 1
5595 5595
    assert LoggedError.select()[0].get_formdata().data == {'1': 'plop'}
5596

  
5597

  
5598
def test_lazy_eval_with_conditional_workflow_form(pub):
5599
    role = Role(name='foobar')
5600
    role.store()
5601
    user = create_user(pub)
5602

  
5603
    app = login(get_app(pub))
5604

  
5605
    FormDef.wipe()
5606

  
5607
    wf = Workflow(name='lazy backoffic form')
5608
    wf.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(wf)
5609
    wf.backoffice_fields_formdef.fields = [
5610
        fields.StringField(id='bo1', label='Foor Bar', varname='foo_bar'),
5611
    ]
5612
    st1 = wf.add_status('New', 'new')
5613
    st2 = wf.add_status('Choose', 'choice')
5614
    st3 = wf.add_status('Done', 'done')
5615

  
5616
    display_form = FormWorkflowStatusItem()
5617
    display_form.id = '_display_form'
5618
    display_form.by = [user.roles[0]]
5619
    display_form.varname = 'local'
5620
    display_form.formdef = WorkflowFormFieldsFormDef(item=display_form)
5621
    display_form.formdef.fields = [
5622
        fields.StringField(id='1', label='Test', varname='str', type='string', required=True),
5623
        fields.StringField(id='2', label='Test 2', varname='str2', type='string',
5624
                           condition={'type': 'django', 'value': 'local_var_str'})
5625
    ]
5626
    display_form.parent = st1
5627

  
5628
    submit_choice = JumpOnSubmitWorkflowStatusItem()
5629
    submit_choice.parent = st1
5630
    submit_choice.status = st2.id
5631
    st1.items.append(display_form)
5632
    st1.items.append(submit_choice)
5633

  
5634
    setbo = SetBackofficeFieldsWorkflowStatusItem()
5635
    setbo.parent = st2
5636
    setbo.fields = [{'field_id': 'bo1', 'value': '{% firstof local_var_str2 local_var_str1 %}'}]
5637

  
5638
    jump = JumpWorkflowStatusItem()
5639
    jump.condition = {'type': 'django', 'value': "form_var_foo_bar == 'go'"}
5640
    jump.status = 'done'
5641
    jump.parent = st2
5642
    st2.items.append(jump)
5643
    st2.items.append(setbo)
5644
    wf.store()
5645

  
5646
    formdef = FormDef()
5647
    formdef.name = 'test'
5648
    formdef.fields = [
5649
        fields.StringField(id='0', label='Foo', varname='foo')
5650
    ]
5651
    formdef.workflow_roles = {'_receiver': role.id}
5652
    formdef.workflow_id = wf.id
5653
    formdef.store()
5654
    formdata = formdef.data_class()()
5655
    formdata.just_created()
5656
    formdata.data = {
5657
        '0': 'test'
5658
    }
5659
    formdata.store()
5660

  
5661
    resp = app.get(formdata.get_url(backoffice=True))
5662
    resp.forms[0]['f1'] = 'f1 value'
5663
    resp.forms[0]['f2'] = 'go'
5664
    resp = resp.forms[0].submit()
5665

  
5666
    context = pub.substitutions.get_context_variables(mode='lazy')
5667
    assert context['form_var_foo_bar'] == 'go'
5668
    assert formdata.select()[0].status == 'wf-done'
tests/test_formdata.py
38 38
        metafunc.parametrize('pub', ['pickle', 'sql'], indirect=True)
39 39

  
40 40

  
41
class FakeSourceSubstitutionVariables(object):
42
    def get_substitution_variables(self):
43
        return {'form_var_foo': 'test1'}
44

  
45

  
41 46
@pytest.fixture
42 47
def pub(request):
43 48
    pub = create_temporary_pub(sql_mode=(request.param == 'sql'))
......
891 896
            assert context['form_var_foo_foo_xxx'] == 'bar'
892 897

  
893 898

  
899
def test_lazy_overriding_vars_eval(pub, variable_test_data):
900
    formdata = FormDef.select()[0].data_class().select()[0]
901
    pub.substitutions.reset()
902
    pub.substitutions.feed(formdata)
903

  
904
    context = pub.substitutions.get_context_variables(mode='lazy')
905
    assert context['form_var_foo_foo'] == 'bar'
906
    assert False
907

  
908
    pub.substitutions.feed(FakeSourceSubstitutionVariables())
909
    context = pub.substitutions.get_context_variables(mode='lazy')
910
    assert context['form_var_foo_foo'] == 'bar'
911

  
912

  
894 913
def test_lazy_map_variable(pub, variable_test_data):
895 914
    formdef = FormDef.select()[0]
896 915
    formdata = formdef.data_class().select()[0]
897
-