Test that the expected LIMIT/OFFSET is applied for slices. The LIMIT/OFFSET syntax differs slightly on all databases, and query[x:y] executes immediately, so we are asserting against SQL strings using sqlite's syntax.
(self)
| 2841 | eq_(q[-2:-5], []) |
| 2842 | |
| 2843 | def test_limit_offset_applies(self): |
| 2844 | """Test that the expected LIMIT/OFFSET is applied for slices. |
| 2845 | |
| 2846 | The LIMIT/OFFSET syntax differs slightly on all databases, and |
| 2847 | query[x:y] executes immediately, so we are asserting against |
| 2848 | SQL strings using sqlite's syntax. |
| 2849 | |
| 2850 | """ |
| 2851 | |
| 2852 | User = self.classes.User |
| 2853 | |
| 2854 | sess = fixture_session() |
| 2855 | q = sess.query(User).order_by(User.id) |
| 2856 | |
| 2857 | self.assert_sql( |
| 2858 | testing.db, |
| 2859 | lambda: q[10:20], |
| 2860 | [ |
| 2861 | ( |
| 2862 | "SELECT users.id AS users_id, users.name " |
| 2863 | "AS users_name FROM users ORDER BY users.id " |
| 2864 | "LIMIT :param_1 OFFSET :param_2", |
| 2865 | {"param_1": 10, "param_2": 10}, |
| 2866 | ) |
| 2867 | ], |
| 2868 | ) |
| 2869 | |
| 2870 | self.assert_sql( |
| 2871 | testing.db, |
| 2872 | lambda: q[:20], |
| 2873 | [ |
| 2874 | ( |
| 2875 | "SELECT users.id AS users_id, users.name " |
| 2876 | "AS users_name FROM users ORDER BY users.id " |
| 2877 | "LIMIT :param_1", |
| 2878 | {"param_1": 20}, |
| 2879 | ) |
| 2880 | ], |
| 2881 | ) |
| 2882 | |
| 2883 | self.assert_sql( |
| 2884 | testing.db, |
| 2885 | lambda: q[5:], |
| 2886 | [ |
| 2887 | ( |
| 2888 | "SELECT users.id AS users_id, users.name " |
| 2889 | "AS users_name FROM users ORDER BY users.id " |
| 2890 | "LIMIT -1 OFFSET :param_1", |
| 2891 | {"param_1": 5}, |
| 2892 | ) |
| 2893 | ], |
| 2894 | ) |
| 2895 | |
| 2896 | self.assert_sql(testing.db, lambda: q[2:2], []) |
| 2897 | |
| 2898 | self.assert_sql(testing.db, lambda: q[-2:-5], []) |
| 2899 | |
| 2900 | self.assert_sql( |
nothing calls this directly
no test coverage detected