示例#1
0
    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)
示例#2
0
    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')
示例#3
0
    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)