895 |
895 |
assert '>bar2<' in resp
|
896 |
896 |
|
897 |
897 |
|
|
898 |
def test_block_repeated_with_default(pub):
|
|
899 |
FormDef.wipe()
|
|
900 |
BlockDef.wipe()
|
|
901 |
|
|
902 |
block = BlockDef()
|
|
903 |
block.name = 'foobar'
|
|
904 |
block.fields = [
|
|
905 |
fields.StringField(id='123', required=True, label='Test', type='string'),
|
|
906 |
fields.StringField(id='234', required=True, label='Test2', type='string'),
|
|
907 |
]
|
|
908 |
block.store()
|
|
909 |
|
|
910 |
formdef = FormDef()
|
|
911 |
formdef.name = 'form title'
|
|
912 |
formdef.fields = [
|
|
913 |
fields.PageField(id='0', label='1st page', type='page'),
|
|
914 |
fields.BlockField(
|
|
915 |
id='1', label='test', type='block:foobar', default_items=2, max_items=3, hint='hintblock'
|
|
916 |
),
|
|
917 |
fields.PageField(id='2', label='2nd page', type='page'),
|
|
918 |
]
|
|
919 |
formdef.store()
|
|
920 |
|
|
921 |
app = get_app(pub)
|
|
922 |
resp = app.get(formdef.get_url())
|
|
923 |
assert resp.text.count('>Test<') == 2
|
|
924 |
assert resp.text.count('>hintblock<') == 1
|
|
925 |
assert 'wcs-block-add-clicked' not in resp
|
|
926 |
assert 'Add another' in resp
|
|
927 |
assert resp.html.find('div', {'class': 'list-add'})
|
|
928 |
resp = resp.form.submit('f1$add_element')
|
|
929 |
assert resp.text.count('>Test<') == 3
|
|
930 |
assert resp.text.count('>hintblock<') == 1
|
|
931 |
assert resp.pyquery('.list-add').attr['style'] == 'display: none'
|
|
932 |
|
|
933 |
formdef.fields[1].default_items = 3
|
|
934 |
formdef.store()
|
|
935 |
|
|
936 |
app = get_app(pub)
|
|
937 |
resp = app.get(formdef.get_url())
|
|
938 |
assert resp.text.count('>Test<') == 3
|
|
939 |
assert resp.text.count('>hintblock<') == 1
|
|
940 |
assert resp.pyquery('.list-add').attr['style'] == 'display: none'
|
|
941 |
|
|
942 |
formdef.fields[1].default_items = 4
|
|
943 |
formdef.store()
|
|
944 |
app = get_app(pub)
|
|
945 |
resp = app.get(formdef.get_url())
|
|
946 |
assert resp.text.count('>Test<') == 3
|
|
947 |
|
|
948 |
|
898 |
949 |
def test_block_repeated_over_limit(pub):
|
899 |
950 |
FormDef.wipe()
|
900 |
951 |
BlockDef.wipe()
|
... | ... | |
943 |
994 |
assert 'Too many elements (maximum: 2)' in resp
|
944 |
995 |
|
945 |
996 |
|
|
997 |
def test_block_repeated_under_default(pub):
|
|
998 |
FormDef.wipe()
|
|
999 |
BlockDef.wipe()
|
|
1000 |
|
|
1001 |
block = BlockDef()
|
|
1002 |
block.name = 'foobar'
|
|
1003 |
block.fields = [
|
|
1004 |
fields.StringField(id='123', required=True, label='Test', type='string'),
|
|
1005 |
fields.StringField(id='234', required=True, label='Test2', type='string'),
|
|
1006 |
]
|
|
1007 |
block.store()
|
|
1008 |
|
|
1009 |
formdef = FormDef()
|
|
1010 |
formdef.name = 'form title'
|
|
1011 |
formdef.fields = [
|
|
1012 |
fields.PageField(id='0', label='1st page', type='page'),
|
|
1013 |
fields.BlockField(
|
|
1014 |
id='1', label='test', type='block:foobar', default_items=2, max_items=2, remove_button=True
|
|
1015 |
),
|
|
1016 |
fields.PageField(id='2', label='2nd page', type='page'),
|
|
1017 |
fields.BlockField(
|
|
1018 |
id='3', label='test', type='block:foobar', default_items=2, max_items=2, remove_button=True
|
|
1019 |
),
|
|
1020 |
]
|
|
1021 |
formdef.store()
|
|
1022 |
formdef.data_class().wipe()
|
|
1023 |
|
|
1024 |
app = get_app(pub)
|
|
1025 |
resp = app.get(formdef.get_url())
|
|
1026 |
assert resp.text.count('>Test<') == 2
|
|
1027 |
|
|
1028 |
# fill items
|
|
1029 |
resp.form['f1$element0$f123'] = 'foo1'
|
|
1030 |
resp.form['f1$element0$f234'] = 'bar1'
|
|
1031 |
resp.form['f1$element1$f123'] = 'foo2'
|
|
1032 |
resp.form['f1$element1$f234'] = 'bar2'
|
|
1033 |
|
|
1034 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
1035 |
resp.form['f3$element0$f123'] = 'fooo1'
|
|
1036 |
resp.form['f3$element0$f234'] = 'barr1'
|
|
1037 |
resp.form['f3$element1$f123'] = 'fooo2'
|
|
1038 |
resp.form['f3$element1$f234'] = 'barr2'
|
|
1039 |
resp = resp.form.submit('submit') # -> validation page
|
|
1040 |
assert 'Check values then click submit.' in resp.text
|
|
1041 |
assert resp.form['f1$element0$f123'].value == 'foo1'
|
|
1042 |
assert resp.form['f1$element0$f234'].value == 'bar1'
|
|
1043 |
assert resp.form['f1$element1$f123'].value == 'foo2'
|
|
1044 |
assert resp.form['f1$element1$f234'].value == 'bar2'
|
|
1045 |
assert resp.form['f3$element0$f123'].value == 'fooo1'
|
|
1046 |
assert resp.form['f3$element0$f234'].value == 'barr1'
|
|
1047 |
assert resp.form['f3$element1$f123'].value == 'fooo2'
|
|
1048 |
assert resp.form['f3$element1$f234'].value == 'barr2'
|
|
1049 |
|
|
1050 |
resp = resp.form.submit('previous') # -> 2nd page
|
|
1051 |
# simulate javascript removing of block elements from DOM
|
|
1052 |
resp.form.field_order.remove(('f3$element0$f123', resp.form.fields['f3$element0$f123'][0]))
|
|
1053 |
del resp.form.fields['f3$element0$f123']
|
|
1054 |
resp.form.field_order.remove(('f3$element0$f234', resp.form.fields['f3$element0$f234'][0]))
|
|
1055 |
del resp.form.fields['f3$element0$f234']
|
|
1056 |
resp = resp.form.submit('previous') # -> 1st page
|
|
1057 |
# simulate javascript removing of block elements from DOM
|
|
1058 |
resp.form.field_order.remove(('f1$element0$f123', resp.form.fields['f1$element0$f123'][0]))
|
|
1059 |
del resp.form.fields['f1$element0$f123']
|
|
1060 |
resp.form.field_order.remove(('f1$element0$f234', resp.form.fields['f1$element0$f234'][0]))
|
|
1061 |
del resp.form.fields['f1$element0$f234']
|
|
1062 |
|
|
1063 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
1064 |
assert resp.form['f3$element0$f123'].value == 'fooo2'
|
|
1065 |
assert resp.form['f3$element0$f234'].value == 'barr2'
|
|
1066 |
assert 'f3$element1$f123' in resp.form.fields
|
|
1067 |
assert 'f3$element1$f234' in resp.form.fields
|
|
1068 |
resp = resp.form.submit('previous') # -> 1st page
|
|
1069 |
assert resp.form['f1$element0$f123'].value == 'foo2'
|
|
1070 |
assert resp.form['f1$element0$f234'].value == 'bar2'
|
|
1071 |
assert 'f1$element1$f123' in resp.form.fields
|
|
1072 |
assert 'f1$element1$f234' in resp.form.fields
|
|
1073 |
|
|
1074 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
1075 |
resp = resp.form.submit('submit') # -> validation page
|
|
1076 |
assert resp.form['f1$element0$f123'].value == 'foo2'
|
|
1077 |
assert resp.form['f1$element0$f234'].value == 'bar2'
|
|
1078 |
assert 'f1$element1$f123' not in resp.form.fields
|
|
1079 |
assert 'f1$element1$f234' not in resp.form.fields
|
|
1080 |
assert resp.form['f3$element0$f123'].value == 'fooo2'
|
|
1081 |
assert resp.form['f3$element0$f234'].value == 'barr2'
|
|
1082 |
assert 'f3$element1$f123' not in resp.form.fields
|
|
1083 |
assert 'f3$element1$f234' not in resp.form.fields
|
|
1084 |
|
|
1085 |
resp = resp.form.submit('submit') # -> submit
|
|
1086 |
assert len(formdef.data_class().select()[0].data['1']['data']) == 1
|
|
1087 |
assert len(formdef.data_class().select()[0].data['3']['data']) == 1
|
|
1088 |
|
|
1089 |
|
946 |
1090 |
def test_block_repeated_files(pub):
|
947 |
1091 |
FormDef.wipe()
|
948 |
1092 |
BlockDef.wipe()
|