def test_form_signals(self): """ Test that each of the signals are sent. """ events = ["valid", "invalid"] invalid = lambda **kwargs: events.remove("invalid") form_invalid.connect(invalid) valid = lambda **kwargs: events.remove("valid") form_valid.connect(valid) form = Form.objects.create(title="Signals", slug='signals', status=STATUS_PUBLISHED) if USE_SITES: form.sites.add(current_site) form.save() form.fields.create(label="field", field_type=NAMES[0][0], required=True, visible=True) # # Create an HttpRequest object that can be passed directly to a view function, # specifically to form_detail() which accepts form POST data username = "******" password = "******" User.objects.create_superuser(username, "", password) req = HttpRequest() req.method = "POST" req.user = authenticate(username=username, password=password) # form_detail(req, "signals") data = {"field_%s" % form.fields.visible()[0].id: "test"} req.POST.update(data) form_detail(req, "signals") self.assertEqual(len(events), 0)
def test_form_fields(self): """ Simple 200 status check against rendering and posting to forms with both optional and required fields. """ username = "******" password = "******" User.objects.create_superuser(username, "", password) for required in (True, False): form = Form.objects.create(title="Test", slug="test", status=STATUS_PUBLISHED) if USE_SITES: form.sites.add(current_site) form.save() for (field, _) in NAMES: form.fields.create(label=field, field_type=field, required=required, visible=True) response = self.client.get(form.get_absolute_url()) self.assertEqual(response.status_code, 200) fields = form.fields.visible() data = dict([("field_%s" % f.id, "test") for f in fields]) response = self.client.post(form.get_absolute_url(), data=data) # "View on site" submit button redirects back to admin/forms/form page self.assertEqual(response.status_code, 302) # So submit the form directly to get the 200 response req = HttpRequest() req.method = "POST" req.user = authenticate(username=username, password=password) response = form_detail(req, "test") self.assertEqual(response.status_code, 200) # form.delete()
def get_response(self, request, req_context, options, content_object): return form_detail(request, content_object.slug)