def test_courts(self): res = self.client.get('/szr/courts') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/courts/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'szr_courts.xhtml') self.assertEqual(tuple(res.context['rows']), ( { 'id': 'MSPHAAB', 'name': 'Městský soud Praha' }, { 'id': 'NSJIMBM', 'name': 'Nejvyšší soud' }, { 'id': 'NSS', 'name': 'Nejvyšší správní soud' }, { 'id': 'OSPHA02', 'name': 'Obvodní soud Praha 2' }, )) check_html(self, res.content)
def test_mainpage(self): res = self.client.get('/uds') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/uds/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'uds_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/uds/', {'date_posted_from': '1.1.2015', 'date_posted_to': '1.7.2016', 'desc_opt': 'icontains', 'format': 'html', 'submit': 'Hledat'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') check_html(self, res.content) res = self.client.post( '/uds/', {'desc': 'rozvrh', 'desc_opt': 'icontains', 'format': 'html', 'submit': 'Hledat'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.redirect_chain[0][1], HTTPStatus.FOUND) check_html(self, res.content) self.assertTrue(link_equal(res.redirect_chain[0][0], '/uds/list/?desc=rozvrh&desc_opt=icontains&start=0')) res = self.client.post( '/uds/', {'date_posted_from': 'XXX', 'desc_opt': 'icontains', 'format': 'html', 'submit': 'Hledat'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_mainpage.xhtml') self.assertEqual(res.context['err_message'], 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/uds/', {'date_posted_from': '1.1.2015', 'date_posted_to': '1.7.2014', 'desc_opt': 'icontains', 'format': 'html', 'submit': 'Hledat'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_mainpage.xhtml') self.assertEqual(res.context['err_message'], 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content)
def test_debtordelall(self): models.Debtor.objects.create(uid=self.user, name_opt=0, first_name_opt=0, desc='Test 1') models.Debtor.objects.create(uid=self.user, name_opt=0, first_name_opt=0, desc='Test 2') self.assertEqual(models.Debtor.objects.count(), 2) res = self.client.get('/dir/debtordelall') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/dir/debtordelall/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/dir/debtordelall/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/dir/debtordelall/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtordelall.xhtml') check_html(self, res.content) res = self.client.post( '/dir/debtordelall/', {'submit_no': 'Ne'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') res = self.client.post( '/dir/debtordelall/', {'submit_yes': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') self.assertEqual(models.Debtor.objects.count(), 2) res = self.client.post( '/dir/debtordelall/', {'submit_yes': 'Ano', 'conf': 'ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') self.assertEqual(models.Debtor.objects.count(), 2) res = self.client.post( '/dir/debtordelall/', {'submit_yes': 'Ano', 'conf': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') check_html(self, res.content) self.assertFalse(models.Debtor.objects.exists())
def test_courts(self): res = self.client.get('/sir/courts') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/sir/courts/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'sir_courts.xhtml') self.assertEqual(res.context['rows'], [{'name': 'Krajský soud v Ostravě', 'short': 'KSOS'}]) check_html(self, res.content)
def test_highlight(self): self.client.force_login(User.objects.get(pk=1)) models.Insolvency.objects.filter(number=577, year=2013).update(notify=True) res = self.client.get('/sir/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sir_mainpage.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') highlight = soup.find_all('td', 'highlight') self.assertEqual(len(highlight), 1) self.assertEqual(highlight[0].text, 'Test 577/2013')
def test_partydelall(self): models.Party.objects.create(uid=self.user, party_opt=0, party='Test 1') models.Party.objects.create(uid=self.user, party_opt=0, party='Test 2') self.assertEqual(models.Party.objects.count(), 2) res = self.client.get('/sur/partydelall') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/sur/partydelall/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/sur/partydelall/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/sur/partydelall/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partydelall.xhtml') check_html(self, res.content) res = self.client.post('/sur/partydelall/', {'submit_no': 'Ne'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') res = self.client.post('/sur/partydelall/', {'submit_yes': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') self.assertEqual(models.Party.objects.count(), 2) res = self.client.post('/sur/partydelall/', { 'submit_yes': 'Ano', 'conf': 'ano' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') self.assertEqual(models.Party.objects.count(), 2) res = self.client.post('/sur/partydelall/', { 'submit_yes': 'Ano', 'conf': 'Ano' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') check_html(self, res.content) self.assertFalse(models.Party.objects.exists())
def test_highlight(self): self.client.force_login(User.objects.get(pk=1)) models.Debtor.objects.filter(desc='Test 14').update(notify=True) res = self.client.get('/dir/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') highlight = soup.find_all('td', 'highlight') self.assertEqual(len(highlight), 1) self.assertEqual(highlight[0].text, 'Test 14')
def test_jsonlist(self): res1 = '''[{{"posted": "2009-07-29T08:10:00", "publisher": "Okresn\u00ed soud Pelh\u0159imov", "desc": "Roz\ vrh pr\u00e1ce, zm\u011bna \u010d. 1", "ref": "0 SPR 653/2009", "agenda": "Spr\u00e1va soudu", "files": [{{"id": 82\ 788, "name": "zm\u011bna_\u010d._1_RP_.pdf", "url": "{}uds/82788/změna_č._1_RP_.pdf"}}]}}]'''.format(REPO_URL) res = self.client.get('/uds/jsonlist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/uds/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/uds/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'application/json; charset=utf-8') res = self.client.get('/uds/jsonlist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/jsonlist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/jsonlist/?year=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/jsonlist/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/jsonlist/?date_posted_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/jsonlist/?date_posted_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/jsonlist/?desc_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/jsonlist/?register=spr') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertJSONEqual(res.content.decode('utf-8'), res1) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/uds/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_courts(self): res = self.client.get('/szr/courts') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/courts/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'szr_courts.xhtml') self.assertEqual( tuple(res.context['rows']), ({'id': 'MSPHAAB', 'name': 'Městský soud Praha'}, {'id': 'NSJIMBM', 'name': 'Nejvyšší soud'}, {'id': 'NSS', 'name': 'Nejvyšší správní soud'}, {'id': 'OSPHA02', 'name': 'Obvodní soud Praha 2'}, )) check_html(self, res.content)
def test_insdel(self): ins_id = models.Insolvency.objects.create( uid=self.user, number=1, year=2016, desc='Test').id res = self.client.get('/sir/insdel/{:d}'.format(ins_id)) self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/sir/insdel/{:d}/'.format(ins_id)) self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/sir/insdel/{:d}/'.format(ins_id), follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/sir/insdel/{:d}/'.format(ins_id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sir_insdel.xhtml') check_html(self, res.content) res = self.client.post( '/sir/insdel/{:d}/'.format(ins_id), {'submit_no': 'Ne'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sir_mainpage.xhtml') res = self.client.post( '/sir/insdel/{:d}/'.format(ins_id), {'submit_yes': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sir_insdeleted.xhtml') self.assertFalse(models.Insolvency.objects.filter(pk=ins_id).exists()) check_html(self, res.content) res = self.client.post('/sir/insdel/{:d}/'.format(ins_id)) self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND)
def test_debtordel(self): debtor_id = models.Debtor.objects.create(uid=self.user, name_opt=0, first_name_opt=0, desc='Test').id res = self.client.get('/dir/debtordel/{:d}'.format(debtor_id)) self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/dir/debtordel/{:d}/'.format(debtor_id)) self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/dir/debtordel/{:d}/'.format(debtor_id), follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/dir/debtordel/{:d}/'.format(debtor_id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtordel.xhtml') check_html(self, res.content) res = self.client.post( '/dir/debtordel/{:d}/'.format(debtor_id), {'submit_no': 'Ne'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') res = self.client.post( '/dir/debtordel/{:d}/'.format(debtor_id), {'submit_yes': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtordeleted.xhtml') self.assertFalse(models.Debtor.objects.filter(pk=debtor_id).exists()) check_html(self, res.content) res = self.client.post('/dir/debtordel/{:d}/'.format(debtor_id)) self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND)
def test_procdel(self): proc_id = models.Proceedings.objects.create( uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=1, year=2016, desc='Test').id res = self.client.get('/szr/procdel/{:d}'.format(proc_id)) self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/procdel/{:d}/'.format(proc_id)) self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/szr/procdel/{:d}/'.format(proc_id), follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/szr/procdel/{:d}/'.format(proc_id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procdel.xhtml') check_html(self, res.content) res = self.client.post( '/szr/procdel/{:d}/'.format(proc_id), {'submit_no': 'Ne'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/szr/procdel/{:d}/'.format(proc_id), {'submit_yes': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procdeleted.xhtml') self.assertFalse(models.Proceedings.objects.filter(pk=proc_id).exists()) check_html(self, res.content) res = self.client.post('/szr/procdel/{:d}/'.format(proc_id)) self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND)
def test_procdel(self): proc_id = models.Proceedings.objects.create(uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=1, year=2016, desc='Test').id res = self.client.get('/szr/procdel/{:d}'.format(proc_id)) self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/procdel/{:d}/'.format(proc_id)) self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/szr/procdel/{:d}/'.format(proc_id), follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/szr/procdel/{:d}/'.format(proc_id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procdel.xhtml') check_html(self, res.content) res = self.client.post('/szr/procdel/{:d}/'.format(proc_id), {'submit_no': 'Ne'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post('/szr/procdel/{:d}/'.format(proc_id), {'submit_yes': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procdeleted.xhtml') self.assertFalse( models.Proceedings.objects.filter(pk=proc_id).exists()) check_html(self, res.content) res = self.client.post('/szr/procdel/{:d}/'.format(proc_id)) self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND)
def test_partydel(self): party_id = models.Party.objects.create(uid=self.user, party_opt=0, party='Test').id res = self.client.get('/sur/partydel/{:d}'.format(party_id)) self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/sur/partydel/{:d}/'.format(party_id)) self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/sur/partydel/{:d}/'.format(party_id), follow=True) self.assertTemplateUsed(res, 'login.xhtml') check_html(self, res.content) self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/sur/partydel/{:d}/'.format(party_id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partydel.xhtml') check_html(self, res.content) res = self.client.post('/sur/partydel/{:d}/'.format(party_id), {'submit_no': 'Ne'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') res = self.client.post('/sur/partydel/{:d}/'.format(party_id), {'submit_yes': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partydeleted.xhtml') self.assertFalse(models.Party.objects.filter(pk=party_id).exists()) check_html(self, res.content) res = self.client.post('/sur/partydel/{:d}/'.format(party_id)) self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND)
def test_csvlist(self): res0 = '''Soud,Jednací síň,Datum,Čas,Spisová značka,Řešitel,Účastníci řízení,Druh jednání,Neveřejné,Zrušeno ''' res1 = res0 + '''Obvodní soud Praha 2,č. 101/přízemí - přístavba,01.12.2016,09:00,26 C 181/2015,JUDr. Henzlo\ vá Šárka,ČR - Ministerstvo spravedlnosti ČR;Mgr. Helena Morozová,Jednání,ne,ne Obvodní soud Praha 2,č. 101/přízemí - přístavba,01.12.2016,12:00,26 C 94/2015,JUDr. Henzlová Šárka,Česká republika -\ Ministerstvo spravedlnosti;Alois Hlásenský,Jednání,ne,ne ''' res2 = res0 + '''Obvodní soud Praha 2,č. 101/přízemí - přístavba,01.12.2016,12:00,26 C 94/2015,JUDr. Henzlov\ á Šárka,Česká republika - Ministerstvo spravedlnosti;Alois Hlásenský,Jednání,ne,ne ''' res = self.client.get('/psj/csvlist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/psj/csvlist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/psj/csvlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'text/csv; charset=utf-8') res = self.client.get('/psj/csvlist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?register=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?year=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?courtroom=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?courtroom=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?judge=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?judge=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/csvlist/?register=T') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertEqual( res.content.decode('utf-8').replace('\r\n', '\n'), res0) res = self.client.get('/psj/csvlist/?register=C') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertEqual( res.content.decode('utf-8').replace('\r\n', '\n'), res1) res = self.client.get('/psj/csvlist/?party=oi&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertEqual( res.content.decode('utf-8').replace('\r\n', '\n'), res2) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/psj/csvlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_htmllist(self): res = self.client.get('/psj/list') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/psj/list/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/psj/list/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'psj_list.xhtml') check_html(self, res.content) res = self.client.get('/psj/list/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?register=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?year=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?courtroom=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?courtroom=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?judge=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?judge=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/list/?start=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get( '/psj/list/?date_from=2015-01-01&date_to=2199-07-01®ister=C&party_opt=icontains' ) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 2) check_html(self, res.content) res = self.client.get('/psj/list/?start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 2) check_html(self, res.content) res = self.client.get('/psj/list/?register=T') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/psj/list/?date_from=2016-12-01') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 2) check_html(self, res.content) res = self.client.get('/psj/list/?date_from=2016-12-02') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/psj/list/?date_to=2016-12-01') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 2) check_html(self, res.content) res = self.client.get('/psj/list/?date_to=2016-11-30') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/psj/list/?court=OSPHA02') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 2) check_html(self, res.content) res = self.client.get('/psj/list/?court=OSPHA03') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/psj/list/?courtroom={:d}'.format( models.Courtroom.objects.first().id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 2) res = self.client.get('/psj/list/?courtroom=9999') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/psj/list/?judge={:d}'.format( models.Hearing.objects.first().judge_id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 2) check_html(self, res.content) res = self.client.get('/psj/list/?judge=9999') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/psj/list/?party=moroz&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/psj/list/?party=mgr&party_opt=istartswith') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/psj/list/?party=zová&party_opt=iendswith') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get( '/psj/list/?party=mgr.+helena+morozová&party_opt=iexact') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) hear = models.Hearing.objects.first().__dict__ del hear['id'], hear['_state'] for number in range(200, 437): hear['number'] = number models.Hearing(**hear).save() res = self.client.get('/psj/list/?senate=26') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 3) self.assertEqual(links[0]['href'], '#') self.assertTrue( link_equal(links[1]['href'], '/psj/list/?senate=26&start=50')) self.assertTrue( link_equal(links[2]['href'], '/psj/list/?senate=26&start=200')) res = self.client.get('/psj/list/?senate=26&start=50') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 5) self.assertTrue( link_equal(links[0]['href'], '/psj/list/?senate=26&start=0')) self.assertTrue( link_equal(links[1]['href'], '/psj/list/?senate=26&start=0')) self.assertEqual(links[2]['href'], '#') self.assertTrue( link_equal(links[3]['href'], '/psj/list/?senate=26&start=100')) self.assertTrue( link_equal(links[4]['href'], '/psj/list/?senate=26&start=200')) res = self.client.get('/psj/list/?senate=26&start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 5) self.assertTrue( link_equal(links[0]['href'], '/psj/list/?senate=26&start=0')) self.assertTrue( link_equal(links[1]['href'], '/psj/list/?senate=26&start=50')) self.assertEqual(links[2]['href'], '#') self.assertTrue( link_equal(links[3]['href'], '/psj/list/?senate=26&start=150')) self.assertTrue( link_equal(links[4]['href'], '/psj/list/?senate=26&start=200')) res = self.client.get('/psj/list/?senate=26&start=200') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(len(res.context['rows']), 39) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 3) self.assertTrue( link_equal(links[0]['href'], '/psj/list/?senate=26&start=0')) self.assertTrue( link_equal(links[1]['href'], '/psj/list/?senate=26&start=150')) self.assertEqual(links[2]['href'], '#')
def test_partybatchform(self): models.Party.objects.create( uid=self.user, party_opt=0, party='Test 01') models.Party.objects.create( uid=self.user, party_opt=0, party='Test 05') models.Party.objects.create( uid=self.user, party_opt=0, party='Test 05') res = self.client.get('/sur/partybatchform') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/sur/partybatchform/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/sur/partybatchform/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/sur/partybatchform/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partybatchform.xhtml') check_html(self, res.content) res = self.client.post( '/sur/partybatchform/', {'submit_load': 'Načíst'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partybatchform.xhtml') self.assertContains(res, 'Nejprve zvolte soubor k načtení') check_html(self, res.content) res = self.client.post( '/sur/partybatchform/', {'submit_xxx': 'XXX'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partybatchform.xhtml') self.assertEqual(res.context['err_message'], 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) with open(join(TEST_DATA_DIR, 'sur_import.csv'), 'rb') as infile: res = self.client.post( '/sur/partybatchform/', {'submit_load': 'Načíst', 'load': infile}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partybatchresult.xhtml') self.assertEqual(models.Party.objects.count(), 9) self.assertEqual(res.context['count'], 6) self.assertEqual( res.context['errors'], [(1, 'Chybná délka řetězce'), (3, 'Chybná délka řetězce'), (4, 'Chybná zkratka pro posici'), (5, 'Řetězci "Test 05" odpovídá více než jeden účastník')]) check_html(self, res.content) res = self.client.get('/sur/partyexport/') self.assertEqual( res.content.decode('utf-8'), '''\ Test 01:* Test 05:* Test 05:* Test 06:* Test 07:* Test 08:< Test 09:> Test 10:= {}:* '''.format('T' * 80).replace('\n', '\r\n'))
def test_main(self): cases = ( ('100000000', 'CZK', '', '', '1', 'none', '1.000.000'), ('1000000', 'CZK', '', '', '1', 'epr', '20.000'), ('100000000', 'CZK', '', '', '1', 'nmu', '1.000.000'), ('5000000', 'CZK', '', '', '1', 'vyz', '10.000'), ('10000000', 'CZK', '', '', '1', 'vyk', '50.000'), ('5000000', 'CZK', '', '', '1', 'sm', '20.000'), ('100000000', 'CZK', '', '', '1', 'inc', '1.000'), ('200000000', 'CZK', '', '', '1', 'usch', '1.000.000'), ('5690', 'EUR', '', '1.7.2016', '4', 'none', '4.864'), ('8000', 'USD', '', '1.7.2016', '4', 'none', '13.734'), ('29158900', 'OTH', 'THB', '1.7.2016', '4', 'none', '1.449.635'), ('1', 'CZK', '', '', '1', 'none', '600'), ('100', 'CZK', '', '', '1', 'none', '600'), ('1000', 'CZK', '', '', '1', 'none', '600'), ('15099,99', 'CZK', '', '', '1', 'none', '600'), ('15100,00', 'CZK', '', '', '1', 'none', '610'), ('25000000', 'CZK', '', '', '1', 'none', '1.000.000'), ('1', 'CZK', '', '', '1', 'epr', '300'), ('100', 'CZK', '', '', '1', 'epr', '300'), ('1000', 'CZK', '', '', '1', 'epr', '300'), ('15099,99', 'CZK', '', '', '1', 'epr', '300'), ('15100,00', 'CZK', '', '', '1', 'epr', '310'), ('1', 'CZK', '', '', '1', 'nmu', '600'), ('100', 'CZK', '', '', '1', 'nmu', '600'), ('1000', 'CZK', '', '', '1', 'nmu', '600'), ('15099,99', 'CZK', '', '', '1', 'nmu', '600'), ('15100,00', 'CZK', '', '', '1', 'nmu', '610'), ('25000000', 'CZK', '', '', '1', 'nmu', '1.000.000'), ('1', 'CZK', '', '', '1', 'vyz', '300'), ('30000', 'CZK', '', '', '1', 'vyz', '300'), ('1000000', 'CZK', '', '', '1', 'vyz', '10.000'), ('1', 'CZK', '', '', '1', 'vyk', '300'), ('15000', 'CZK', '', '', '1', 'vyk', '300'), ('2500000', 'CZK', '', '', '1', 'vyk', '50.000'), ('1', 'CZK', '', '', '1', 'sm', '300'), ('15000', 'CZK', '', '', '1', 'sm', '300'), ('1000000', 'CZK', '', '', '1', 'sm', '20.000'), ('1', 'CZK', '', '', '1', 'inc', '1.000'), ('1', 'CZK', '', '', '1', 'usch', '200'), ('20000', 'CZK', '', '', '1', 'usch', '200'), ('100000000', 'CZK', '', '', '1', 'usch', '1.000.000'), ('1', 'CZK', '', '', '2', 'none', '1.000'), ('100', 'CZK', '', '', '2', 'none', '1.000'), ('1000', 'CZK', '', '', '2', 'none', '1.000'), ('20099,99', 'CZK', '', '', '2', 'none', '1.000'), ('20100,00', 'CZK', '', '', '2', 'none', '1.010'), ('40000000', 'CZK', '', '', '2', 'none', '2.000.000'), ('40000100', 'CZK', '', '', '2', 'none', '2.000.010'), ('250000000', 'CZK', '', '', '2', 'none', '4.100.000'), ('1000000000', 'CZK', '', '', '2', 'none', '4.100.000'), ('1', 'CZK', '', '', '2', 'epr', '800'), ('100', 'CZK', '', '', '2', 'epr', '800'), ('1000', 'CZK', '', '', '2', 'epr', '800'), ('20099,99', 'CZK', '', '', '2', 'epr', '800'), ('20100,00', 'CZK', '', '', '2', 'epr', '810'), ('1000000', 'CZK', '', '', '2', 'epr', '40.000'), ('1', 'CZK', '', '', '2', 'nmu', '2.000'), ('100', 'CZK', '', '', '2', 'nmu', '2.000'), ('1000', 'CZK', '', '', '2', 'nmu', '2.000'), ('200099,99', 'CZK', '', '', '2', 'nmu', '2.000'), ('200100,00', 'CZK', '', '', '2', 'nmu', '2.010'), ('200000000', 'CZK', '', '', '2', 'nmu', '2.000.000'), ('1000000000', 'CZK', '', '', '2', 'nmu', '2.000.000'), ('1', 'CZK', '', '', '2', 'vyz', '500'), ('50000', 'CZK', '', '', '2', 'vyz', '500'), ('1500000', 'CZK', '', '', '2', 'vyz', '15.000'), ('5000000', 'CZK', '', '', '2', 'vyz', '15.000'), ('1', 'CZK', '', '', '2', 'vyk', '500'), ('25000', 'CZK', '', '', '2', 'vyk', '500'), ('3750000', 'CZK', '', '', '2', 'vyk', '75.000'), ('10000000', 'CZK', '', '', '2', 'vyk', '75.000'), ('1', 'CZK', '', '', '2', 'sm', '500'), ('25000', 'CZK', '', '', '2', 'sm', '500'), ('1500000', 'CZK', '', '', '2', 'sm', '30.000'), ('5000000', 'CZK', '', '', '2', 'sm', '30.000'), ('1', 'CZK', '', '', '2', 'inc', '1.000'), ('20000', 'CZK', '', '', '2', 'inc', '1.000'), ('100000000', 'CZK', '', '', '2', 'inc', '2.000.000'), ('500000000', 'CZK', '', '', '2', 'inc', '2.000.000'), ('1', 'CZK', '', '', '2', 'usch', '250'), ('25000', 'CZK', '', '', '2', 'usch', '250'), ('200000000', 'CZK', '', '', '2', 'usch', '2.000.000'), ('1000000000', 'CZK', '', '', '2', 'usch', '2.000.000'), ('1', 'CZK', '', '', '3', 'none', '1.000'), ('100', 'CZK', '', '', '3', 'none', '1.000'), ('1000', 'CZK', '', '', '3', 'none', '1.000'), ('20099,99', 'CZK', '', '', '3', 'none', '1.000'), ('20100,00', 'CZK', '', '', '3', 'none', '1.010'), ('40000000', 'CZK', '', '', '3', 'none', '2.000.000'), ('40000100', 'CZK', '', '', '3', 'none', '2.000.010'), ('250000000', 'CZK', '', '', '3', 'none', '4.100.000'), ('1000000000', 'CZK', '', '', '3', 'none', '4.100.000'), ('1', 'CZK', '', '', '3', 'epr', '400'), ('100', 'CZK', '', '', '3', 'epr', '400'), ('1000', 'CZK', '', '', '3', 'epr', '400'), ('10000', 'CZK', '', '', '3', 'epr', '400'), ('10099,99', 'CZK', '', '', '3', 'epr', '400'), ('10100,00', 'CZK', '', '', '3', 'epr', '800'), ('20099,99', 'CZK', '', '', '3', 'epr', '800'), ('20100,00', 'CZK', '', '', '3', 'epr', '810'), ('1000000', 'CZK', '', '', '3', 'epr', '40.000'), ('1', 'CZK', '', '', '3', 'nmu', '2.000'), ('100', 'CZK', '', '', '3', 'nmu', '2.000'), ('1000', 'CZK', '', '', '3', 'nmu', '2.000'), ('200099,99', 'CZK', '', '', '3', 'nmu', '2.000'), ('200100,00', 'CZK', '', '', '3', 'nmu', '2.010'), ('200000000', 'CZK', '', '', '3', 'nmu', '2.000.000'), ('1000000000', 'CZK', '', '', '3', 'nmu', '2.000.000'), ('1', 'CZK', '', '', '3', 'vyz', '500'), ('50000', 'CZK', '', '', '3', 'vyz', '500'), ('1500000', 'CZK', '', '', '3', 'vyz', '15.000'), ('5000000', 'CZK', '', '', '3', 'vyz', '15.000'), ('1', 'CZK', '', '', '3', 'vyk', '1.000'), ('20000', 'CZK', '', '', '3', 'vyk', '1.000'), ('40000000', 'CZK', '', '', '3', 'vyk', '2.000.000'), ('250000000', 'CZK', '', '', '3', 'vyk', '4.100.000'), ('1000000000', 'CZK', '', '', '3', 'vyk', '4.100.000'), ('1', 'CZK', '', '', '3', 'sm', '500'), ('25000', 'CZK', '', '', '3', 'sm', '500'), ('1500000', 'CZK', '', '', '3', 'sm', '30.000'), ('5000000', 'CZK', '', '', '3', 'sm', '30.000'), ('1', 'CZK', '', '', '3', 'inc', '1.000'), ('20000', 'CZK', '', '', '3', 'inc', '1.000'), ('100000000', 'CZK', '', '', '3', 'inc', '2.000.000'), ('500000000', 'CZK', '', '', '3', 'inc', '2.000.000'), ('1', 'CZK', '', '', '3', 'usch', '250'), ('25000', 'CZK', '', '', '3', 'usch', '250'), ('200000000', 'CZK', '', '', '3', 'usch', '2.000.000'), ('1000000000', 'CZK', '', '', '3', 'usch', '2.000.000'), ('1', 'CZK', '', '', '4', 'none', '1.000'), ('100', 'CZK', '', '', '4', 'none', '1.000'), ('1000', 'CZK', '', '', '4', 'none', '1.000'), ('20099,99', 'CZK', '', '', '4', 'none', '1.005'), ('20100,00', 'CZK', '', '', '4', 'none', '1.005'), ('1234567', 'CZK', '', '', '4', 'none', '61.728'), ('40000000', 'CZK', '', '', '4', 'none', '2.000.000'), ('40000100', 'CZK', '', '', '4', 'none', '2.000.001'), ('250000000', 'CZK', '', '', '4', 'none', '4.100.000'), ('1000000000', 'CZK', '', '', '4', 'none', '4.100.000'), ('1', 'CZK', '', '', '4', 'epr', '400'), ('100', 'CZK', '', '', '4', 'epr', '400'), ('1000', 'CZK', '', '', '4', 'epr', '400'), ('10000', 'CZK', '', '', '4', 'epr', '400'), ('10000,01', 'CZK', '', '', '4', 'epr', '800'), ('10099,99', 'CZK', '', '', '4', 'epr', '800'), ('10100,00', 'CZK', '', '', '4', 'epr', '800'), ('20099,99', 'CZK', '', '', '4', 'epr', '804'), ('20100,00', 'CZK', '', '', '4', 'epr', '804'), ('1000000', 'CZK', '', '', '4', 'epr', '40.000'), ('1', 'CZK', '', '', '4', 'nmu', '2.000'), ('100', 'CZK', '', '', '4', 'nmu', '2.000'), ('1000', 'CZK', '', '', '4', 'nmu', '2.000'), ('200099,99', 'CZK', '', '', '4', 'nmu', '2.001'), ('200100,00', 'CZK', '', '', '4', 'nmu', '2.001'), ('200000000', 'CZK', '', '', '4', 'nmu', '2.000.000'), ('1000000000', 'CZK', '', '', '4', 'nmu', '2.000.000'), ('1', 'CZK', '', '', '4', 'vyz', '500'), ('50000', 'CZK', '', '', '4', 'vyz', '500'), ('1500000', 'CZK', '', '', '4', 'vyz', '15.000'), ('5000000', 'CZK', '', '', '4', 'vyz', '15.000'), ('1', 'CZK', '', '', '4', 'vyk', '1.000'), ('20000', 'CZK', '', '', '4', 'vyk', '1.000'), ('40000000', 'CZK', '', '', '4', 'vyk', '2.000.000'), ('250000000', 'CZK', '', '', '4', 'vyk', '4.100.000'), ('1000000000', 'CZK', '', '', '4', 'vyk', '4.100.000'), ('1', 'CZK', '', '', '4', 'sm', '500'), ('25000', 'CZK', '', '', '4', 'sm', '500'), ('1500000', 'CZK', '', '', '4', 'sm', '30.000'), ('5000000', 'CZK', '', '', '4', 'sm', '30.000'), ('1', 'CZK', '', '', '4', 'inc', '1.000'), ('20000', 'CZK', '', '', '4', 'inc', '1.000'), ('100000000', 'CZK', '', '', '4', 'inc', '2.000.000'), ('500000000', 'CZK', '', '', '4', 'inc', '2.000.000'), ('1', 'CZK', '', '', '4', 'usch', '250'), ('25000', 'CZK', '', '', '4', 'usch', '250'), ('200000000', 'CZK', '', '', '4', 'usch', '2.000.000'), ('1000000000', 'CZK', '', '', '4', 'usch', '2.000.000'), ) err_cases = ( ('-100', 'CZK', '', '', '1', 'none'), ('0', 'CZK', '', '', '1', 'none'), ('0,01', 'CZK', '', '', '1', 'none'), ('0,99', 'CZK', '', '', '1', 'none'), ('1000000,01', 'CZK', '', '', '1', 'epr'), ('5690', 'EUR', '', '', '1', 'none'), ('5690', 'XXX', '', '1.7.2016', '1', 'none'), ) res = self.client.get('/sop') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/sop/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'sop_mainpage.xhtml') check_html(self, res.content) num = 1 for test in cases: res = self.client.post( '/sop/', {'basis': test[0], 'curr_0': test[1], 'curr_1': test[2], 'fx_date': test[3], 'model': test[4], 'opt': test[5]}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sop_mainpage.xhtml') soup = BeautifulSoup(res.content, 'html.parser') msg = soup.find('td', 'msg').select('div') self.assertGreater(len(msg), 1) self.assertEqual(msg[1].text, '{} Kč'.format(test[6])) check = num < 12 check_html(self, res.content, key=num, check_html=check, check_classes=check) num += 1 num = 1 for test in err_cases: res = self.client.post( '/sop/', {'basis': test[0], 'curr_0': test[1], 'curr_1': test[2], 'fx_date': test[3], 'model': test[4], 'opt': test[5]}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sop_mainpage.xhtml') soup = BeautifulSoup(res.content, 'html.parser') msg = soup.find('td', 'msg').select('div') self.assertEqual(len(msg), 1) check_html(self, res.content, key=num) num += 1
def test_main(self): cases = ( ('1.7.2016', '1', '', '', '01.07.2017', '01.11.2016', '01.01.2017', '01.03.2017'), ('1. 7. 2016', '1', '', '', '01.07.2017', '01.11.2016', '01.01.2017', '01.03.2017'), ('01.07.2016', '1', '', '', '01.07.2017', '01.11.2016', '01.01.2017', '01.03.2017'), ('12.7.2011', '11', '5', '16', '28.12.2022', '07.05.2015', '04.04.2017', '04.03.2019'), ('7.7.2011', '', '1', '', '07.08.2011', '17.07.2011', '22.07.2011', '27.07.2011'), ) err_cases = ( ('1.7.2016', '', '', ''), ('XXX', '1', '', ''), ('1.7.2016', 'XXX', '', ''), ('1.7.2016', '', 'XXX', ''), ('1.7.2016', '', '', 'XXX'), ('1.7.2016', '1', 'XXX', ''), ('1.7.2016', '0', '', ''), ('1.7.2016', '-1', '', ''), ) res = self.client.get('/dvt') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/dvt/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'dvt_mainpage.xhtml') check_html(self, res.content) num = 1 for test in cases: res = self.client.post( '/dvt/', { 'beg_date': test[0], 'years': test[1], 'months': test[2], 'days': test[3] }) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dvt_mainpage.xhtml') soup = BeautifulSoup(res.content, 'html.parser') msg = soup.find('td', 'msg').select('div') self.assertEqual(len(msg), 4) self.assertEqual(msg[0].text, 'Trest skončí: {}'.format(test[4])) self.assertEqual(msg[1].text, 'Třetina trestu: {}'.format(test[5])) self.assertEqual(msg[2].text, 'Polovina trestu: {}'.format(test[6])) self.assertEqual(msg[3].text, 'Dvě třetiny trestu: {}'.format(test[7])) check_html(self, res.content, key=num) num += 1 num = 1 for test in err_cases: res = self.client.post( '/dvt/', { 'beg_date': test[0], 'years': test[1], 'months': test[2], 'days': test[3] }) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dvt_mainpage.xhtml') soup = BeautifulSoup(res.content, 'html.parser') msg = soup.find('td', 'msg').select('div') self.assertEqual(msg[0].text, 'Chybné zadání') check_html(self, res.content, key=num) num += 1
def test_procform(self): res = self.client.get('/szr/procform') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/procform/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/szr/procform/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.client.force_login(User.objects.get(pk=1)) res = self.client.get('/szr/procform/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'szr_procform.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('h1') self.assertEqual(len(title), 1) self.assertEqual(title[0].text, 'Nové řízení') res = self.client.post('/szr/procform/', { 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'XXX', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': '-1', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': 'XXX', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': '52', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': '52', 'register': 'XXX', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '0', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': 'XXX', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': '1989', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': 'XXX', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/procform/', {'submit_back': 'Zpět bez uložení'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test 6', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': '2016', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post('/szr/procform/', { 'court': 'MSPHAAB', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) proc_id = models.Proceedings.objects.create(uid_id=1, court_id='MSPHAAB', senate=52, register='C', number=1, year=2016, desc='Test 2').id res = self.client.get('/szr/procform/{:d}/'.format(proc_id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'szr_procform.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('h1') self.assertEqual(len(title), 1) self.assertEqual(title[0].text, 'Úprava řízení') res = self.client.post('/szr/procform/{:d}/'.format(proc_id), { 'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test 8', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') proc = models.Proceedings.objects.get(pk=proc_id) self.assertEqual(proc.senate, 52) self.assertEqual(proc.register, 'C') self.assertEqual(proc.number, 110) self.assertEqual(proc.year, 2016) self.assertEqual(proc.desc, 'Test 8') check_html(self, res.content) res = self.client.post('/szr/procform/{:d}/'.format(proc_id), { 'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test 9', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') proc = models.Proceedings.objects.get(pk=proc_id) self.assertEqual(proc.senate, 52) self.assertEqual(proc.register, 'C') self.assertEqual(proc.number, 110) self.assertEqual(proc.year, 2016) self.assertEqual(proc.desc, 'Test 9') check_html(self, res.content)
def test_debtorbatchform(self): models.Debtor.objects.create(uid=self.user, name='Název 1', name_opt=0, first_name_opt=0, desc='Test 1') models.Debtor.objects.create(uid=self.user, name_opt=0, first_name_opt=0, desc='Test 21') models.Debtor.objects.create(uid=self.user, name_opt=0, first_name_opt=0, desc='Test 21') res = self.client.get('/dir/debtorbatchform') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/dir/debtorbatchform/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/dir/debtorbatchform/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/dir/debtorbatchform/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorbatchform.xhtml') check_html(self, res.content) res = self.client.post( '/dir/debtorbatchform/', {'submit_load': 'Načíst'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorbatchform.xhtml') self.assertContains(res, 'Nejprve zvolte soubor k načtení') check_html(self, res.content) res = self.client.post( '/dir/debtorbatchform/', {'submit_xxx': 'XXX'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorbatchform.xhtml') self.assertEqual(res.context['err_message'], 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) with open(join(TEST_DATA_DIR, 'dir_import.csv'), 'rb') as infile: res = self.client.post( '/dir/debtorbatchform/', {'submit_load': 'Načíst', 'load': infile}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorbatchresult.xhtml') self.assertEqual(models.Debtor.objects.count(), 9) self.assertEqual(res.context['count'], 7) self.assertEqual( res.context['errors'], [(3, 'Prázdný popis'), (4, 'Chybný formát'), (5, 'Chybná zkratka pro posici v poli <q>název</q>'), (6, 'Příliš dlouhé pole <q>název</q>'), (7, 'Chybná zkratka pro posici v poli <q>jméno</q>'), (8, 'Příliš dlouhé pole <q>jméno</q>'), (9, 'Chybná hodnota pro IČO'), (10, 'Chybná hodnota pro IČO'), (11, 'Chybná hodnota pro DIČ'), (12, 'Chybná hodnota pro rodné číslo'), (13, 'Chybná hodnota pro datum narození'), (14, 'Chybná hodnota pro pole <q>rokNarozeníOd</q>'), (15, 'Chybná hodnota pro pole <q>rokNarozeníOd</q>'), (16, 'Chybná hodnota pro pole <q>rokNarozeníDo</q>'), (17, 'Chybná hodnota pro pole <q>rokNarozeníDo</q>'), (18, 'Chybný interval pro rok narození'), (19, 'Chybný formát'), (20, 'Chybný parametr: "xxx"'), (21, 'Popisu "Test 21" odpovídá více než jeden dlužník'), (28, 'Příliš dlouhý popis'), ]) check_html(self, res.content) res = self.client.get('/dir/debtorexport/') self.assertEqual( res.content.decode('utf-8'), '''Test 1,název=Název 2:* Test 21 Test 21 Test 22,soud=KSOS,název=Název:*,jméno=Jméno:<,IČO=12345678,DIČ=001-12345678,RČ=700101/1234,datumNarození=01.01.1970,\ rokNarozeníOd=1965,rokNarozeníDo=1966 Test 23,soud=KSOS,název=Název:<,jméno=Jméno:>,IČO=12345678,DIČ=001-12345678,RČ=700101/1234,datumNarození=01.01.1970,\ rokNarozeníOd=1965,rokNarozeníDo=1966 Test 24,soud=KSOS,název=Název:>,jméno=Jméno:=,IČO=12345678,DIČ=001-12345678,RČ=700101/1234,datumNarození=01.01.1970,\ rokNarozeníOd=1965,rokNarozeníDo=1966 Test 25,soud=KSOS,název=Název:=,jméno=Jméno:*,IČO=12345678,DIČ=001-12345678,RČ=700101/1234,datumNarození=01.01.1970,\ rokNarozeníOd=1965,rokNarozeníDo=1966 Test 26,soud=KSOS,název=Název:*,jméno=Jméno:*,IČO=12345678,DIČ=001-12345678,RČ=700101/1234,datumNarození=01.01.1970,\ rokNarozeníOd=1965,rokNarozeníDo=1966 {} '''.format('T' * 255).replace('\n', '\r\n'))
def test_procform(self): res = self.client.get('/szr/procform') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/procform/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/szr/procform/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.client.force_login(User.objects.get(pk=1)) res = self.client.get('/szr/procform/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'szr_procform.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('h1') self.assertEqual(len(title), 1) self.assertEqual(title[0].text, 'Nové řízení') res = self.client.post( '/szr/procform/', {'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'XXX', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': '-1', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': 'XXX', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': '52', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': '52', 'register': 'XXX', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '0', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': 'XXX', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': '1989', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': 'XXX', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'submit_back': 'Zpět bez uložení'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test 6', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': '2016', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/szr/procform/', {'court': 'MSPHAAB', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) proc_id = models.Proceedings.objects.create( uid_id=1, court_id='MSPHAAB', senate=52, register='C', number=1, year=2016, desc='Test 2').id res = self.client.get('/szr/procform/{:d}/'.format(proc_id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'szr_procform.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('h1') self.assertEqual(len(title), 1) self.assertEqual(title[0].text, 'Úprava řízení') res = self.client.post( '/szr/procform/{:d}/'.format(proc_id), {'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test 8', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') proc = models.Proceedings.objects.get(pk=proc_id) self.assertEqual(proc.senate, 52) self.assertEqual(proc.register, 'C') self.assertEqual(proc.number, 110) self.assertEqual(proc.year, 2016) self.assertEqual(proc.desc, 'Test 8') check_html(self, res.content) res = self.client.post( '/szr/procform/{:d}/'.format(proc_id), {'court': 'MSPHAAB', 'senate': '52', 'register': 'C', 'number': '110', 'year': '2016', 'desc': 'Test 9', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') proc = models.Proceedings.objects.get(pk=proc_id) self.assertEqual(proc.senate, 52) self.assertEqual(proc.register, 'C') self.assertEqual(proc.number, 110) self.assertEqual(proc.year, 2016) self.assertEqual(proc.desc, 'Test 9') check_html(self, res.content)
def test_mainpage(self): res = self.client.get('/szr') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/szr/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/szr/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/szr/', {'email': 'xxx', 'submit': 'Změnit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/szr/', {'email': 'alt@' + LOCAL_DOMAIN, 'submit': 'Změnit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.user = User.objects.get(username='******') self.assertEqual(self.user.email, 'alt@' + LOCAL_DOMAIN) check_html(self, res.content) res = self.client.get('/szr/') soup = BeautifulSoup(res.content, 'html.parser') self.assertFalse(soup.select('table#list')) check_html(self, res.content) self.client.force_login(User.objects.get(pk=1)) res = self.client.get('/szr/') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') self.assertEqual(len(soup.select('table#list tbody tr')), 7) models.Proceedings( uid_id=1, court_id='OSPHA02', senate=15, register='C', number=13287, year=2016, desc='Test').save() res = self.client.get('/szr/') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') self.assertEqual(len(soup.select('table#list tbody tr')), 8) for number in range(200, 437): models.Proceedings( uid_id=1, court_id='OSPHA02', senate=15, register='C', number=number, year=2016, desc='Test {:d}'.format(number)).save() res = self.client.get('/szr/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/szr/procform/') self.assertEqual(links[1]['href'], '#') self.assertTrue(link_equal(links[2]['href'], '/szr/?start=50')) self.assertTrue(link_equal(links[3]['href'], '/szr/?start=200')) res = self.client.get('/szr/?start=50') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 6) self.assertEqual(links[0]['href'], '/szr/procform/') self.assertTrue(link_equal(links[1]['href'], '/szr/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/szr/?start=0')) self.assertEqual(links[3]['href'], '#') self.assertTrue(link_equal(links[4]['href'], '/szr/?start=100')) self.assertTrue(link_equal(links[5]['href'], '/szr/?start=200')) res = self.client.get('/szr/?start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 6) self.assertEqual(links[0]['href'], '/szr/procform/') self.assertTrue(link_equal(links[1]['href'], '/szr/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/szr/?start=50')) self.assertEqual(links[3]['href'], '#') self.assertTrue(link_equal(links[4]['href'], '/szr/?start=150')) self.assertTrue(link_equal(links[5]['href'], '/szr/?start=200')) res = self.client.get('/szr/?start=200') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 45) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/szr/procform/') self.assertTrue(link_equal(links[1]['href'], '/szr/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/szr/?start=150')) self.assertEqual(links[3]['href'], '#') res = self.client.get('/szr/?start=500') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 1) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/szr/procform/') self.assertTrue(link_equal(links[1]['href'], '/szr/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/szr/?start=194')) self.assertEqual(links[3]['href'], '#')
def test_trans(self): res = self.client.get('/hjp/transform') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/hjp/transform/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/hjp/transform/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) today = date.today() res = self.client.post( '/hjp/transform/', {'transaction_type': 'balance', 'submit_set_date': 'Dnes'}) self.assertEqual(res.context['form']['date'].value(), today) res = self.client.get('/hjp/transform/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'hjp_transform.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('h1') self.assertEqual(len(title), 1) self.assertEqual(title[0].text, 'Nová transakce') res = self.client.post( '/hjp/transform/', {'date': '5.8.2014', 'transaction_type': 'debit', 'amount': '5000', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/hjp/transform/', {'date': '25.10.2014', 'transaction_type': 'credit', 'amount': '4000', 'repayment_preference': 'interest', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/hjp/transform/', {'date': '25.10.2015', 'transaction_type': 'balance', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/hjp/transform/', {'submit_back': 'Zpět bez uložení'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) res = self.client.get('/hjp/transform/100/') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/hjp/transform/2/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'hjp_transform.xhtml') check_html(self, res.content) res = self.client.post( '/hjp/transform/3/', {'date': '25.10.2015', 'transaction_type': 'balance', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/hjp/transform/100/', {'date': '25.10.2015', 'transaction_type': 'balance', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.post( '/hjp/transform/', {'date': 'XXX', 'transaction_type': 'balance', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_transform.xhtml') self.assertEqual(res.context['err_message'], 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.get('/hjp/transdel/3/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_transdel.xhtml') check_html(self, res.content) res = self.client.post( '/hjp/transdel/3/', {'submit_no': 'Ne'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/hjp/transdel/3/', {'submit_yes': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_transdeleted.xhtml') check_html(self, res.content) res = self.client.get('/hjp/transdel/3/') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.post('/hjp/transdel/3/', follow=True) self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND)
def test_main(self): res = self.client.get('/hjp') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/hjp/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/hjp/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/hjp/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/hjp/', {'rounding': '0', 'model': 'none', 'submit_update': 'Aktualisovat'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/hjp/', {'rounding': '0', 'model': 'fixed', 'fixed_amount': 'XXX', 'submit_update': 'Aktualisovat'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') self.assertEqual(res.context['err_message'], 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/hjp/', {'rounding': '0', 'model': 'none', 'submit_empty': 'Vyprázdnit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/hjp/', {'rounding': '0', 'model': 'none', 'title': 'test', 'note': 'n', 'internal_note': 'in', 'submit_empty': 'Vyprázdnit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('#id_title') self.assertEqual(len(title), 1) self.assertNotIn('value', title[0]) note = soup.select('#id_note') self.assertEqual(len(note), 1) self.assertEqual(note[0].text, '') internal_note = soup.select('#id_internal_note') self.assertEqual(len(internal_note), 1) self.assertEqual(internal_note[0].text, '') for suf in ( ('xml', 'Uložit', 'text/xml; charset=utf-8'), ('pdf', 'Export do PDF', 'application/pdf'), ): with open(join(TEST_DATA_DIR, 'hjp_debt1.{}'.format(suf[0])), 'rb') as infile: res = self.client.post( '/hjp/', {'currency_0': 'EUR', 'rounding': '2', 'model': 'none', 'submit_load': 'Načíst', 'load': infile}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content, key=suf[0]) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('#id_title') self.assertEqual(len(title), 1) self.assertEqual(title[0]['value'], TEST_STRING) note = soup.select('#id_note') self.assertEqual(len(note), 1) self.assertEqual(note[0].text, 'Poznámka') internal_note = soup.select('#id_internal_note') self.assertEqual(len(internal_note), 1) self.assertEqual(internal_note[0].text, 'Interní poznámka') currency_0 = soup.select('#id_currency_0 option[value=CZK]') self.assertEqual(len(currency_0), 1) self.assertTrue(currency_0[0].has_attr('selected')) rounding = soup.select('#id_rounding option[value=0]') self.assertEqual(len(rounding), 1) self.assertTrue(rounding[0].has_attr('selected')) res = self.client.post( '/hjp/', {'currency_0': 'OTH', 'currency_1': 'AUD', 'rounding': '2', 'model': 'none', 'title': TEST_STRING, 'note': 'nn', 'internal_note': 'in', 'submit_' + suf[0]: suf[1]}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertIn('content-type', res) self.assertEqual(res['content-type'], suf[2]) if suf[0] == 'xml': self.assertTrue(validate_xml(res.content, XSD)) con = BytesIO(res.content) con.seek(0) res = self.client.post( '/hjp/', {'submit_load': 'Načíst', 'load': con}, follow=True) con.close() self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('#id_title') self.assertEqual(len(title), 1) self.assertEqual(title[0]['value'], TEST_STRING) note = soup.select('#id_note') self.assertEqual(len(note), 1) self.assertEqual(note[0].text, 'nn') internal_note = soup.select('#id_internal_note') self.assertEqual(len(internal_note), 1) self.assertEqual(internal_note[0].text, 'in') currency_0 = soup.select('#id_currency_0 option[value=OTH]') self.assertEqual(len(currency_0), 1) self.assertTrue(currency_0[0].has_attr('selected')) currency_1 = soup.select('#id_currency_1') self.assertEqual(len(currency_1), 1) self.assertEqual(currency_1[0]['value'], 'AUD') rounding = soup.select('#id_rounding option[value=2]') self.assertEqual(len(rounding), 1) self.assertTrue(rounding[0].has_attr('selected')) with open(join(TEST_DATA_DIR, 'hjp_debt1.xml'), 'rb') as infile: res = self.client.post( '/hjp/', {'currency_0': 'EUR', 'rounding': '2', 'model': 'none', 'submit_load': 'Načíst', 'load': infile}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/hjp/', {'currency_0': 'CZK', 'rounding': '0', 'model': 'per_annum', 'pa_rate': '12,6', 'ydconv': 'ACT/ACT', 'title': TEST_STRING, 'note': 'nn', 'internal_note': 'in', 'submit_csv': 'Export do CSV'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertIn('content-type', res) self.assertEqual(res['content-type'], 'text/csv; charset=utf-8') string = res.content.decode('utf-8') with open(join(TEST_DATA_DIR, 'hjp_debt1.csv'), 'rb') as infile: dat = infile.read().decode('utf-8') self.assertEqual(string, dat) with open(join(TEST_DATA_DIR, 'hjp_err_debt1.xml'), 'rb') as infile: res = self.client.post( '/hjp/', {'currency_0': 'CZK', 'rounding': '0', 'model': 'none', 'submit_load': 'Načíst', 'load': infile}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') button = soup.select('input[name=submit_csv]') self.assertEqual(len(button), 1) self.assertTrue(button[0].has_attr('disabled')) self.assertContains(res, 'Chybné datum, data nejsou k disposici') res = self.client.post( '/hjp/', {'currency_0': 'OTH', 'currency_1': 'AUD', 'rounding': '2', 'model': 'none', 'title': TEST_STRING, 'note': 'nn', 'internal_note': 'in', 'submit_pdf': 'Export do PDF'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertIn('content-type', res) self.assertEqual(res['content-type'], 'application/pdf') res = self.client.post( '/hjp/', {'currency_0': 'EUR', 'rounding': '2', 'model': 'none', 'submit_load': 'Načíst', 'load': None}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') self.assertEqual(res.context['err_message'], 'Nejprve zvolte soubor k načtení') check_html(self, res.content) with open(join(TEST_DATA_DIR, 'hjp_err_debt2.xml'), 'rb') as infile: res = self.client.post( '/hjp/', {'currency_0': 'CZK', 'rounding': '0', 'model': 'none', 'submit_load': 'Načíst', 'load': infile}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') self.assertEqual(res.context['err_message'], 'Chyba při načtení souboru') check_html(self, res.content) with open(join(TEST_DATA_DIR, 'hjp_err_debt3.xml'), 'rb') as infile: res = self.client.post( '/hjp/', {'currency_0': 'CZK', 'rounding': '0', 'model': 'none', 'submit_load': 'Načíst', 'load': infile}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') self.assertEqual(res.context['err_message'], 'Chyba při načtení souboru') check_html(self, res.content) res = self.client.post( '/hjp/', {'currency_0': 'EUR', 'rounding': '2', 'model': 'none', 'next': '/hjp/'}) self.assertRedirects(res, '/hjp/') idx = 1 while True: try: infile = open(join(TEST_DATA_DIR, 'hjp_debt{:d}.xml'.format(idx)), 'rb') except: self.assertGreater(idx, 1) break res = self.client.post( '/hjp/', {'currency_0': 'EUR', 'rounding': '2', 'model': 'none', 'submit_load': 'Načíst', 'load': infile}, follow=True) infile.close() self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') dct = {'submit_pdf': 'Export do PDF'} form = res.context['form'] for key in form.fields: val = form[key].value() if val: dct[key] = p2c(str(val)) soup = BeautifulSoup(res.content, 'html.parser') dct['currency_0'] = soup.select('#id_currency_0 option[selected]')[0]['value'] dct['currency_1'] = dct['currency'] res = self.client.post('/hjp/', dct) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertIn('content-type', res) self.assertEqual(res['content-type'], 'application/pdf') con = BytesIO(res.content) con.seek(0) res = self.client.post( '/hjp/', {'submit_load': 'Načíst', 'load': con}, follow=True) con.close() self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'hjp_mainpage.xhtml') idx += 1
def test_partybatchform(self): models.Party.objects.create(uid=self.user, party_opt=0, party='Test 01') models.Party.objects.create(uid=self.user, party_opt=0, party='Test 05') models.Party.objects.create(uid=self.user, party_opt=0, party='Test 05') res = self.client.get('/sur/partybatchform') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/sur/partybatchform/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/sur/partybatchform/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/sur/partybatchform/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partybatchform.xhtml') check_html(self, res.content) res = self.client.post('/sur/partybatchform/', {'submit_load': 'Načíst'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partybatchform.xhtml') self.assertContains(res, 'Nejprve zvolte soubor k načtení') check_html(self, res.content) res = self.client.post('/sur/partybatchform/', {'submit_xxx': 'XXX'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partybatchform.xhtml') self.assertEqual(res.context['err_message'], 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) with open(join(TEST_DATA_DIR, 'sur_import.csv'), 'rb') as infile: res = self.client.post('/sur/partybatchform/', { 'submit_load': 'Načíst', 'load': infile }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partybatchresult.xhtml') self.assertEqual(models.Party.objects.count(), 9) self.assertEqual(res.context['count'], 6) self.assertEqual( res.context['errors'], [(1, 'Chybná délka řetězce'), (3, 'Chybná délka řetězce'), (4, 'Chybná zkratka pro posici'), (5, 'Řetězci "Test 05" odpovídá více než jeden účastník')]) check_html(self, res.content) res = self.client.get('/sur/partyexport/') self.assertEqual( res.content.decode('utf-8'), '''\ Test 01:* Test 05:* Test 05:* Test 06:* Test 07:* Test 08:< Test 09:> Test 10:= {}:* '''.format('T' * 80).replace('\n', '\r\n'))
def test_main(self): button_names = ( 'submit_show_fx', 'submit_conv_from', 'submit_conv_to', 'submit_DISC', 'submit_LOMB', 'submit_REPO', ) button_values = ( 'Zobrazit kurs', 'Převod cizí měna → CZK', 'Převod CZK → cizí měna', 'Diskontní sazba', 'Lombardní sazba', '2T repo sazba', ) cases = ( ('EUR', '', '1.7.2016', '', '', 0, ('1 EUR = 17,095 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('USD', '', '1.7.2016', '', '', 0, ('1 USD = 34,335 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('OTH', 'THB', '1.7.2016', '', '', 0, ('100 THB = 99,430 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('OTH', 'VAL', '1.7.2016', '', '', 0, ('Kurs není v kursové tabulce', )), ('OTH', '', '1.7.2016', '', '', 0, ('Chybné zadání', )), ('EUR', '', '1.17.2016', '', '', 0, ('Chybné zadání', )), ('EUR', '', '1.7.2016', '516', '', 1, ('516,00 EUR = 8.821,02 CZK', '1 EUR = 17,095 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('USD', '', '1.7.2016', '179.500', '', 1, ('179.500,00 USD = 6.163.132,50 CZK', '1 USD = 34,335 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('USD', '', '1.7.2016', '179 500', '', 1, ('179.500,00 USD = 6.163.132,50 CZK', '1 USD = 34,335 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('USD', '', '1.7.2016', '179 500,00', '', 1, ('179.500,00 USD = 6.163.132,50 CZK', '1 USD = 34,335 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('USD', '', '1.7.2016', '0.179 500,00', '', 1, ('179.500,00 USD = 6.163.132,50 CZK', '1 USD = 34,335 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('OTH', 'THB', '1.7.2016', '116', '', 1, ('116,00 THB = 115,34 CZK', '100 THB = 99,430 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('OTH', 'VAL', '1.7.2016', '4000', '', 1, ('Kurs není v kursové tabulce', )), ('OTH', '', '1.7.2016', '515', '', 1, ('Chybné zadání', )), ('EUR', '', '1.17.2016', '968,50', '', 1, ('Chybné zadání', )), ('OTH', 'USD', '1.7.2016', '0', '', 1, ('Chybné zadání', )), ('OTH', 'USD', '1.7.2016', '-515', '', 1, ('Chybné zadání', )), ('EUR', '', '1.7.2016', '516', '', 2, ('516,00 CZK = 30,18 EUR', '1 EUR = 17,095 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('USD', '', '1.7.2016', '179.500', '', 2, ('179.500,00 CZK = 5.227,90 USD', '1 USD = 34,335 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('OTH', 'THB', '1.7.2016', '116', '', 2, ('116,00 CZK = 116,66 THB', '100 THB = 99,430 CZK', '(Kurs vyhlášený ke dni: 01.07.2016)')), ('OTH', 'VAL', '1.7.2016', '4000', '', 2, ('Kurs není v kursové tabulce', )), ('OTH', '', '1.7.2016', '515', '', 2, ('Chybné zadání', )), ('EUR', '', '1.17.2016', '968,50', '', 2, ('Chybné zadání', )), ('OTH', 'USD', '1.7.2016', '0', '', 2, ('Chybné zadání', )), ('OTH', 'USD', '1.7.2016', '-515', '', 2, ('Chybné zadání', )), ('EUR', '', '', '', '19.11.2014', 3, ('Diskontní sazba platná ke dni 19.11.2014:', '0,06 %')), ('EUR', '', '', '', '21.6.1996', 4, ('Lombardní sazba platná ke dni 21.06.1996:', '4,00 %')), ('EUR', '', '', '', '1.5.2008', 5, ('Chyba spojení se serverem ČNB', )), ('OTH', 'USD', '', '', '29.2.2014', 3, ('Chybné zadání', )), ('OTH', 'USD', '', '', '29.2.2014', 4, ('Chybné zadání', )), ('OTH', 'USD', '', '', '29.2.2014', 5, ('Chybné zadání', )), ) res = self.client.get('/cnb') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/cnb/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'cnb_mainpage.xhtml') check_html(self, res.content) today = date.today() for button in ('fx_date', 'mpi_date'): res = self.client.post('/cnb/', {'submit_set_' + button: True}) self.assertEqual(res.context['form'][button].value(), today) check_html(self, res.content, key=button) num = 1 for test in cases: res = self.client.post( '/cnb/', { 'curr_0': test[0], 'curr_1': test[1], 'fx_date': test[2], 'basis': test[3], 'mpi_date': test[4], button_names[test[5]]: button_values[test[5]] }) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'cnb_mainpage.xhtml') check_html(self, res.content, key=num) soup = BeautifulSoup(res.content, 'html.parser') msg = soup.find('td', 'msg').select('div') length = len(msg) self.assertEqual(length, len(test[6])) for idx in range(length): self.assertEqual(msg[idx].text, test[6][idx]) num += 1
def test_mainpage(self): res = self.client.get('/dir') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/dir/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/dir/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/dir/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/dir/', {'email': 'xxx', 'submit': 'Změnit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/', {'email': 'alt@' + LOCAL_DOMAIN, 'submit': 'Změnit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.user = User.objects.first() self.assertEqual(self.user.email, 'alt@' + LOCAL_DOMAIN) check_html(self, res.content) res = self.client.get('/dir/') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') self.assertFalse(soup.select('table#list')) models.Debtor( uid=self.user, name_opt=0, first_name_opt=0, desc='Test').save() res = self.client.get('/dir/') soup = BeautifulSoup(res.content, 'html.parser') self.assertEqual(len(soup.select('table#list tbody tr')), 1) for number in range(200, 437): models.Debtor(uid=self.user, name_opt=0, first_name_opt=0, desc=('Test {:d}'.format(number))).save() res = self.client.get('/dir/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/dir/debtorform/') self.assertEqual(links[1]['href'], '#') self.assertTrue(link_equal(links[2]['href'], '/dir/?start=50')) self.assertTrue(link_equal(links[3]['href'], '/dir/?start=200')) res = self.client.get('/dir/?start=50') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 6) self.assertEqual(links[0]['href'], '/dir/debtorform/') self.assertTrue(link_equal(links[1]['href'], '/dir/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/dir/?start=0')) self.assertEqual(links[3]['href'], '#') self.assertTrue(link_equal(links[4]['href'], '/dir/?start=100')) self.assertTrue(link_equal(links[5]['href'], '/dir/?start=200')) res = self.client.get('/dir/?start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 6) self.assertEqual(links[0]['href'], '/dir/debtorform/') self.assertTrue(link_equal(links[1]['href'], '/dir/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/dir/?start=50')) self.assertEqual(links[3]['href'], '#') self.assertTrue(link_equal(links[4]['href'], '/dir/?start=150')) self.assertTrue(link_equal(links[5]['href'], '/dir/?start=200')) res = self.client.get('/dir/?start=200') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 38) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/dir/debtorform/') self.assertTrue(link_equal(links[1]['href'], '/dir/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/dir/?start=150')) self.assertEqual(links[3]['href'], '#') res = self.client.get('/dir/?start=500') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 1) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/dir/debtorform/') self.assertTrue(link_equal(links[1]['href'], '/dir/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/dir/?start=187')) self.assertEqual(links[3]['href'], '#')
def test_xmllist(self): res0 = '''<?xml version="1.0" encoding="utf-8"?> <documents application="uds" created="2017-08-31T10:17:35" version="1.0" xmlns="http://{0}" xmlns:xsi="http://www.w\ 3.org/2001/XMLSchema-instance" xsi:schemaLocation="{0} {1}/static/uds-1.0.xsd"><document id="82464"><publisher id="\ 203040">Okresní soud Pelhřimov</publisher><ref>0 SPR 653/2009</ref><description>Rozvrh práce, změna č. 1</descripti\ on><agenda>Správa soudu</agenda><posted>2009-07-29T08:10:00</posted><files><file id="82788"><name>změna_č._1_RP_.pd\ f</name><url>{2}uds/82788/změna_č._1_RP_.pdf</url></file></files></document></documents> '''.format(LOCAL_SUBDOMAIN, LOCAL_URL, REPO_URL) res = self.client.get('/uds/xmllist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/uds/xmllist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/uds/xmllist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'text/xml; charset=utf-8') self.assertTrue(validate_xml(res.content, XSD)) res = self.client.get('/uds/xmllist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/xmllist/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/xmllist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/xmllist/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/xmllist/?year=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/xmllist/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/xmllist/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/xmllist/?agenda=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/xmllist/?date_posted_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/xmllist/?date_posted_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/xmllist/?desc_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/xmllist/?register=spr') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertXMLEqual(strip_xml(res.content), strip_xml(res0.encode('utf-8'))) self.assertTrue(validate_xml(res.content, XSD)) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/uds/xmllist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_partyform(self): res = self.client.get('/sur/partyform') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/sur/partyform/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/sur/partyform/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/sur/partyform/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'sur_partyform.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('h1') self.assertEqual(len(title), 1) self.assertEqual(title[0].text, 'Nový účastník') res = self.client.post('/sur/partyform/', { 'party_opt': 'icontains', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partyform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/sur/partyform/', { 'party': 'XXX', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partyform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/sur/partyform/', { 'party': 'Test', 'party_opt': 'XXX', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partyform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/sur/partyform/', {'submit_back': 'Zpět bez uložení'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') check_html(self, res.content) res = self.client.post('/sur/partyform/', { 'party': 'Test', 'party_opt': 'icontains', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') party_id = models.Party.objects.create(uid=self.user, party_opt=0, party='Test 2').id res = self.client.get('/sur/partyform/{:d}/'.format(party_id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'sur_partyform.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('h1') self.assertEqual(len(title), 1) self.assertEqual(title[0].text, 'Úprava účastníka') res = self.client.post('/sur/partyform/{:d}/'.format(party_id), { 'party': 'Test 8', 'party_opt': 'icontains', 'submit': 'Uložit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') party = models.Party.objects.get(pk=party_id) self.assertEqual(party.party, 'Test 8')
def test_mainpage(self): res = self.client.get('/sur') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/sur/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/sur/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/sur/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') check_html(self, res.content) res = self.client.post('/sur/', { 'email': 'xxx', 'submit': 'Změnit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/sur/', { 'email': 'alt@' + LOCAL_DOMAIN, 'submit': 'Změnit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.user = User.objects.first() self.assertEqual(self.user.email, 'alt@' + LOCAL_DOMAIN) check_html(self, res.content) res = self.client.get('/sur/') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') self.assertFalse(soup.select('table#list')) models.Party(uid=self.user, party_opt=0, party='Test').save() res = self.client.get('/sur/') soup = BeautifulSoup(res.content, 'html.parser') self.assertEqual(len(soup.select('table#list tbody tr')), 1) for number in range(200, 437): models.Party(uid=self.user, party_opt=0, party='Test {:d}'.format(number)).save() res = self.client.get('/sur/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/sur/partyform/') self.assertEqual(links[1]['href'], '#') self.assertTrue(link_equal(links[2]['href'], '/sur/?start=50')) self.assertTrue(link_equal(links[3]['href'], '/sur/?start=200')) res = self.client.get('/sur/?start=50') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 6) self.assertEqual(links[0]['href'], '/sur/partyform/') self.assertTrue(link_equal(links[1]['href'], '/sur/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/sur/?start=0')) self.assertEqual(links[3]['href'], '#') self.assertTrue(link_equal(links[4]['href'], '/sur/?start=100')) self.assertTrue(link_equal(links[5]['href'], '/sur/?start=200')) res = self.client.get('/sur/?start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 6) self.assertEqual(links[0]['href'], '/sur/partyform/') self.assertTrue(link_equal(links[1]['href'], '/sur/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/sur/?start=50')) self.assertEqual(links[3]['href'], '#') self.assertTrue(link_equal(links[4]['href'], '/sur/?start=150')) self.assertTrue(link_equal(links[5]['href'], '/sur/?start=200')) res = self.client.get('/sur/?start=200') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 38) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/sur/partyform/') self.assertTrue(link_equal(links[1]['href'], '/sur/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/sur/?start=150')) self.assertEqual(links[3]['href'], '#') res = self.client.get('/sur/?start=500') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 1) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/sur/partyform/') self.assertTrue(link_equal(links[1]['href'], '/sur/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/sur/?start=187')) self.assertEqual(links[3]['href'], '#')
def test_procdelall(self): models.Proceedings.objects.create( uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=1, year=2016, desc='Test 1') models.Proceedings.objects.create( uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=2, year=2016, desc='Test 2') self.assertEqual(models.Proceedings.objects.filter(uid=self.user).count(), 2) res = self.client.get('/szr/procdelall') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/procdelall/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/szr/procdelall/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/szr/procdelall/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procdelall.xhtml') check_html(self, res.content) res = self.client.post( '/szr/procdelall/', {'submit_no': 'Ne'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/szr/procdelall/', {'submit_yes': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(models.Proceedings.objects.filter(uid=self.user).count(), 2) check_html(self, res.content) res = self.client.post( '/szr/procdelall/', {'submit_yes': 'Ano', 'conf': 'ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(models.Proceedings.objects.filter(uid=self.user).count(), 2) check_html(self, res.content) res = self.client.post( '/szr/procdelall/', {'submit_yes': 'Ano', 'conf': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertFalse(models.Proceedings.objects.filter(uid=self.user).exists()) check_html(self, res.content)
def test_csvlist(self): res0 = '''Datum vyvěšení,Soud/státní zastupitelství,Popis dokumentu,Spisová značka/číslo jednací,Agenda,\ Soubory ''' res1 = '''{}29.07.2009 08:10:00,Okresní soud Pelhřimov,"Rozvrh práce, změna č. 1",0 SPR 653/2009,Správa \ soudu,{}uds/82788/změna_č._1_RP_.pdf '''.format(res0, REPO_URL) res = self.client.get('/uds/csvlist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/uds/csvlist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/uds/csvlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'text/csv; charset=utf-8') res = self.client.get('/uds/csvlist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/csvlist/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/csvlist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/csvlist/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/csvlist/?year=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/csvlist/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/csvlist/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/csvlist/?agenda=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/csvlist/?date_posted_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/csvlist/?date_posted_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/csvlist/?desc_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/csvlist/?register=spr') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertEqual(res.content.decode('utf-8').replace('\r\n', '\n'), res1) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/uds/csvlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_procbatchform(self): models.Proceedings.objects.create( uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=1, year=2016, desc='Test 01') models.Proceedings.objects.create( uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=4, year=2011, desc='Test 13') models.Proceedings.objects.create( uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=5, year=2012, desc='Test 13') res = self.client.get('/szr/procbatchform') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/procbatchform/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/szr/procbatchform/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/szr/procbatchform/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procbatchform.xhtml') check_html(self, res.content) res = self.client.post( '/szr/procbatchform/', {'submit_load': 'Načíst'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procbatchform.xhtml') self.assertContains(res, 'Nejprve zvolte soubor k načtení') check_html(self, res.content) with open(join(TEST_DATA_DIR, 'szr_import.csv'), 'rb') as infile: res = self.client.post( '/szr/procbatchform/', {'submit_load': 'Načíst', 'load': infile}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procbatchresult.xhtml') self.assertEqual(models.Proceedings.objects.count(), 13) self.assertEqual(res.context['count'], 4) self.assertEqual( res.context['errors'], [(3, 'Chybná zkratka soudu'), (4, 'Chybná zkratka soudu'), (5, 'Chybný formát'), (8, 'Chybná spisová značka'), (9, 'Chybná spisová značka'), (10, 'Chybná spisová značka'), (11, 'Chybná spisová značka'), (12, 'Chybná spisová značka'), (13, 'Popisu "Test 13" odpovídá více než jedno řízení'), (14, 'Prázdný popis'), (16, 'Příliš dlouhý popis')]) check_html(self, res.content) res = self.client.get('/szr/procexport/') self.assertEqual( res.content.decode('utf-8'), '''\ Test 01,MSPHAAB,45 A 27/2014 Test 06,MSPHAAB,Nc 1070/2016 Test 07,MSPHAAB,Nc 1071/2016 Test 13,MSPHAAB,52 C 4/2011 Test 13,MSPHAAB,52 C 5/2012 {},MSPHAAB,45 A 27/2014 '''.format('T' * 255).replace('\n', '\r\n'))
def test_main(self): cases = ( ('1.7.2016', '1', '', '', '01.07.2017', '01.11.2016', '01.01.2017', '01.03.2017'), ('1. 7. 2016', '1', '', '', '01.07.2017', '01.11.2016', '01.01.2017', '01.03.2017'), ('01.07.2016', '1', '', '', '01.07.2017', '01.11.2016', '01.01.2017', '01.03.2017'), ('12.7.2011', '11', '5', '16', '28.12.2022', '07.05.2015', '04.04.2017', '04.03.2019'), ('7.7.2011', '', '1', '', '07.08.2011', '17.07.2011', '22.07.2011', '27.07.2011'), ) err_cases = ( ('1.7.2016', '', '', ''), ('XXX', '1', '', ''), ('1.7.2016', 'XXX', '', ''), ('1.7.2016', '', 'XXX', ''), ('1.7.2016', '', '', 'XXX'), ('1.7.2016', '1', 'XXX', ''), ('1.7.2016', '0', '', ''), ('1.7.2016', '-1', '', ''), ) res = self.client.get('/dvt') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/dvt/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'dvt_mainpage.xhtml') check_html(self, res.content) num = 1 for test in cases: res = self.client.post( '/dvt/', {'beg_date': test[0], 'years': test[1], 'months': test[2], 'days': test[3]}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dvt_mainpage.xhtml') soup = BeautifulSoup(res.content, 'html.parser') msg = soup.find('td', 'msg').select('div') self.assertEqual(len(msg), 4) self.assertEqual(msg[0].text, 'Trest skončí: {}'.format(test[4])) self.assertEqual(msg[1].text, 'Třetina trestu: {}'.format(test[5])) self.assertEqual(msg[2].text, 'Polovina trestu: {}'.format(test[6])) self.assertEqual(msg[3].text, 'Dvě třetiny trestu: {}'.format(test[7])) check_html(self, res.content, key=num) num += 1 num = 1 for test in err_cases: res = self.client.post( '/dvt/', {'beg_date': test[0], 'years': test[1], 'months': test[2], 'days': test[3]}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dvt_mainpage.xhtml') soup = BeautifulSoup(res.content, 'html.parser') msg = soup.find('td', 'msg').select('div') self.assertEqual(msg[0].text, 'Chybné zadání') check_html(self, res.content, key=num) num += 1
def test_procbatchform(self): models.Proceedings.objects.create(uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=1, year=2016, desc='Test 01') models.Proceedings.objects.create(uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=4, year=2011, desc='Test 13') models.Proceedings.objects.create(uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=5, year=2012, desc='Test 13') res = self.client.get('/szr/procbatchform') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/procbatchform/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/szr/procbatchform/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/szr/procbatchform/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procbatchform.xhtml') check_html(self, res.content) res = self.client.post('/szr/procbatchform/', {'submit_load': 'Načíst'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procbatchform.xhtml') self.assertContains(res, 'Nejprve zvolte soubor k načtení') check_html(self, res.content) with open(join(TEST_DATA_DIR, 'szr_import.csv'), 'rb') as infile: res = self.client.post('/szr/procbatchform/', { 'submit_load': 'Načíst', 'load': infile }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procbatchresult.xhtml') self.assertEqual(models.Proceedings.objects.count(), 13) self.assertEqual(res.context['count'], 4) self.assertEqual( res.context['errors'], [(3, 'Chybná zkratka soudu'), (4, 'Chybná zkratka soudu'), (5, 'Chybný formát'), (8, 'Chybná spisová značka'), (9, 'Chybná spisová značka'), (10, 'Chybná spisová značka'), (11, 'Chybná spisová značka'), (12, 'Chybná spisová značka'), (13, 'Popisu "Test 13" odpovídá více než jedno řízení'), (14, 'Prázdný popis'), (16, 'Příliš dlouhý popis')]) check_html(self, res.content) res = self.client.get('/szr/procexport/') self.assertEqual( res.content.decode('utf-8'), '''\ Test 01,MSPHAAB,45 A 27/2014 Test 06,MSPHAAB,Nc 1070/2016 Test 07,MSPHAAB,Nc 1071/2016 Test 13,MSPHAAB,52 C 4/2011 Test 13,MSPHAAB,52 C 5/2012 {},MSPHAAB,45 A 27/2014 '''.format('T' * 255).replace('\n', '\r\n'))
def test_main(self): cases = ( ('1.7.2016', 'd3', '', 'd', ('Po 04.07.2016',)), ('1.7.2016', 'd8', '', 'd', ('09.07.2016 není pracovní den', 'Po 11.07.2016')), ('1.7.2016', 'none', '-100', 'y', ('So 01.07.1916', MSG3)), ('01.01.1583', 'none', '-1', 'd', (MSG1,)), ('1. 7. 2016', 'd3', '', 'd', ('Po 04.07.2016',)), ('01.07.2016', 'd3', '', 'd', ('Po 04.07.2016',)), ('1.7.2016', 'w1', '', 'd', ('Pá 08.07.2016',)), ('1.7.2016', 'w2', '', 'd', ('Pá 15.07.2016',)), ('1.7.2016', 'd15', '', 'd', ('16.07.2016 není pracovní den', 'Po 18.07.2016')), ('1.7.2016', 'd30', '', 'd', ('31.07.2016 není pracovní den', 'Po 01.08.2016')), ('1.7.2016', 'm1', '', 'd', ('Po 01.08.2016',)), ('1.7.2016', 'd60', '', 'd', ('Út 30.08.2016',)), ('1.7.2016', 'm2', '', 'd', ('Čt 01.09.2016',)), ('1.7.2016', 'm3', '', 'd', ('01.10.2016 není pracovní den', 'Po 03.10.2016')), ('1.7.2016', 'm6', '', 'd', ('01.01.2017 není pracovní den', 'Po 02.01.2017')), ('1.7.2016', 'y1', '', 'd', ('01.07.2017 není pracovní den', 'Po 03.07.2017')), ('1.7.2016', 'none', '1', 'd', ('02.07.2016 není pracovní den', 'Po 04.07.2016')), ('1.7.2016', 'none', '5', 'd', ('06.07.2016 není pracovní den', 'Čt 07.07.2016')), ('1.7.2016', 'none', '365', 'd', ('01.07.2017 není pracovní den', 'Po 03.07.2017')), ('1.7.2016', 'none', '-1', 'd', ('Čt 30.06.2016',)), ('1.7.2016', 'none', '-6', 'd', ('25.06.2016 není pracovní den', 'Pá 24.06.2016')), ('1.7.2016', 'none', '-5', 'd', ('26.06.2016 není pracovní den', 'Pá 24.06.2016')), ('1.7.2016', 'none', '-366', 'd', ('St 01.07.2015',)), ('1.7.2016', 'none', '1', 'w', ('Pá 08.07.2016',)), ('1.7.2016', 'none', '100', 'w', ('Pá 01.06.2018',)), ('1.7.2016', 'none', '-1', 'w', ('Pá 24.06.2016',)), ('1.7.2016', 'none', '-100', 'w', ('Pá 01.08.2014',)), ('1.7.2016', 'none', '1', 'm', ('Po 01.08.2016',)), ('1.7.2016', 'none', '100', 'm', ('Pá 01.11.2024',)), ('1.7.2016', 'none', '-1', 'm', ('St 01.06.2016',)), ('1.7.2016', 'none', '-100', 'm', ('01.03.2008 není pracovní den', 'Pá 29.02.2008')), ('1.7.2016', 'none', '1', 'y', ('01.07.2017 není pracovní den', 'Po 03.07.2017')), ('1.7.2016', 'none', '100', 'y', ('St 01.07.2116',)), ('1.7.2016', 'none', '-1', 'y', ('St 01.07.2015',)), ('1.7.2016', 'none', '1', 'b', ('Po 04.07.2016',)), ('1.7.2016', 'none', '2', 'b', ('Čt 07.07.2016',)), ('1.7.2016', 'none', '100', 'b', ('Pá 25.11.2016',)), ('1.7.2016', 'none', '-1', 'b', ('Čt 30.06.2016',)), ('1.7.2016', 'none', '-5', 'b', ('Pá 24.06.2016',)), ('1.7.2016', 'none', '-100', 'b', ('St 10.02.2016',)), ('31.5.2016', 'm1', '', 'd', ('Čt 30.06.2016',)), ('14.4.1925', 'none', '1', 'd', ('St 15.04.1925',)), ('14.4.1925', 'none', '1', 'b', ('St 15.04.1925', MSG3)), ('16.04.1925', 'none', '-2', 'd', ('Út 14.04.1925', MSG3)), ('02.01.1583', 'none', '-1', 'd', (MSG1,)), ('03.01.1583', 'none', '-1', 'd', (MSG1,)), ('04.01.1583', 'none', '-1', 'd', ('Po 03.01.1583', MSG3)), ('31.12.2999', 'none', '1', 'd', (MSG1,)), ('30.12.2999', 'none', '1', 'd', ('Út 31.12.2999',)), ('2.7.2016', 'none', '0', 'd', ('02.07.2016 není pracovní den', 'Po 04.07.2016')), ('2.7.2016', 'none', '0', 'b', ('Po 04.07.2016',)), ('1.7.2016', 'none', '0', 'd', ('Pá 01.07.2016',)), ('1.7.2016', 'none', '0', 'b', ('Pá 01.07.2016',)), ) err_cases = ( ('', 'd3', '', 'd'), ('xxx', 'd3', '', 'd'), ('1.7.2016', 'none', 'xxx', 'd'), ('1.7.2016', 'none', '', 'd'), ('31.12.1582', 'none', '5', 'b'), ('1.1.3000', 'none', '5', 'b'), ('1.7.2016', 'none', '1000', 'd'), ('1.7.2016', 'none', '-1000', 'd'), ) res = self.client.get('/lht') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/lht/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'lht_mainpage.xhtml') check_html(self, res.content) num = 1 for test in cases: res = self.client.post( '/lht/', {'beg_date': test[0], 'preset': test[1], 'dur': test[2], 'unit': test[3]}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'lht_mainpage.xhtml') soup = BeautifulSoup(res.content, 'html.parser') msg = soup.find('td', 'msg').select('div') length = len(msg) self.assertEqual(length, len(test[4])) for idx in range(length): self.assertEqual(msg[idx].text, test[4][idx]) check = num < 5 check_html(self, res.content, key=num, check_html=check, check_classes=check) num += 1 num = 1 for test in err_cases: res = self.client.post( '/lht/', {'beg_date': test[0], 'preset': test[1], 'dur': test[2], 'unit': test[3]}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'lht_mainpage.xhtml') soup = BeautifulSoup(res.content, 'html.parser') msg = soup.find('td', 'msg').select('div') self.assertTrue(msg[0].text) check_html(self, res.content, key=num) num += 1 res = self.client.post( '/lht/', {'submit_set_beg_date': 'Dnes'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertEqual(res.context['form']['beg_date'].value(), date.today()) check_html(self, res.content)
def test_mainpage(self): cases = ( ('0', '0', False, '0', '0', '0', '0', '0', '0', '0', '0', False, '0,0', False, '0', '0', '0', '0', '0', '0', '0', '0'), ('0', '0', False, '0', '0', '0', '0', '0', '0', '0', '0', False, '0,0', True, '0', '0', '0', '0', '0', '0', '0', '0', '0'), ('10000', '0', False, '0', '0', '0', '0', '0', '0', '0', '0', False, '0,0', False, '0', '0', '10.000', '0', '0', '10.000', '600.000', '2.000.000'), ('10000', '10000', False, '0', '0', '0', '0', '0', '0', '0', '0', False, '0,0', True, '0', '0', '0', '20.000', '0', '0', '20.000', '1.200.000', '4.000.000'), ('10000', '0', False, '0', '0', '3410', '5858', '750', '1125', '150', '225', False, '21,0', False, '6.179', '6.179', '2.546', '7.454', '900', '1.646', '98.760', '329.200'), ('10000', '0', False, '0', '0', '3410', '5858', '750', '1125', '150', '225', True, '21,0', False, '6.179', '6.179', '2.546', '7.454', '1.089', '1.457', '87.420', '291.400'), ('10000', '12000', False, '0', '0', '3410', '5858', '750', '1125', '150', '225', False, '21,0', True, '6.179', '7.724', '7.724', '4.366', '17.634', '1.350', '3.016', '180.960', '603.200'), ('10000', '12000', True, '0', '0', '3410', '5858', '750', '1125', '150', '225', False, '21,0', True, '6.179', '7.724', '7.724', '4.366', '17.634', '1.350', '3.016', '180.960', '603.200'), ('10000', '12000', False, '0', '0', '3410', '5858', '750', '1125', '150', '225', True, '21,0', True, '6.179', '7.724', '7.724', '4.366', '17.634', '1.634', '2.732', '163.950', '546.500'), ('17000', '0', True, '0', '0', '3410', '5858', '750', '1125', '150', '225', True, '21,0', False, '6.179', '7.724', '6.186', '10.814', '1.089', '5.097', '305.820', '1.019.400'), ('17000', '0', False, '1', '0', '3410', '5858', '750', '1125', '150', '225', True, '21,0', False, '6.179', '7.724', '6.186', '10.814', '1.089', '5.097', '305.820', '1.019.400'), ('17000', '23000', False, '2', '5', '3410', '5858', '750', '1125', '150', '225', True, '21,0', True, '6.179', '10.813', '15.447', '9.158', '30.842', '1.634', '7.524', '451.470', '1.504.900'), ) res = self.client.get('/kos') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/kos/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'kos_mainpage.xhtml') check_html(self, res.content) res = self.client.post('/kos/', {'submit_single': 'Vypočítat'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'kos_mainpage.xhtml') self.assertEqual(res.context['messages'], [('Chybné zadání', None)]) check_html(self, res.content) num = 1 for test in cases: query = { 'netincome': test[0], 'netincome2': test[1], 'deps': test[3], 'deps2': test[4], 'subs': test[5], 'apt': test[6], 'fee': test[7], 'fee2': test[8], 'exp': test[9], 'exp2': test[10], 'vatrate': test[12], } if test[2]: query['partner'] = 'on' if test[11]: query['vat'] = 'on' query['submit_{}'.format('dual' if test[13] else 'single')] = 'Vypočítat' res = self.client.post('/kos/', query) con = res.context['messages'] self.assertEqual( con[0][0], 'Kalkulace pro společný návrh manželů' if test[13] else 'Kalkulace pro samostatného dlužníka') lines = 8 if test[13] else 7 for idx in range(lines): self.assertEqual(con[idx + 1][0].split()[-2], test[idx + 14]) self.assertEqual(con[-1][0].split()[-2], test[-1]) check_html(self, res.content, key=num) num += 1
def test_partyform(self): res = self.client.get('/sur/partyform') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/sur/partyform/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/sur/partyform/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/sur/partyform/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'sur_partyform.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('h1') self.assertEqual(len(title), 1) self.assertEqual(title[0].text, 'Nový účastník') res = self.client.post( '/sur/partyform/', {'party_opt': 'icontains', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partyform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/sur/partyform/', {'party': 'XXX', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partyform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/sur/partyform/', {'party': 'Test', 'party_opt': 'XXX', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_partyform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/sur/partyform/', {'submit_back': 'Zpět bez uložení'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/sur/partyform/', {'party': 'Test', 'party_opt': 'icontains', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') party_id = models.Party.objects.create( uid=self.user, party_opt=0, party='Test 2').id res = self.client.get('/sur/partyform/{:d}/'.format(party_id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'sur_partyform.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('h1') self.assertEqual(len(title), 1) self.assertEqual(title[0].text, 'Úprava účastníka') res = self.client.post( '/sur/partyform/{:d}/'.format(party_id), {'party': 'Test 8', 'party_opt': 'icontains', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'sur_mainpage.xhtml') party = models.Party.objects.get(pk=party_id) self.assertEqual(party.party, 'Test 8')
def test_xmllist(self): res0 = '''<?xml version="1.0" encoding="utf-8"?> <decisions application="udn" created="2016-08-04T00:20:47" version="1.1" xmlns="http://{0}" xmlns:xsi="http://www.w3\ .org/2001/XMLSchema-instance" xsi:schemaLocation="http://{0} {1}/static/udn-1.0.xsd"></decisions> '''.format(LOCAL_SUBDOMAIN, LOCAL_URL) res1 = '''<?xml version="1.0" encoding="utf-8"?> <decisions application="udn" created="2016-08-04T00:20:47" version="1.1" xmlns="http://{0}" xmlns:xsi="http://www.w3\ .org/2001/XMLSchema-instance" xsi:schemaLocation="http://{0} {1}/static/udn-1.0.xsd"><decision><court id="NSS">Nejvy\ šší správní soud</court><date>2199-07-01</date><ref><senate>8</senate><register>As</register><number>158</number><ye\ ar>2015</year><page>33</page></ref><agenda>Ochrana hospodářské soutěže a veřejné zakázky</agenda><parties><party>Úřa\ d pro ochranu hospodářské soutěže</party><party>BUREAU VERITAS CZECH REPUBLIC, spol. s r.o.</party><party>Zlínský kr\ aj</party></parties><files><file type="abridged">{2}udn/0158_8As__1500033S.pdf</file></files></decision></decisions> '''.format(LOCAL_SUBDOMAIN, LOCAL_URL, REPO_URL) res2 = '''<?xml version="1.0" encoding="utf-8"?> <decisions application="udn" created="2016-08-04T00:20:47" version="1.1" xmlns="http://{0}" xmlns:xsi="http://www.w3\ .org/2001/XMLSchema-instance" xsi:schemaLocation="http://{0} {1}/static/udn-1.0.xsd"><decision><court id="NSS">Nejvy\ šší správní soud</court><date>2199-07-01</date><ref><senate>8</senate><register>As</register><number>158</number><ye\ ar>2015</year><page>33</page></ref><agenda>Ochrana hospodářské soutěže a veřejné zakázky</agenda><parties><party>Úřa\ d pro ochranu hospodářské soutěže</party><party>BUREAU VERITAS CZECH REPUBLIC, spol. s r.o.</party><party>Zlínský kr\ aj</party></parties><files><file type="abridged">{2}udn/0158_8As__1500033S.pdf</file><file type="anonymized">{2}udn/\ 0067_5As__1500054_20151119130217_prevedeno.pdf</file></files></decision></decisions> '''.format(LOCAL_SUBDOMAIN, LOCAL_URL, REPO_URL) res = self.client.get('/udn/xmllist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/udn/xmllist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/udn/xmllist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'text/xml; charset=utf-8') self.assertTrue(validate_xml(res.content, XSD)) res = self.client.get('/udn/xmllist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?register=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?year=1989') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?page=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?page=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?agenda=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?register=Ads') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertXMLEqual(strip_xml(res.content), strip_xml(res0.encode('utf-8'))) self.assertTrue(validate_xml(res.content, XSD)) res = self.client.get( '/udn/xmllist/?date_from=2015-01-01&date_to=2199-07-01&' 'register=As&agenda=1&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertXMLEqual(strip_xml(res.content), strip_xml(res1.encode('utf-8'))) self.assertTrue(validate_xml(res.content, XSD)) models.Decision.objects.update( anonfilename='0067_5As__1500054_20151119130217_prevedeno.pdf') res = self.client.get( '/udn/xmllist/?date_from=2015-01-01&date_to=2199-07-01®ister=As&agenda=1&party_opt=icontains' ) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertXMLEqual(strip_xml(res.content), strip_xml(res2.encode('utf-8'))) self.assertTrue(validate_xml(res.content, XSD)) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/udn/xmllist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_mainpage(self): res = self.client.get('/psj') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/psj/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'psj_mainpage.xhtml') check_html(self, res.content) res = self.client.post('/psj/', { 'date_from': '1.1.2015', 'date_to': '1.7.2016', 'register': 'C', 'party_opt': 'icontains', 'format': 'html', 'submit': 'Hledat' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') check_html(self, res.content) res = self.client.post('/psj/', { 'party': 'Ing', 'party_opt': 'icontains', 'format': 'html', 'submit': 'Hledat' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_list.xhtml') self.assertEqual(res.redirect_chain[0][1], HTTPStatus.FOUND) check_html(self, res.content) self.assertTrue( link_equal(res.redirect_chain[0][0], '/psj/list/?party=Ing&party_opt=icontains&start=0')) res = self.client.post( '/psj/', { 'date_from': 'XXX', 'party_opt': 'icontains', 'format': 'html', 'submit': 'Hledat' }) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_mainpage.xhtml') self.assertEqual(res.context['err_message'], 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/psj/', { 'date_from': '1.1.2015', 'date_to': '1.7.2014', 'register': 'C', 'party_opt': 'icontains', 'format': 'html', 'submit': 'Hledat' }) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'psj_mainpage.xhtml') self.assertEqual(res.context['err_message'], 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content)
def test_xmllist(self): res0 = '''<?xml version="1.0" encoding="utf-8"?> <decisions application="udn" created="2016-08-04T00:20:47" version="1.1" xmlns="http://{0}" xmlns:xsi="http://www.w3\ .org/2001/XMLSchema-instance" xsi:schemaLocation="http://{0} {1}/static/udn-1.0.xsd"></decisions> '''.format(LOCAL_SUBDOMAIN, LOCAL_URL) res1 = '''<?xml version="1.0" encoding="utf-8"?> <decisions application="udn" created="2016-08-04T00:20:47" version="1.1" xmlns="http://{0}" xmlns:xsi="http://www.w3\ .org/2001/XMLSchema-instance" xsi:schemaLocation="http://{0} {1}/static/udn-1.0.xsd"><decision><court id="NSS">Nejvy\ šší správní soud</court><date>2199-07-01</date><ref><senate>8</senate><register>As</register><number>158</number><ye\ ar>2015</year><page>33</page></ref><agenda>Ochrana hospodářské soutěže a veřejné zakázky</agenda><parties><party>Úřa\ d pro ochranu hospodářské soutěže</party><party>BUREAU VERITAS CZECH REPUBLIC, spol. s r.o.</party><party>Zlínský kr\ aj</party></parties><files><file type="abridged">{2}udn/0158_8As__1500033S.pdf</file></files></decision></decisions> '''.format(LOCAL_SUBDOMAIN, LOCAL_URL, REPO_URL) res2 = '''<?xml version="1.0" encoding="utf-8"?> <decisions application="udn" created="2016-08-04T00:20:47" version="1.1" xmlns="http://{0}" xmlns:xsi="http://www.w3\ .org/2001/XMLSchema-instance" xsi:schemaLocation="http://{0} {1}/static/udn-1.0.xsd"><decision><court id="NSS">Nejvy\ šší správní soud</court><date>2199-07-01</date><ref><senate>8</senate><register>As</register><number>158</number><ye\ ar>2015</year><page>33</page></ref><agenda>Ochrana hospodářské soutěže a veřejné zakázky</agenda><parties><party>Úřa\ d pro ochranu hospodářské soutěže</party><party>BUREAU VERITAS CZECH REPUBLIC, spol. s r.o.</party><party>Zlínský kr\ aj</party></parties><files><file type="abridged">{2}udn/0158_8As__1500033S.pdf</file><file type="anonymized">{2}udn/\ 0067_5As__1500054_20151119130217_prevedeno.pdf</file></files></decision></decisions> '''.format(LOCAL_SUBDOMAIN, LOCAL_URL, REPO_URL) res = self.client.get('/udn/xmllist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/udn/xmllist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/udn/xmllist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'text/xml; charset=utf-8') self.assertTrue(validate_xml(res.content, XSD)) res = self.client.get('/udn/xmllist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?register=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?year=1989') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?page=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?page=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?agenda=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/xmllist/?register=Ads') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertXMLEqual(strip_xml(res.content), strip_xml(res0.encode('utf-8'))) self.assertTrue(validate_xml(res.content, XSD)) res = self.client.get( '/udn/xmllist/?date_from=2015-01-01&date_to=2199-07-01&' 'register=As&agenda=1&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertXMLEqual(strip_xml(res.content), strip_xml(res1.encode('utf-8'))) self.assertTrue(validate_xml(res.content, XSD)) models.Decision.objects.update( anonfilename='0067_5As__1500054_20151119130217_prevedeno.pdf') res = self.client.get( '/udn/xmllist/?date_from=2015-01-01&date_to=2199-07-01®ister=As&agenda=1&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertXMLEqual( strip_xml(res.content), strip_xml(res2.encode('utf-8'))) self.assertTrue(validate_xml(res.content, XSD)) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/udn/xmllist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_xmllist(self): res0 = '''<?xml version="1.0" encoding="utf-8"?> <hearings application="psj" created="2016-11-18T15:43:27" version="1.1" xmlns="http://legal.pecina.cz" xmlns:xsi="ht\ tp://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://legal.pecina.cz https://legal.pecina.cz/static/p\ sj-1.1.xsd"><hearing><court id="OSPHA02">Obvodní soud Praha 2</court><courtroom>č. 101/přízemí - přístavba</courtroo\ m><time>2016-12-01T09:00:00</time><ref><senate>26</senate><register>C</register><number>181</number><year>2015</year\ ></ref><judge>JUDr. Henzlová Šárka</judge><parties><party>ČR - Ministerstvo spravedlnosti ČR</party><party>Mgr. Hele\ na Morozová</party></parties><form>Jednání</form><closed>false</closed><cancelled>false</cancelled></hearing><hearin\ g><court id="OSPHA02">Obvodní soud Praha 2</court><courtroom>č. 101/přízemí - přístavba</courtroom><time>2016-12-01T\ 12:00:00</time><ref><senate>26</senate><register>C</register><number>94</number><year>2015</year></ref><judge>JUDr. \ Henzlová Šárka</judge><parties><party>Česká republika - Ministerstvo spravedlnosti</party><party>Alois Hlásenský</pa\ rty></parties><form>Jednání</form><closed>false</closed><cancelled>false</cancelled></hearing></hearings> ''' res1 = '''<?xml version="1.0" encoding="utf-8"?> <hearings application="psj" created="2016-11-18T16:00:01" version="1.1" xmlns="http://legal.pecina.cz" xmlns:xsi="ht\ tp://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://legal.pecina.cz https://legal.pecina.cz/static/p\ sj-1.1.xsd"><hearing><court id="OSPHA02">Obvodní soud Praha 2</court><courtroom>č. 101/přízemí - přístavba</courtroo\ m><time>2016-12-01T12:00:00</time><ref><senate>26</senate><register>C</register><number>94</number><year>2015</year>\ </ref><judge>JUDr. Henzlová Šárka</judge><parties><party>Česká republika - Ministerstvo spravedlnosti</party><party>\ Alois Hlásenský</party></parties><form>Jednání</form><closed>false</closed><cancelled>false</cancelled></hearing></h\ earings> ''' res = self.client.get('/psj/xmllist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/psj/xmllist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/psj/xmllist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'text/xml; charset=utf-8') self.assertTrue(validate_xml(res.content, XSD)) res = self.client.get('/psj/xmllist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?register=XX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?year=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?courtroom=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?courtroom=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?judge=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?judge=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/xmllist/?register=C') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertXMLEqual(strip_xml(res.content), strip_xml(res0.encode('utf-8'))) self.assertTrue(validate_xml(res.content, XSD)) res = self.client.get('/psj/xmllist/?party=oi&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertXMLEqual(strip_xml(res.content), strip_xml(res1.encode('utf-8'))) self.assertTrue(validate_xml(res.content, XSD)) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/psj/xmllist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_jsonlist(self): res0 = '[]' res1 = '''[{{"parties": ["\u00da\u0159ad pro ochranu hospod\u00e1\u0159sk\u00e9 sout\u011b\u017ee", "BUREAU \ VERITAS CZECH REPUBLIC, spol. s r.o.", "Zl\u00ednsk\u00fd kraj"], "files": {{"abridged": "{}udn/0158_8As__1500033S.p\ df"}}, "date": "2199-07-01", "court": {{"name": "Nejvy\u0161\u0161\u00ed spr\u00e1vn\u00ed soud", "id": "NSS"}}, "re\ f": {{"senate": 8, "register": "As", "number": 158, "year": 2015, "page": 33}}, "agenda": "Ochrana hospod\u00e1\ \u0159sk\u00e9 sout\u011b\u017ee a ve\u0159ejn\u00e9 zak\u00e1zky"}}]'''.format(REPO_URL) res2 = '''[{{"parties": ["\u00da\u0159ad pro ochranu hospod\u00e1\u0159sk\u00e9 sout\u011b\u017ee", "BUREAU \ VERITAS CZECH REPUBLIC, spol. s r.o.", "Zl\u00ednsk\u00fd kraj"], "files": {{"abridged": "{0}udn/0158_8As__1500033S.\ pdf", "anonymized": "{0}udn/0067_5As__1500054_20151119130217_prevedeno.pdf"}}, "date": "2199-07-01", "court": {{"nam\ e": "Nejvy\u0161\u0161\u00ed spr\u00e1vn\u00ed soud", "id": "NSS"}}, "ref": {{"senate": 8, "register": "As", "number\ ": 158, "year": 2015, "page": 33}}, "agenda": "Ochrana hospod\u00e1\u0159sk\u00e9 sout\u011b\u017ee a ve\u0159ejn\ \u00e9 zak\u00e1zky"}}]'''.format(REPO_URL) res = self.client.get('/udn/jsonlist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/udn/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/udn/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'application/json; charset=utf-8') res = self.client.get('/udn/jsonlist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?register=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?year=1989') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?page=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?page=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?agenda=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?register=Ads') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertJSONEqual(res.content.decode('utf-8'), res0) res = self.client.get( '/udn/jsonlist/?date_from=2015-01-01&date_to=2199-07-01®ister=As&agenda=1&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertJSONEqual(res.content.decode('utf-8'), res1) models.Decision.objects.update(anonfilename='0067_5As__1500054_20151119130217_prevedeno.pdf') res = self.client.get( '/udn/jsonlist/?date_from=2015-01-01&date_to=2199-07-01®ister=As&agenda=1&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertJSONEqual(res.content.decode('utf-8'), res2) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/udn/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_jsonlist(self): res0 = '[]' res1 = '''[{"court": {"name": "Obvodn\u00ed soud Praha 2", "id": "OSPHA02"}, "judge": "JUDr. Henzlov\u00e1 \ \u0160\u00e1rka", "ref": {"senate": 26, "year": 2015, "number": 181, "register": "C"}, "form": "Jedn\u00e1n\u00ed", \ "courtroom": "\u010d. 101/p\u0159\u00edzem\u00ed - p\u0159\u00edstavba", "cancelled": false, "parties": ["\u010cR - \ Ministerstvo spravedlnosti \u010cR", "Mgr. Helena Morozov\u00e1"], "closed": false, "time": "2016-12-01T09:00:00"}, \ {"court": {"name": "Obvodn\u00ed soud Praha 2", "id": "OSPHA02"}, "judge": "JUDr. Henzlov\u00e1 \u0160\u00e1rka", "r\ ef": {"senate": 26, "year": 2015, "number": 94, "register": "C"}, "form": "Jedn\u00e1n\u00ed", "courtroom": "\u010d.\ 101/p\u0159\u00edzem\u00ed - p\u0159\u00edstavba", "cancelled": false, "parties": ["\u010cesk\u00e1 republika - Min\ isterstvo spravedlnosti", "Alois Hl\u00e1sensk\u00fd"], "closed": false, "time": "2016-12-01T12:00:00"}]''' res2 = '''[{"court": {"name": "Obvodn\u00ed soud Praha 2", "id": "OSPHA02"}, "cancelled": false, "judge": "J\ UDr. Henzlov\u00e1 \u0160\u00e1rka", "time": "2016-12-01T12:00:00", "courtroom": "\u010d. 101/p\u0159\u00edzem\u00ed\ - p\u0159\u00edstavba", "closed": false, "form": "Jedn\u00e1n\u00ed", "parties": ["\u010cesk\u00e1 republika - Mini\ sterstvo spravedlnosti", "Alois Hl\u00e1sensk\u00fd"], "ref": {"year": 2015, "register": "C", "senate": 26, "number"\ : 94}}]''' res = self.client.get('/psj/jsonlist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/psj/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/psj/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'application/json; charset=utf-8') res = self.client.get('/psj/jsonlist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/jsonlist/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/jsonlist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/jsonlist/?year=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/jsonlist/?courtroom=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/jsonlist/?judge=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/jsonlist/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/jsonlist/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/jsonlist/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/psj/jsonlist/?register=T') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertJSONEqual(res.content.decode('utf-8'), res0) res = self.client.get('/psj/jsonlist/?register=C') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertJSONEqual(res.content.decode('utf-8'), res1) res = self.client.get('/psj/jsonlist/?party=oi&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertJSONEqual(res.content.decode('utf-8'), res2) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/psj/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_procdelall(self): models.Proceedings.objects.create(uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=1, year=2016, desc='Test 1') models.Proceedings.objects.create(uid=self.user, court_id='MSPHAAB', senate=52, register='C', number=2, year=2016, desc='Test 2') self.assertEqual( models.Proceedings.objects.filter(uid=self.user).count(), 2) res = self.client.get('/szr/procdelall') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/procdelall/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/szr/procdelall/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/szr/procdelall/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_procdelall.xhtml') check_html(self, res.content) res = self.client.post('/szr/procdelall/', {'submit_no': 'Ne'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post('/szr/procdelall/', {'submit_yes': 'Ano'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual( models.Proceedings.objects.filter(uid=self.user).count(), 2) check_html(self, res.content) res = self.client.post('/szr/procdelall/', { 'submit_yes': 'Ano', 'conf': 'ano' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual( models.Proceedings.objects.filter(uid=self.user).count(), 2) check_html(self, res.content) res = self.client.post('/szr/procdelall/', { 'submit_yes': 'Ano', 'conf': 'Ano' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertFalse( models.Proceedings.objects.filter(uid=self.user).exists()) check_html(self, res.content)
def test_debtorform(self): res = self.client.get('/dir/debtorform') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/dir/debtorform/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/dir/debtorform/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/dir/debtorform/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('h1') self.assertEqual(len(title), 1) self.assertEqual(title[0].text, 'Nový dlužník') res = self.client.post( '/dir/debtorform/', {'name_opt': 'icontains', 'first_name_opt': 'icontains', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'desc': 'Test', 'name_opt': 'XXX', 'first_name_opt': 'icontains', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'desc': 'Test', 'name_opt': 'icontains', 'first_name_opt': 'XXX', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'desc': 'Test', 'name_opt': 'icontains', 'first_name_opt': 'icontains', 'genid': 'XXX', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'desc': 'Test', 'name_opt': 'icontains', 'first_name_opt': 'icontains', 'birthid': 'XXX', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'desc': 'Test', 'name_opt': 'icontains', 'first_name_opt': 'icontains', 'date_birth': '1970-X-01', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'desc': 'Test', 'name_opt': 'icontains', 'first_name_opt': 'icontains', 'year_birth_from': '1899', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'desc': 'Test', 'name_opt': 'icontains', 'first_name_opt': 'icontains', 'year_birth_from': 'XXX', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'desc': 'Test', 'name_opt': 'icontains', 'first_name_opt': 'icontains', 'year_birth_to': '1899', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'desc': 'Test', 'name_opt': 'icontains', 'first_name_opt': 'icontains', 'year_birth_to': 'XXX', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'desc': 'Test', 'name_opt': 'icontains', 'first_name_opt': 'icontains', 'year_birth_from': '1965', 'year_birth_to': '1964', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'submit_back': 'Zpět bez uložení'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') check_html(self, res.content) res = self.client.post( '/dir/debtorform/', {'desc': 'Test', 'name_opt': 'icontains', 'first_name_opt': 'icontains', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') debtor_id = models.Debtor.objects.create( uid=self.user, name_opt=0, first_name_opt=0, birthid='7001011234', desc='Test 2').id res = self.client.get('/dir/debtorform/{:d}/'.format(debtor_id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'dir_debtorform.xhtml') soup = BeautifulSoup(res.content, 'html.parser') title = soup.select('h1') self.assertEqual(len(title), 1) self.assertEqual(title[0].text, 'Úprava dlužníka') check_html(self, res.content) res = self.client.post( '/dir/debtorform/{:d}/'.format(debtor_id), {'desc': 'Test 8', 'court': 'MSPHAAB', 'name': 'Název', 'name_opt': 'icontains', 'first_name': 'Jméno', 'first_name_opt': 'icontains', 'genid': '12345678', 'taxid': '001-12345678', 'birthid': '700101/1234', 'date_birth': '15.1.1970', 'year_birth_from': '1965', 'year_birth_to': '1966', 'submit': 'Uložit'}, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'dir_mainpage.xhtml') debtor = models.Debtor.objects.get(pk=debtor_id) self.assertEqual(debtor.desc, 'Test 8') self.assertEqual(debtor.court, 'MSPHAAB') self.assertEqual(debtor.name, 'Název') self.assertEqual(debtor.first_name, 'Jméno') self.assertEqual(debtor.genid, '12345678') self.assertEqual(debtor.taxid, '001-12345678') self.assertEqual(debtor.birthid, '7001011234') self.assertEqual(debtor.date_birth, date(1970, 1, 15)) self.assertEqual(debtor.year_birth_from, 1965) self.assertEqual(debtor.year_birth_to, 1966)
def test_mainpage(self): cases = ( ('0', '0', False, '0', '0', '0', '0', '0', '0', '0', '0', False, '0,0', False, '0', '0', '0', '0', '0', '0', '0', '0'), ('0', '0', False, '0', '0', '0', '0', '0', '0', '0', '0', False, '0,0', True, '0', '0', '0', '0', '0', '0', '0', '0', '0'), ('10000', '0', False, '0', '0', '0', '0', '0', '0', '0', '0', False, '0,0', False, '0', '0', '10.000', '0', '0', '10.000', '600.000', '2.000.000'), ('10000', '10000', False, '0', '0', '0', '0', '0', '0', '0', '0', False, '0,0', True, '0', '0', '0', '20.000', '0', '0', '20.000', '1.200.000', '4.000.000'), ('10000', '0', False, '0', '0', '3410', '5858', '750', '1125', '150', '225', False, '21,0', False, '6.179', '6.179', '2.546', '7.454', '900', '1.646', '98.760', '329.200'), ('10000', '0', False, '0', '0', '3410', '5858', '750', '1125', '150', '225', True, '21,0', False, '6.179', '6.179', '2.546', '7.454', '1.089', '1.457', '87.420', '291.400'), ('10000', '12000', False, '0', '0', '3410', '5858', '750', '1125', '150', '225', False, '21,0', True, '6.179', '7.724', '7.724', '4.366', '17.634', '1.350', '3.016', '180.960', '603.200'), ('10000', '12000', True, '0', '0', '3410', '5858', '750', '1125', '150', '225', False, '21,0', True, '6.179', '7.724', '7.724', '4.366', '17.634', '1.350', '3.016', '180.960', '603.200'), ('10000', '12000', False, '0', '0', '3410', '5858', '750', '1125', '150', '225', True, '21,0', True, '6.179', '7.724', '7.724', '4.366', '17.634', '1.634', '2.732', '163.950', '546.500'), ('17000', '0', True, '0', '0', '3410', '5858', '750', '1125', '150', '225', True, '21,0', False, '6.179', '7.724', '6.186', '10.814', '1.089', '5.097', '305.820', '1.019.400'), ('17000', '0', False, '1', '0', '3410', '5858', '750', '1125', '150', '225', True, '21,0', False, '6.179', '7.724', '6.186', '10.814', '1.089', '5.097', '305.820', '1.019.400'), ('17000', '23000', False, '2', '5', '3410', '5858', '750', '1125', '150', '225', True, '21,0', True, '6.179', '10.813', '15.447', '9.158', '30.842', '1.634', '7.524', '451.470', '1.504.900'), ) res = self.client.get('/kos') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/kos/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'kos_mainpage.xhtml') check_html(self, res.content) res = self.client.post('/kos/', {'submit_single': 'Vypočítat'}) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'kos_mainpage.xhtml') self.assertEqual(res.context['messages'], [('Chybné zadání', None)]) check_html(self, res.content) num = 1 for test in cases: query = { 'netincome': test[0], 'netincome2': test[1], 'deps': test[3], 'deps2': test[4], 'subs': test[5], 'apt': test[6], 'fee': test[7], 'fee2': test[8], 'exp': test[9], 'exp2': test[10], 'vatrate': test[12], } if test[2]: query['partner'] = 'on' if test[11]: query['vat'] = 'on' query['submit_{}'.format( 'dual' if test[13] else 'single')] = 'Vypočítat' res = self.client.post('/kos/', query) con = res.context['messages'] self.assertEqual( con[0][0], 'Kalkulace pro společný návrh manželů' if test[13] else 'Kalkulace pro samostatného dlužníka') lines = 8 if test[13] else 7 for idx in range(lines): self.assertEqual(con[idx + 1][0].split()[-2], test[idx + 14]) self.assertEqual(con[-1][0].split()[-2], test[-1]) check_html(self, res.content, key=num) num += 1
def test_mainpage(self): res = self.client.get('/szr') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/szr/') self.assertEqual(res.status_code, HTTPStatus.FOUND) res = self.client.get('/szr/', follow=True) self.assertTemplateUsed(res, 'login.xhtml') self.assertTrue(self.client.login(username='******', password='******')) res = self.client.get('/szr/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') check_html(self, res.content) res = self.client.post('/szr/', { 'email': 'xxx', 'submit': 'Změnit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertContains(res, 'Chybné zadání, prosím, opravte údaje') check_html(self, res.content) res = self.client.post('/szr/', { 'email': 'alt@' + LOCAL_DOMAIN, 'submit': 'Změnit' }, follow=True) self.assertEqual(res.status_code, HTTPStatus.OK) self.user = User.objects.get(username='******') self.assertEqual(self.user.email, 'alt@' + LOCAL_DOMAIN) check_html(self, res.content) res = self.client.get('/szr/') soup = BeautifulSoup(res.content, 'html.parser') self.assertFalse(soup.select('table#list')) check_html(self, res.content) self.client.force_login(User.objects.get(pk=1)) res = self.client.get('/szr/') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') self.assertEqual(len(soup.select('table#list tbody tr')), 7) models.Proceedings(uid_id=1, court_id='OSPHA02', senate=15, register='C', number=13287, year=2016, desc='Test').save() res = self.client.get('/szr/') check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') self.assertEqual(len(soup.select('table#list tbody tr')), 8) for number in range(200, 437): models.Proceedings(uid_id=1, court_id='OSPHA02', senate=15, register='C', number=number, year=2016, desc='Test {:d}'.format(number)).save() res = self.client.get('/szr/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/szr/procform/') self.assertEqual(links[1]['href'], '#') self.assertTrue(link_equal(links[2]['href'], '/szr/?start=50')) self.assertTrue(link_equal(links[3]['href'], '/szr/?start=200')) res = self.client.get('/szr/?start=50') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 6) self.assertEqual(links[0]['href'], '/szr/procform/') self.assertTrue(link_equal(links[1]['href'], '/szr/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/szr/?start=0')) self.assertEqual(links[3]['href'], '#') self.assertTrue(link_equal(links[4]['href'], '/szr/?start=100')) self.assertTrue(link_equal(links[5]['href'], '/szr/?start=200')) res = self.client.get('/szr/?start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 6) self.assertEqual(links[0]['href'], '/szr/procform/') self.assertTrue(link_equal(links[1]['href'], '/szr/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/szr/?start=50')) self.assertEqual(links[3]['href'], '#') self.assertTrue(link_equal(links[4]['href'], '/szr/?start=150')) self.assertTrue(link_equal(links[5]['href'], '/szr/?start=200')) res = self.client.get('/szr/?start=200') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 45) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/szr/procform/') self.assertTrue(link_equal(links[1]['href'], '/szr/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/szr/?start=150')) self.assertEqual(links[3]['href'], '#') res = self.client.get('/szr/?start=500') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'szr_mainpage.xhtml') self.assertEqual(len(res.context['rows']), 1) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 4) self.assertEqual(links[0]['href'], '/szr/procform/') self.assertTrue(link_equal(links[1]['href'], '/szr/?start=0')) self.assertTrue(link_equal(links[2]['href'], '/szr/?start=194')) self.assertEqual(links[3]['href'], '#')
def test_htmllist(self): res = self.client.get('/uds/list') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/uds/list/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/uds/list/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'uds_list.xhtml') check_html(self, res.content) res = self.client.get('/uds/list/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?year=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?page=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?page=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?agenda=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?date_posted_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?date_posted_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?desc_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/uds/list/?start=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get( '/uds/list/?date_posted_from=2005-01-01&date_posted_to=2199-07-01®ister=SPR&desc_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/uds/list/?start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/uds/list/?register=T') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/uds/list/?date_posted_from=2009-07-29') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/uds/list/?date_posted_from=2009-07-30') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/uds/list/?date_posted_to=2009-07-29') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/uds/list/?date_posted_to=2009-07-28') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) pub = models.Publisher.objects.first().id res = self.client.get('/uds/list/?publisher={:d}'.format(pub)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 1) res = self.client.get('/uds/list/?publisher={:d}'.format(pub + 1)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 0) res = self.client.get('/uds/list/?agenda={:d}'.format(models.Agenda.objects.first().id)) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 1) res = self.client.get('/uds/list/?agenda=9999') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/uds/list/?desc=ozvrh&desc_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/uds/list/?desc=rozvrh&desc_opt=istartswith') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/uds/list/?desc=1&desc_opt=iendswith') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/uds/list/?desc=rozvrh práce, změna č. 1&desc_opt=iexact') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) doc = models.Document.objects.first().__dict__ del doc['id'], doc['_state'] for docid in range(200, 438): doc['docid'] = docid if docid == 437: doc['number'] = 654 models.Document(**doc).save() res = self.client.get('/uds/list/?number=653') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 3) self.assertEqual(links[0]['href'], '#') self.assertTrue(link_equal(links[1]['href'], '/uds/list/?number=653&start=50')) self.assertTrue(link_equal(links[2]['href'], '/uds/list/?number=653&start=200')) res = self.client.get('/uds/list/?number=653&start=50') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 5) self.assertTrue(link_equal(links[0]['href'], '/uds/list/?number=653&start=0')) self.assertTrue(link_equal(links[1]['href'], '/uds/list/?number=653&start=0')) self.assertEqual(links[2]['href'], '#') self.assertTrue(link_equal(links[3]['href'], '/uds/list/?number=653&start=100')) self.assertTrue(link_equal(links[4]['href'], '/uds/list/?number=653&start=200')) res = self.client.get('/uds/list/?number=653&start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 5) self.assertTrue(link_equal(links[0]['href'], '/uds/list/?number=653&start=0')) self.assertTrue(link_equal(links[1]['href'], '/uds/list/?number=653&start=50')) self.assertEqual(links[2]['href'], '#') self.assertTrue(link_equal(links[3]['href'], '/uds/list/?number=653&start=150')) self.assertTrue(link_equal(links[4]['href'], '/uds/list/?number=653&start=200')) res = self.client.get('/uds/list/?number=653&start=200') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'uds_list.xhtml') self.assertEqual(len(res.context['rows']), 38) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot a') self.assertEqual(len(links), 3) self.assertTrue(link_equal(links[0]['href'], '/uds/list/?number=653&start=0')) self.assertTrue(link_equal(links[1]['href'], '/uds/list/?number=653&start=150')) self.assertEqual(links[2]['href'], '#')
def test_csvlist(self): res0 = '''Soud,Datum,Číslo jednací,Oblast,Účastníci řízení,Zkrácené znění,Anonymisované znění ''' res1 = '''{}Nejvyšší správní soud,01.07.2199,8 As 158/2015-33,Ochrana hospodářské soutěže a veřejné zakázky,\ "Úřad pro ochranu hospodářské soutěže;BUREAU VERITAS CZECH REPUBLIC, spol. s r.o.;Zlínský kraj",{}udn/0158_8As__1500\ 033S.pdf, '''.format(res0, REPO_URL) res2 = '''{0}Nejvyšší správní soud,01.07.2199,8 As 158/2015-33,Ochrana hospodářské soutěže a veřejné zakázky\ ,"Úřad pro ochranu hospodářské soutěže;BUREAU VERITAS CZECH REPUBLIC, spol. s r.o.;Zlínský kraj",{1}udn/0158_8As__15\ 00033S.pdf,{1}udn/0067_5As__1500054_20151119130217_prevedeno.pdf '''.format(res0, REPO_URL) res = self.client.get('/udn/csvlist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/udn/csvlist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/udn/csvlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'text/csv; charset=utf-8') res = self.client.get('/udn/csvlist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?register=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?year=1989') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?page=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?page=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?agenda=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?register=Ads') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertEqual( res.content.decode('utf-8').replace('\r\n', '\n'), res0) res = self.client.get( '/udn/csvlist/?date_from=2015-01-01&date_to=2199-07-01®ister=As&agenda=1&party_opt=icontains' ) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertEqual( res.content.decode('utf-8').replace('\r\n', '\n'), res1) models.Decision.objects.update( anonfilename='0067_5As__1500054_20151119130217_prevedeno.pdf') res = self.client.get( '/udn/csvlist/?date_from=2015-01-01&date_to=2199-07-01&' 'register=As&agenda=1&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertEqual( res.content.decode('utf-8').replace('\r\n', '\n'), res2) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/udn/csvlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_main(self): cases = ( ('11.11.2010', '6.7.2016', ( '11.11.2010 → 06.07.2016', '2064 dnů', '1423 pracovních dnů', '5 let 7 měsíců 25 dnů', '5,650648 let (ACT/ACT)', '5,654795 let (ACT/365)', '5,733333 let (ACT/360)', '5,670330 let (ACT/364)', '5,652778 let (30U/360)', '5,652778 let (30E/360)', '5,652778 let (30E/360 ISDA)', '5,652778 let (30E+/360)', '67,826882 měsíců (ACT)', '67,833333 měsíců (30U)', '67,833333 měsíců (30E)', '67,833333 měsíců (30E ISDA)', '67,833333 měsíců (30E+)', )), ('11.11.2010', '06.07.2016', ( '11.11.2010 → 06.07.2016', '2064 dnů', '1423 pracovních dnů', '5 let 7 měsíců 25 dnů', '5,650648 let (ACT/ACT)', '5,654795 let (ACT/365)', '5,733333 let (ACT/360)', '5,670330 let (ACT/364)', '5,652778 let (30U/360)', '5,652778 let (30E/360)', '5,652778 let (30E/360 ISDA)', '5,652778 let (30E+/360)', '67,826882 měsíců (ACT)', '67,833333 měsíců (30U)', '67,833333 měsíců (30E)', '67,833333 měsíců (30E ISDA)', '67,833333 měsíců (30E+)', )), ('11.11.2010', '6. 7. 2016', ( '11.11.2010 → 06.07.2016', '2064 dnů', '1423 pracovních dnů', '5 let 7 měsíců 25 dnů', '5,650648 let (ACT/ACT)', '5,654795 let (ACT/365)', '5,733333 let (ACT/360)', '5,670330 let (ACT/364)', '5,652778 let (30U/360)', '5,652778 let (30E/360)', '5,652778 let (30E/360 ISDA)', '5,652778 let (30E+/360)', '67,826882 měsíců (ACT)', '67,833333 měsíců (30U)', '67,833333 měsíců (30E)', '67,833333 měsíců (30E ISDA)', '67,833333 měsíců (30E+)', )), ('3.8.2016', '4.8.2016', ( '03.08.2016 → 04.08.2016', '1 den', '1 pracovní den', '0 let 0 měsíců 1 den', '0,002732 let (ACT/ACT)', '0,002740 let (ACT/365)', '0,002778 let (ACT/360)', '0,002747 let (ACT/364)', '0,002778 let (30U/360)', '0,002778 let (30E/360)', '0,002778 let (30E/360 ISDA)', '0,002778 let (30E+/360)', '0,032258 měsíců (ACT)', '0,033333 měsíců (30U)', '0,033333 měsíců (30E)', '0,033333 měsíců (30E ISDA)', '0,033333 měsíců (30E+)', )), ('15.2.2001', '29.3.2003', ( '15.02.2001 → 29.03.2003', '772 dnů', '532 pracovních dnů', '2 roky 1 měsíc 14 dnů', '2,115068 let (ACT/ACT)', '2,115068 let (ACT/365)', '2,144444 let (ACT/360)', '2,120879 let (ACT/364)', '2,122222 let (30U/360)', '2,122222 let (30E/360)', '2,122222 let (30E/360 ISDA)', '2,122222 let (30E+/360)', '25,399770 měsíců (ACT)', '25,466667 měsíců (30U)', '25,466667 měsíců (30E)', '25,466667 měsíců (30E ISDA)', '25,466667 měsíců (30E+)', )), ('29.2.2016', '31.5.2016', ( '29.02.2016 → 31.05.2016', '92 dnů', '64 pracovních dnů', '0 let 3 měsíce 2 dny', '0,251366 let (ACT/ACT)', '0,252055 let (ACT/365)', '0,255556 let (ACT/360)', '0,252747 let (ACT/364)', '0,255556 let (30U/360)', '0,252778 let (30E/360)', '0,250000 let (30E/360 ISDA)', '0,255556 let (30E+/360)', '3,000000 měsíců (ACT)', '3,066667 měsíců (30U)', '3,033333 měsíců (30E)', '3,000000 měsíců (30E ISDA)', '3,066667 měsíců (30E+)', )), ('', '31.5.2016', ('Chybné zadání', )), ('XXX', '31.5.2016', ('Chybné zadání', )), ('30.2.2016', '31.5.2016', ('Chybné zadání', )), ('29.2.2016', '', ('Chybné zadání', )), ('29.2.2016', 'XXX', ('Chybné zadání', )), ('29.2.2016', '29.2.2016', ('Počátek musí předcházet konci', )), ('29.2.2016', '1.4.2011', ('Počátek musí předcházet konci', )), ) res = self.client.get('/cin') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.get('/cin/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'cin_mainpage.xhtml') check_html(self, res.content) today = date.today() for button in ('beg_date', 'end_date'): res = self.client.post('/cin/', {'submit_set_' + button: 'Dnes'}) self.assertEqual(res.context['form'][button].value(), today) check_html(self, res.content, key=button) num = 1 for test in cases: res = self.client.post('/cin/', { 'beg_date': test[0], 'end_date': test[1] }) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'cin_mainpage.xhtml') check_html(self, res.content, key=num) soup = BeautifulSoup(res.content, 'html.parser') msg = soup.find('td', 'msg').select('div') length = len(msg) self.assertEqual(length, len(test[2])) for idx in range(length): self.assertEqual(msg[idx].text, test[2][idx]) num += 1
def test_csvlist(self): res0 = '''Soud,Datum,Číslo jednací,Oblast,Účastníci řízení,Zkrácené znění,Anonymisované znění ''' res1 = '''{}Nejvyšší správní soud,01.07.2199,8 As 158/2015-33,Ochrana hospodářské soutěže a veřejné zakázky,\ "Úřad pro ochranu hospodářské soutěže;BUREAU VERITAS CZECH REPUBLIC, spol. s r.o.;Zlínský kraj",{}udn/0158_8As__1500\ 033S.pdf, '''.format(res0, REPO_URL) res2 = '''{0}Nejvyšší správní soud,01.07.2199,8 As 158/2015-33,Ochrana hospodářské soutěže a veřejné zakázky\ ,"Úřad pro ochranu hospodářské soutěže;BUREAU VERITAS CZECH REPUBLIC, spol. s r.o.;Zlínský kraj",{1}udn/0158_8As__15\ 00033S.pdf,{1}udn/0067_5As__1500054_20151119130217_prevedeno.pdf '''.format(res0, REPO_URL) res = self.client.get('/udn/csvlist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/udn/csvlist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/udn/csvlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'text/csv; charset=utf-8') res = self.client.get('/udn/csvlist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?register=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?year=1989') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?page=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?page=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?agenda=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/csvlist/?register=Ads') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertEqual(res.content.decode('utf-8').replace('\r\n', '\n'), res0) res = self.client.get( '/udn/csvlist/?date_from=2015-01-01&date_to=2199-07-01®ister=As&agenda=1&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertEqual(res.content.decode('utf-8').replace('\r\n', '\n'), res1) models.Decision.objects.update(anonfilename='0067_5As__1500054_20151119130217_prevedeno.pdf') res = self.client.get( '/udn/csvlist/?date_from=2015-01-01&date_to=2199-07-01&' 'register=As&agenda=1&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertEqual(res.content.decode('utf-8').replace('\r\n', '\n'), res2) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/udn/csvlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_jsonlist(self): res0 = '[]' res1 = '''[{{"parties": ["\u00da\u0159ad pro ochranu hospod\u00e1\u0159sk\u00e9 sout\u011b\u017ee", "BUREAU \ VERITAS CZECH REPUBLIC, spol. s r.o.", "Zl\u00ednsk\u00fd kraj"], "files": {{"abridged": "{}udn/0158_8As__1500033S.p\ df"}}, "date": "2199-07-01", "court": {{"name": "Nejvy\u0161\u0161\u00ed spr\u00e1vn\u00ed soud", "id": "NSS"}}, "re\ f": {{"senate": 8, "register": "As", "number": 158, "year": 2015, "page": 33}}, "agenda": "Ochrana hospod\u00e1\ \u0159sk\u00e9 sout\u011b\u017ee a ve\u0159ejn\u00e9 zak\u00e1zky"}}]'''.format( REPO_URL) res2 = '''[{{"parties": ["\u00da\u0159ad pro ochranu hospod\u00e1\u0159sk\u00e9 sout\u011b\u017ee", "BUREAU \ VERITAS CZECH REPUBLIC, spol. s r.o.", "Zl\u00ednsk\u00fd kraj"], "files": {{"abridged": "{0}udn/0158_8As__1500033S.\ pdf", "anonymized": "{0}udn/0067_5As__1500054_20151119130217_prevedeno.pdf"}}, "date": "2199-07-01", "court": {{"nam\ e": "Nejvy\u0161\u0161\u00ed spr\u00e1vn\u00ed soud", "id": "NSS"}}, "ref": {{"senate": 8, "register": "As", "number\ ": 158, "year": 2015, "page": 33}}, "agenda": "Ochrana hospod\u00e1\u0159sk\u00e9 sout\u011b\u017ee a ve\u0159ejn\ \u00e9 zak\u00e1zky"}}]'''.format(REPO_URL) res = self.client.get('/udn/jsonlist') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/udn/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/udn/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], 'application/json; charset=utf-8') res = self.client.get('/udn/jsonlist/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?register=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?year=1989') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?page=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?page=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?agenda=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/jsonlist/?register=Ads') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertJSONEqual(res.content.decode('utf-8'), res0) res = self.client.get( '/udn/jsonlist/?date_from=2015-01-01&date_to=2199-07-01®ister=As&agenda=1&party_opt=icontains' ) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertJSONEqual(res.content.decode('utf-8'), res1) models.Decision.objects.update( anonfilename='0067_5As__1500054_20151119130217_prevedeno.pdf') res = self.client.get( '/udn/jsonlist/?date_from=2015-01-01&date_to=2199-07-01®ister=As&agenda=1&party_opt=icontains' ) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertJSONEqual(res.content.decode('utf-8'), res2) exlim = views.EXLIM views.EXLIM = 0 res = self.client.get('/udn/jsonlist/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'exlim.xhtml') check_html(self, res.content) views.EXLIM = exlim
def test_htmllist(self): res = self.client.get('/udn/list') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/udn/list/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/udn/list/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'udn_list.xhtml') check_html(self, res.content) res = self.client.get('/udn/list/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?register=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?year=1989') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?page=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?page=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?agenda=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?start=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get( '/udn/list/?date_from=2015-01-01&date_to=2199-07-01®ister=As&agenda=1&party_opt=icontains') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/udn/list/?start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/udn/list/?register=Ads') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/udn/list/?date_from=2199-07-01') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/udn/list/?date_from=2199-07-02') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/udn/list/?date_to=2199-07-01') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/udn/list/?date_to=2199-06-30') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) dec = models.Decision.objects.get().__dict__ del dec['id'], dec['_state'] for page in range(200, 437): dec['page'] = page models.Decision(**dec).save() res = self.client.get('/udn/list/?senate=8') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot tr a') self.assertEqual(len(links), 3) self.assertEqual(links[0]['href'], '#') self.assertTrue(link_equal(links[1]['href'], '/udn/list/?senate=8&start=50')) self.assertTrue(link_equal(links[2]['href'], '/udn/list/?senate=8&start=200')) res = self.client.get('/udn/list/?senate=8&start=50') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot tr a') self.assertEqual(len(links), 5) self.assertTrue(link_equal(links[0]['href'], '/udn/list/?senate=8&start=0')) self.assertTrue(link_equal(links[1]['href'], '/udn/list/?senate=8&start=0')) self.assertEqual(links[2]['href'], '#') self.assertTrue(link_equal(links[3]['href'], '/udn/list/?senate=8&start=100')) self.assertTrue(link_equal(links[4]['href'], '/udn/list/?senate=8&start=200')) res = self.client.get('/udn/list/?senate=8&start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot tr a') self.assertEqual(len(links), 5) self.assertTrue(link_equal(links[0]['href'], '/udn/list/?senate=8&start=0')) self.assertTrue(link_equal(links[1]['href'], '/udn/list/?senate=8&start=50')) self.assertEqual(links[2]['href'], '#') self.assertTrue(link_equal(links[3]['href'], '/udn/list/?senate=8&start=150')) self.assertTrue(link_equal(links[4]['href'], '/udn/list/?senate=8&start=200')) res = self.client.get('/udn/list/?senate=8&start=200') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(len(res.context['rows']), 38) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot tr a') self.assertEqual(len(links), 3) self.assertTrue(link_equal(links[0]['href'], '/udn/list/?senate=8&start=0')) self.assertTrue(link_equal(links[1]['href'], '/udn/list/?senate=8&start=150')) self.assertEqual(links[2]['href'], '#')
def test_htmllist(self): res = self.client.get('/udn/list') self.assertEqual(res.status_code, HTTPStatus.MOVED_PERMANENTLY) res = self.client.post('/udn/list/') self.assertEqual(res.status_code, HTTPStatus.METHOD_NOT_ALLOWED) res = self.client.get('/udn/list/') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTrue(res.has_header('content-type')) self.assertEqual(res['content-type'], FULL_CONTENT_TYPE) self.assertTemplateUsed(res, 'udn_list.xhtml') check_html(self, res.content) res = self.client.get('/udn/list/?senate=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?senate=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?register=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?register=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?number=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?number=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?year=1989') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?year=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?page=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?page=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?agenda=0') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?agenda=XXX') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?date_from=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?date_to=2015-X-01') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?party_opt=X') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get('/udn/list/?start=-1') self.assertEqual(res.status_code, HTTPStatus.NOT_FOUND) res = self.client.get( '/udn/list/?date_from=2015-01-01&date_to=2199-07-01®ister=As&agenda=1&party_opt=icontains' ) self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/udn/list/?start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/udn/list/?register=Ads') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/udn/list/?date_from=2199-07-01') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/udn/list/?date_from=2199-07-02') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) res = self.client.get('/udn/list/?date_to=2199-07-01') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 1) check_html(self, res.content) res = self.client.get('/udn/list/?date_to=2199-06-30') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(res.context['total'], 0) check_html(self, res.content) dec = models.Decision.objects.get().__dict__ del dec['id'], dec['_state'] for page in range(200, 437): dec['page'] = page models.Decision(**dec).save() res = self.client.get('/udn/list/?senate=8') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot tr a') self.assertEqual(len(links), 3) self.assertEqual(links[0]['href'], '#') self.assertTrue( link_equal(links[1]['href'], '/udn/list/?senate=8&start=50')) self.assertTrue( link_equal(links[2]['href'], '/udn/list/?senate=8&start=200')) res = self.client.get('/udn/list/?senate=8&start=50') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot tr a') self.assertEqual(len(links), 5) self.assertTrue( link_equal(links[0]['href'], '/udn/list/?senate=8&start=0')) self.assertTrue( link_equal(links[1]['href'], '/udn/list/?senate=8&start=0')) self.assertEqual(links[2]['href'], '#') self.assertTrue( link_equal(links[3]['href'], '/udn/list/?senate=8&start=100')) self.assertTrue( link_equal(links[4]['href'], '/udn/list/?senate=8&start=200')) res = self.client.get('/udn/list/?senate=8&start=100') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(len(res.context['rows']), 50) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot tr a') self.assertEqual(len(links), 5) self.assertTrue( link_equal(links[0]['href'], '/udn/list/?senate=8&start=0')) self.assertTrue( link_equal(links[1]['href'], '/udn/list/?senate=8&start=50')) self.assertEqual(links[2]['href'], '#') self.assertTrue( link_equal(links[3]['href'], '/udn/list/?senate=8&start=150')) self.assertTrue( link_equal(links[4]['href'], '/udn/list/?senate=8&start=200')) res = self.client.get('/udn/list/?senate=8&start=200') self.assertEqual(res.status_code, HTTPStatus.OK) self.assertTemplateUsed(res, 'udn_list.xhtml') self.assertEqual(len(res.context['rows']), 38) check_html(self, res.content) soup = BeautifulSoup(res.content, 'html.parser') links = soup.select('.list tfoot tr a') self.assertEqual(len(links), 3) self.assertTrue( link_equal(links[0]['href'], '/udn/list/?senate=8&start=0')) self.assertTrue( link_equal(links[1]['href'], '/udn/list/?senate=8&start=150')) self.assertEqual(links[2]['href'], '#')