def test_POST_add_or_update(self): class MockForm(object): value = None def display(self): s = 'display form' if self.value: s += ' with some values' return s def validate(self, data): return data request = testing.DummyRequest() request.route_url = lambda *args, **kw: ( 'http://server/%s/%s' % (kw['classname'], kw['id'])) request.POST = {'name': 'Fred'} request.method = 'POST' self.Test1.edit_form = classmethod(lambda *args, **kw: MockForm()) response = pysqla.add_or_update(self.Test1, request) self.assertEqual(response.status, '302 Found') self.assertTrue( ('Location', 'http://server/test1/2') in response._headerlist) self.assertEqual(self.Test1.query.get(1).name, 'Bob') self.assertEqual(self.Test1.query.get(2).name, 'Fred') response = pysqla.add_or_update(self.Test1.query.get(1), request) self.assertEqual(response.status, '302 Found') self.assertTrue( ('Location', 'http://server/test1/1') in response._headerlist) self.assertEqual(self.Test1.query.get(1).name, 'Fred') self.assertEqual(self.Test1.query.count(), 2)
def test_fail_POST_add_or_update(self): class MockForm(object): value = None def display(self): s = 'display form' if self.value: s += ' with some values' return s def validate(self, data): raise twc.ValidationError('Validation error', widget=self) request = testing.DummyRequest() request.POST = {'name': 'Fred'} request.method = 'POST' form = MockForm() self.Test1.edit_form = classmethod(lambda *args, **kw: form) response = pysqla.add_or_update(self.Test1, request) expected = {'html': 'display form'} self.assertEqual(response, expected) form.value = request.POST response = pysqla.add_or_update(self.Test1.query.get(1), request) expected = {'html': 'display form with some values'} self.assertEqual(response, expected) self.assertEqual(self.Test1.query.get(1).name, 'Bob')
def test_GET_add_or_update(self): class MockForm(object): value = None def display(self): s = 'display form' if self.value: s += ' with some values' return s request = testing.DummyRequest() self.Test1.edit_form = classmethod(lambda *args, **kw: MockForm()) response = pysqla.add_or_update(self.Test1, request) expected = {'html': 'display form'} self.assertEqual(response, expected) response = pysqla.add_or_update(self.Test1.query.get(1), request) expected = {'html': 'display form with some values'} self.assertEqual(response, expected)