def test_macros_are_called_on_builder(self):
        builder = Builder(
            QueryBuilder(flexmock(Connection), flexmock(QueryGrammar),
                         flexmock(QueryProcessor)))

        def foo_bar(builder):
            builder.foobar = True

            return builder

        builder.macro("foo_bar", foo_bar)
        result = builder.foo_bar()

        self.assertEqual(result, builder)
        self.assertTrue(builder.foobar)
    def test_macros_are_called_on_builder(self):
        builder = Builder(QueryBuilder(
            flexmock(Connection),
            flexmock(QueryGrammar),
            flexmock(QueryProcessor)
        ))

        def foo_bar(builder):
            builder.foobar = True

            return builder

        builder.macro('foo_bar', foo_bar)
        result = builder.foo_bar()

        self.assertEqual(result, builder)
        self.assertTrue(builder.foobar)