--- 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 <http://www.gnu.org/licenses/>.
+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()
-