Commit 4 : Refactor home page view to use a template
- ทำ add app wordbucket ใน INSTALL ของ settings.py
| @@ -37,6 +37,7 @@ |
| | 'django.contrib.sessions', |
| | 'django.contrib.messages', |
| | 'django.contrib.staticfiles', |
| | + 'wordbucket', |
| | ] |
| | |
| | MIDDLEWARE = [ |
- เพิ่ม functional_tests.py จากเดิมทดสอบถึงเห็น title เป็นถึงใส่ word คำว่า weeb ลงไปในช่องเพิ่มคำแล้วทดสอบว่าปรากฏในตารางข้างล่างหรือไม่
| @@ -16,10 +16,30 @@ def test_can_start_a_list_and_retrieve_it_later(self): |
| | |
| | # She notices the page title and header mention Word Bucket lists |
| | self.assertIn('Word Bucket', self.browser.title) |
| | - self.fail('Finish the test!') |
| | - |
| | + header_text = self.browser.find_element_by_tag_name('h1').text |
| | + self.assertIn('Word Bucket', header_text) |
| | + |
| | # She is invited to enter a word item straight away |
| | + inputbox = self.browser.find_element_by_id('id_new_item') |
| | + self.assertEqual( |
| | + inputbox.get_attribute('placeholder'), |
| | + 'Add new word' |
| | + ) |
| | + |
| | # She types "weeb" into a text box |
| | + inputbox.send_keys('weeb') |
| | + |
| | + # When she hits enter, the page updates, and now the page word lists |
| | + # "1: weeb" as an item in a word list table |
| | + inputbox.send_keys(Keys.ENTER) |
| | + time.sleep(1) |
| | + |
| | + table = self.browser.find_element_by_id('id_list_table') |
| | + rows = table.find_elements_by_tag_name('tr') |
| | + self.assertTrue( |
| | + any(row.text == '1: weeb' for row in rows) |
| | + ) |
| | + self.fail('Finish the test!') |
| | |
| | if __name__ == '__main__': |
| | unittest.main(warnings='ignore') |
- เพิ่ม template home.html (หน้าหลักของ app ของเรา)
| | @@ -0,0 +1,3 @@ |
| | +<html> |
| | + <title>Word Bucket</title> |
| | +</html> |
- แก้ unit test เดิมของ homepage จาก
1. test root url ไปยังหน้า homepage เป็น test ใช้ template home.html ที่เราสร้างขึ้น
2. test home page return ถูก html หรือไม่โดยเช็ค decode file home.html ของเรามาตรวจภายใน
| | @@ -1,19 +1,22 @@ |
| | from django.urls import resolve |
| | from django.test import TestCase |
| | from django.http import HttpRequest |
| | +from django.template.loader import render_to_string |
| | |
| | from wordbucket.views import home_page |
| | |
| | class HomePageTest(TestCase): |
| | |
| | - def test_root_url_resolves_to_home_page_view(self): |
| | - found = resolve('/') |
| | - self.assertEqual(found.func, home_page) |
| | + def test_uses_home_template(self): |
| | + response = self.client.get('/') |
| | + self.assertTemplateUsed(response, 'home.html') |
| | |
| | def test_home_page_returns_correct_html(self): |
| | - request = HttpRequest() |
| | - response = home_page(request) |
| | + response = self.client.get('/') |
| | + |
| | html = response.content.decode('utf8') |
| | - self.assertTrue(html.startswith('<html>')) |
| | - self.assertIn('<title>Word Bucket</title>', html) |
| | - self.assertTrue(html.endswith('</html>')) |
| | + self.assertTrue(html.startswith('<html>')) |
| | + self.assertIn('<title>Word Bucket</title>', html) |
| | + self.assertTrue(html.strip().endswith('</html>')) |
| | + |
| | + self.assertTemplateUsed(response, 'home.html') |
- แก้ views.py ให้ function home_page() ของเรา render home.html ที่เราสร้างขึ้น
| @@ -3,4 +3,4 @@ |
| | |
| | # Create your views here. |
| | def home_page(request): |
| | - return HttpResponse('<html><title>Word Bucket</title></html>') |
| | + return render(request, 'home.html') |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น