20130507 (Tuesday, 07 May 2013)¶
Worked on the docstring of
lino.modlib.accounts.utils
.Adapted the test suite to yesterdays’s changes (new column bailiff in in
welfare.debts.Entries
.
Cannot resolve keyword ‘watched_user’ into field¶
A request to /restful/cal/PanelEvents?sd=05.05.2013&ed=11.05.2013&tv=true (i.e. clicking the “Team View” button in the calendar panel) caused a FieldError “Cannot resolve keyword ‘watched_user’ into field. Choices are: id, team, user”.
The bug was there since 2013-03-20.
Fixing the bug is easy, but how to write a testcase for this?
This is the occasion for a new style of test cases: test cases that use a django.test.Client, but on the project demo database (and not on a test database as the Django test runner creates it). The advantage is that they access the existing demo database and thus don’t need to populate it (load the demo fixtures) for each test run.
One limitation of these cases is of course that they may not modify the database.
It took me some time to understand how easy it actually is: I just wrote a module lino.projects.presto.settings.doctest, then wrote the following code snippet directly into my blog entry:
>>> import os
>>> os.environ['DJANGO_SETTINGS_MODULE'] = 'lino_presto.projects.std.settings.doctests'
>>> from lino.api.shell import *
>>> from django.test import Client
>>> client = Client()
>>> url = '/restful/extensible/PanelEvents?sd=05.05.2013&ed=11.05.2013&tv=true'
>>> res = client.get(url, REMOTE_USER='robin')
>>> print res.status_code
200
To run this test, I added the following to the project test suite:
class BlogTests(LinoTestCase):
def test_20130507(self):
self.run_simple_doctests('docs/blog/2013/0507.rst')
The effect is that python setup.py test or python setup.py test -s tests.BlogTests.test_20130507 will test the above code.
Writing this test case took me several hours (because as i said this was a new system), but then I fixed the bug in a few minutes.
Because the run_simple_doctests
is run in a separate subprocess, it has its own
Python interpreter and thus I can use it for as many Django projects
as I want (one project per .rst file).
Now I can remove the following item from my todo list…
write unit tests to test the bootstrap ui. The best place would be a tested document with a Django test client. But how to instantiate a Django test client from a testcase which does not use a test database but the project’s demo database?
… by writing a few lines of code:
>>> url = '/bs3/products/Products'
>>> res = client.get(url, REMOTE_USER='robin')
>>> print res.status_code
200
(Above test is now covered in lino.tested.presto)
New version numbers¶
The release of 2013-05-05 is now a few days in production, time to increase the version numbers.
Project |
Old version |
New version |
---|---|---|
atelier – A collection of tools for software artists |
0.0.1 |
0.0.2 |
djangosite – A server startup signal for Django |
0.1.3 |
0.1.4 |
north – Another way to migrate Django databases |
0.1.3 |
0.1.4 |
lino – A framework for writing desktop-like web applications using Django and ExtJS |
1.6.6 |
1.6.7 |
lino_welfare – A Lino application for Belgian Public Welfare Centres |
1.1.3 |
1.1.4 |
lino_patrols – A Lino application for managing patrols |
0.0.1 |
0.0.2 |