Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests: Use direct values instead of raw SQL
Supersedes #11. In order to prevent (-1) from being masked by BitField.get_prep_value and converted to 15 (0xf), the test code uses a direct SQL statement. Its implementation has a few peculiarities that may be undesirable: - It uses an Django internal API, the Field.column attribute. Granted, this package already uses a lot of internal APIs, and Field.column is highly unlikely to change. However, in general using less internal APIs is better for future compatibility. - Using low-level API misses a lot of code paths that could have been tested. - Neither db_table nor db_column is escaped. In case we later incorporate tests involving pathological SQL object identifiers, we have to further use quote_name, which is not exactly public API either. Instead, we use models.Value() with an explicit output_field, which still avoids BitField.get_prep_value and inserts the value directly. Further, directly assign to __dict__ so that the BitFieldCreator descriptor's __set__ method is bypassed and the value is assigned unchanged.
- Loading branch information