class DocumentTransformerTest(TestCase):
    def setUp(self):
        self.transformer = DocumentTransformer('tests.lisogo.model')

    def test_DocumentTransformerIncomingForSimpleDocument(self):
        doc = ConcreteDocument('foo', 'bar')
        son = doc.toSON()

        transformed = self.transformer.transform_incoming(son.copy(), None)
        self.assertEqual(transformed, son)

    def test_DocumentTransformerIncomingForNestedDocument(self):
        doc = DocumentWithNested('foo', NestedDocument('bar'))
        son = doc.toSON()
        nested_son = doc.nested.toSON()

        transformed = self.transformer.transform_incoming(son.copy(), None)

        self.assertEqual(transformed['data'], son['data'])
        self.assertEqual(transformed['nested'], nested_son)

    def test_DocumentTransformerOutgoingForSimpleDocument(self):
        doc = ConcreteDocument('foo', 'bar')
        son = doc.toSON()

        transformed = self.transformer.transform_incoming(son.copy(), None)
        back = self.transformer.transform_outgoing(transformed.copy(), None)

        self.assertEqual(back, son)

    def test_DocumentTransformerOutgoingForNestedDocument(self):
        doc = DocumentWithNested('foo', NestedDocument('bar'))
        son = doc.toSON()

        transformed = self.transformer.transform_incoming(son.copy(), None)
        back = self.transformer.transform_outgoing(transformed.copy(), None)

        self.assertEqual(back['nested'], son['nested'])
 def setUp(self):
     self.transformer = DocumentTransformer('tests.lisogo.model')