def test_form_valid_without_object(self, super_mock): """ Test :py:meth:`.ModelFormMixin.form_valid` without ``self.object`` set. """ super_class = Mock() super_class.form_valid.return_value = 'form-valid' super_mock.return_value = super_class form = Mock() model_obj = Mock() mixin = ModelFormMixin() mixin.object = None mixin.document_class = Mock(return_value=model_obj) self.assertEqual('form-valid', mixin.form_valid(form)) form.populate_obj.assert_called_once_with(model_obj) mixin.object.save.assert_called_once_with() super_mock.assert_called_once_with(ModelFormMixin, mixin) super_class.form_valid.assert_called_once_with(form)