diff -r 770b58f99e66 -r 0019b7888dd7 web/test/unittest_views_forms.py --- a/web/test/unittest_views_forms.py Thu Jul 02 09:20:02 2015 +0200 +++ b/web/test/unittest_views_forms.py Wed Apr 08 09:27:26 2015 +0200 @@ -16,7 +16,10 @@ # You should have received a copy of the GNU Lesser General Public License along # with CubicWeb. If not, see . +from logilab.common import tempattr, attrdict + from cubicweb.devtools.testlib import CubicWebTC +from cubicweb.web.views.autoform import InlinedFormField class InlinedFormTC(CubicWebTC): @@ -39,8 +42,33 @@ petype='Salesterm') self.assertEqual(formview.form.linked_to, {}) + def test_remove_js_depending_on_cardinality(self): + with self.admin_access.web_request() as req: + formview = req.vreg['views'].select( + 'inline-creation', req, + etype='File', rtype='described_by_test', role='subject', + peid='A', + petype='Salesterm') + # cardinality is 1, can't remove + self.assertIsNone(formview._get_removejs()) + rdef = self.schema['Salesterm'].rdef('described_by_test') + with tempattr(rdef, 'cardinality', '?*'): + self.assertTrue(formview._get_removejs()) + with tempattr(rdef, 'cardinality', '+*'): + # formview has no parent info (pform). This is what happens + # when an inline form is requested through AJAX. + self.assertTrue(formview._get_removejs()) + fakeview = attrdict(dict(rtype='described_by_test', role='subject')) + # formview is first, can't be removed + formview.pform = attrdict(fields=[InlinedFormField(view=formview), + InlinedFormField(view=fakeview)]) + self.assertIsNone(formview._get_removejs()) + # formview isn't first, can be removed + formview.pform = attrdict(fields=[InlinedFormField(view=fakeview), + InlinedFormField(view=formview)]) + self.assertTrue(formview._get_removejs()) + if __name__ == '__main__': from logilab.common.testlib import unittest_main unittest_main() -