def setUp(self): self.jqgrid = JqGrid() self.request = fudge.Fake("request") LibraryUser.objects.create(username="******", password="******") LibraryUser.objects.create(username="******", password="******") LibraryUser.objects.create(username="******", password="******") self.jqgrid.model = LibraryUser
class JqGridTest(TestCase): def setUp(self): self.jqgrid = JqGrid() self.request = fudge.Fake("request") LibraryUser.objects.create(username="******", password="******") LibraryUser.objects.create(username="******", password="******") LibraryUser.objects.create(username="******", password="******") self.jqgrid.model = LibraryUser def test_get_filters_should_allow_empty_queries(self): self.request.GET = { "_search": "true", "filters": "", "searchField": "any", "searchOper": "gt", "searchString": "some string", } self.jqgrid.request = self.request filters = self.jqgrid.get_filters() self.assertNotEquals(0, filters["rules"].__len__()) def test_it_should_get_str_from_foreign_keys_instead_of_ids(self): self.request.GET = {"_search": "false", "rows": "10", "page": "1", "sidx": "id", "sord": "asc"} self.jqgrid.model = Book self.jqgrid.form = BookForm self.create_some_books() response = json.loads(self.jqgrid.get_json(self.request)) self.assertEquals("end of hall", response["rows"][0]["on_shelf"]) self.assertEquals("begin of hall", response["rows"][1]["on_shelf"]) def test_it_should_not_handle_get_requests_in_edit(self): """JqGrid sends insert, edit and delete via post requests""" self.request.method = "GET" self.jqgrid.form = LibraryUserForm try: self.jqgrid.handle_edit(self.request) self.fail("It should raise an validation error") except ValidationError: pass def test_it_should_raise_exception_if_theres_no_form_at_edit(self): self.request.method = "POST" try: self.jqgrid.handle_edit(self.request) self.fail("ImproperlyConfigured sould be raised at this point") except ImproperlyConfigured: pass def test_it_should_raise_an_validation_error_on_unknown_op(self): self.request.method = "POST" self.request.POST = {"oper": "invalid_op"} self.jqgrid.form = LibraryUserForm try: self.jqgrid.handle_edit(self.request) self.fail("It should raise an validation error") except ValidationError: pass def test_it_should_raises_validation_error_at_edit_delete_with_noid(self): self.request.method = "POST" self.request.POST = {"oper": "edit"} self.jqgrid.form = LibraryUserForm try: self.jqgrid.handle_edit(self.request) self.fail("It should raise an validation error") except ValidationError: pass def test_it_should_raises_validation_error_on_edit_nonexistent(self): self.request.method = "POST" self.request.POST = {"oper": "edit", "id": 999, "name": "tehname"} self.jqgrid.model = LibraryUser self.jqgrid.form = LibraryUserForm try: self.jqgrid.handle_edit(self.request) self.fail("It should raise an validation error") except ValidationError: pass def test_it_should_return_json_with_error_when_form_is_invalid(self): self.request.method = "POST" self.request.POST = {"oper": "add"} self.jqgrid.model = LibraryUser self.jqgrid.form = LibraryUserForm response = json.loads(self.jqgrid.handle_edit(self.request)) self.assertFalse(response["ok"]) def test_it_should_return_no_error_when_the_add_form_is_valid(self): self.request.method = "POST" self.request.POST = { "oper": "add", "username": "******", "password": "******", "date_joined": "2011-01-01", "last_login": "******", } self.jqgrid.model = LibraryUser self.jqgrid.form = LibraryUserForm response = json.loads(self.jqgrid.handle_edit(self.request)) self.assertTrue(response["ok"]) def test_it_should_update_the_record_when_the_form_is_valid(self): self.request.method = "POST" self.request.POST = {"oper": "edit", "id": "1", "username": "******"} self.jqgrid.model = LibraryUser self.jqgrid.form = LibraryUserForm response = json.loads(self.jqgrid.handle_edit(self.request)) username = LibraryUser.objects.filter(id=1)[0].username self.assertEquals("anotherusername", username) def test_it_should_not_update_the_record_with_invalid_data(self): self.request.method = "POST" self.request.POST = {"oper": "edit", "id": "2", "username": "******"} # duplicated user self.jqgrid.model = LibraryUser self.jqgrid.form = LibraryUserForm response = json.loads(self.jqgrid.handle_edit(self.request)) self.assertFalse(response["ok"]) def test_it_should_delete_when_the_registry_exists(self): self.request.method = "POST" self.request.POST = {"oper": "del", "id": "2"} self.jqgrid.model = LibraryUser self.jqgrid.form = LibraryUserForm response = json.loads(self.jqgrid.handle_edit(self.request)) user2 = LibraryUser.objects.filter(id=2) self.assertEquals(0, len(user2)) def test_fill_form_should_fill_foreign_keys_fields_with_ints(self): self.create_some_books() self.request.method = "POST" self.request.POST = {"oper": "post", "id": "2"} self.jqgrid.model = Book self.jqgrid.form = BookForm self.jqgrid.entry = Book.objects.filter(id=2)[0] self.jqgrid.is_edit_op = True self.jqgrid.request = self.request form = self.jqgrid.fill_form() self.assertEquals(2, form.data["on_shelf"]) def test_it_should_not_make_the_ids_editable_by_default(self): self.setup_default_get() config = json.loads(self.jqgrid.get_config(self.request)) col_id = config["colModel"][0] self.assertTrue(col_id["index"] == "id" and col_id["editable"] == False) def test_it_should_return_the_right_field_type_based_on_form(self): self.setup_default_get() config = json.loads(self.jqgrid.get_config(self.request)) self.assertEquals("text", config["colModel"][0]["edittype"]) self.assertEquals("text", config["colModel"][2]["edittype"]) self.assertEquals("checkbox", config["colModel"][8]["edittype"]) def test_it_should_return_a_list_of_options_for_foreignkey_fields(self): self.setup_default_get() self.create_some_books() self.jqgrid.form = BookForm self.jqgrid.model = Book config = json.loads(self.jqgrid.get_config(self.request)) self.assertEquals(2, config["colModel"][2]["editoptions"]["value"].__len__()) def setup_default_get(self): self.request.method = "GET" self.request.GET = {} self.jqgrid.form = LibraryUserForm self.jqgrid.model = LibraryUser def create_some_books(self): shelf1 = BookShelf.objects.create(location="end of hall") shelf2 = BookShelf.objects.create(location="begin of hall") book1 = Book.objects.create(on_shelf=shelf1, title="book1") book2 = Book.objects.create(on_shelf=shelf2, title="book2")