﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
29308	Clarify how assertQuerysetEqual()'s transform parameter works	Alexander Todorov	Jacob Walls	"According to:
https://docs.djangoproject.com/en/2.0/topics/testing/tools/#django.test.TransactionTestCase.assertQuerysetEqual

> Asserts that a queryset `qs` returns a particular list of values `values`.
> 
> The comparison of the contents of `qs` and `values` is performed using the function `transform`; 

The way I read this is that this assert method receives a queryset and a list parameters and compares their contents for equality. By default it will use `repr` to do that but the user can change this. The way the docs are written suggests that the `transform` function is applied to both the queryset and the `values` list. In other words in my tests I can write:

`self.assertQuerysetEqual(some_query_taken_from_request_context, [test_object1, test_object2, etc])`

The tutorial doesn't use the above but instead hard codes string representations in the tests:
https://docs.djangoproject.com/en/2.0/intro/tutorial05/#testing-our-new-view

IMO this is less optimal, makes test suites more fragile (dependent on repr()) and less intuitive b/c the expected value isn't a list of the actual objects but a list of their representation which may have been obtained elsewhere.

Note: this may sounds like an RFE but if we trust the docs it's a bug.

Note2: I can contribute a PR for this and update the existing test suite & docs. Just let me know how you feel about it."	Cleanup/optimization	closed	Documentation	2.0	Normal	fixed		shubham singh 	Accepted	1	0	0	0	1	0
