def multiple_quxs_inserted(session):
    qux_1 = Qux(
        id=1, name='name_1', count=5,
        created_at=datetime.date(2016, 7, 12),
        execution_time=datetime.datetime(2016, 7, 12, 1, 5, 9),
        expiration_time=datetime.time(1, 5, 9)
    )
    qux_2 = Qux(
        id=2, name='name_2', count=10,
        created_at=datetime.date(2016, 7, 13),
        execution_time=datetime.datetime(2016, 7, 13, 2, 5, 9),
        expiration_time=datetime.time(2, 5, 9)
    )
    qux_3 = Qux(
        id=3, name='name_1', count=None,
        created_at=None, execution_time=None, expiration_time=None
    )
    qux_4 = Qux(
        id=4, name='name_4', count=15,
        created_at=datetime.date(2016, 7, 14),
        execution_time=datetime.datetime(2016, 7, 14, 3, 5, 9),
        expiration_time=datetime.time(3, 5, 9)
    )
    session.add_all([qux_1, qux_2, qux_3, qux_4])
    session.commit()
    def test_multiple_models(self, session):

        bar_1 = Bar(id=1, name='name_1', count=15)
        bar_2 = Bar(id=2, name='name_2', count=10)
        bar_3 = Bar(id=3, name='name_1', count=20)
        bar_4 = Bar(id=4, name='name_1', count=10)

        qux_1 = Qux(id=1,
                    name='name_1',
                    count=15,
                    created_at=datetime.date(2016, 7, 12),
                    execution_time=datetime.datetime(2016, 7, 12, 1, 5, 9))
        qux_2 = Qux(id=2,
                    name='name_2',
                    count=10,
                    created_at=datetime.date(2016, 7, 13),
                    execution_time=datetime.datetime(2016, 7, 13, 2, 5, 9))
        qux_3 = Qux(id=3,
                    name='name_1',
                    count=10,
                    created_at=None,
                    execution_time=None)
        qux_4 = Qux(id=4,
                    name='name_1',
                    count=20,
                    created_at=datetime.date(2016, 7, 14),
                    execution_time=datetime.datetime(2016, 7, 14, 3, 5, 9))

        session.add_all(
            [bar_1, bar_2, bar_3, bar_4, qux_1, qux_2, qux_3, qux_4])
        session.commit()

        query = session.query(Bar).join(Qux, Bar.id == Qux.id)
        order_by = [
            {
                'model': 'Bar',
                'field': 'name',
                'direction': 'asc'
            },
            {
                'model': 'Qux',
                'field': 'count',
                'direction': 'asc'
            },
        ]

        sorted_query = apply_sort(query, order_by)
        results = sorted_query.all()

        assert len(results) == 4
        assert results[0].id == 3
        assert results[1].id == 1
        assert results[2].id == 4
        assert results[3].id == 2