วันเสาร์ที่ 14 เมษายน พ.ศ. 2561

Commit 4 Wordbucket : Refactor home page view to use a template

Assignment1 : Wordbucket GitHub Link

Commit 4 : Refactor home page view to use a template

Commits on Feb 26, 2018
Link GitHub Commit 4 Wordbucket

- ทำ 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')


ไม่มีความคิดเห็น:

แสดงความคิดเห็น