diff --git a/app_homepage/tests/__pycache__/__init__.cpython-37.pyc b/app_homepage/tests/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9deb522eeccc60f96bb0096094b6684200b86e89
Binary files /dev/null and b/app_homepage/tests/__pycache__/__init__.cpython-37.pyc differ
diff --git a/app_homepage/tests/__pycache__/test_all.cpython-37.pyc b/app_homepage/tests/__pycache__/test_all.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3e30123c9d4cd015ce4b315dc788bb554d468d42
Binary files /dev/null and b/app_homepage/tests/__pycache__/test_all.cpython-37.pyc differ
diff --git a/app_homepage/tests/__pycache__/test_models.cpython-37.pyc b/app_homepage/tests/__pycache__/test_models.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b724c5f438f8a4cc8839531234cfba4de3f14631
Binary files /dev/null and b/app_homepage/tests/__pycache__/test_models.cpython-37.pyc differ
diff --git a/app_homepage/tests/__pycache__/test_views.cpython-37.pyc b/app_homepage/tests/__pycache__/test_views.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..792505a140e7f9ef01f2f6690d11991e9a7e885a
Binary files /dev/null and b/app_homepage/tests/__pycache__/test_views.cpython-37.pyc differ
diff --git a/app_homepage/tests/test_all.py b/app_homepage/tests/test_all.py
index f9130be234944b58d086964cdba922ad75bd54dc..882a1a39d18e276763b0c172527b39725048dac8 100644
--- a/app_homepage/tests/test_all.py
+++ b/app_homepage/tests/test_all.py
@@ -1,143 +1,143 @@
-from django.test import TestCase
-from django.urls import resolve
-from django.http import HttpRequest
-from .views import home_page
-from .models import Item, List
-from django.template.loader import render_to_string
-
-# Create your tests here.
-class HomePageTest(TestCase):
-
-	def test_uses_home_template(self):
-	    response = self.client.get('/')
-	    self.assertTemplateUsed(response, 'app/home.html')
-
-	def test_can_save_a_POST_request(self):
-		response = self.client.post('/lists/new', data={'item_text':'A new list item'})
-		self.assertEqual(Item.objects.count(),1)
-		new_item = Item.objects.first()
-		self.assertEqual(new_item.text, 'A new list item')
-	
-	# def test_redirects_after_POST(self):
-	# 	response = self.client.post('/lists/new', data={'item_text': 'A new list item'})
-	# 	self.assertRedirects(response, '/lists/the-only-list-in-the-world/')
-	
-	# def test_if_item_smaller_than_5(self):
-	# 	response = self.client.get('/')
-	# 	self.assertIn('yey, waktunya libur', response.content.decode())
-
-	# def test_if_item_smaller_than_5(self):
-	# 	Item.objects.create(text='itemey 1')
-	# 	Item.objects.create(text='itemey 2')
-	# 	response = self.client.get('/')
-	# 	self.assertIn('sibuk tapi santai', response.content.decode())
-
-	# def test_if_item_more_than_5(self):
-	# 	Item.objects.create(text='itemey 1')
-	# 	Item.objects.create(text='itemey 2')
-	# 	Item.objects.create(text='itemey 3')
-	# 	Item.objects.create(text='itemey 4')
-	# 	Item.objects.create(text='itemey 5')
-	# 	Item.objects.create(text='itemey 6')
-	# 	response = self.client.get('/')
-	# 	self.assertIn('oh tidak', response.content.decode())
-
-
-class ListAndItemModelTest(TestCase):
-
-	def test_saving_and_retrieving_items(self):
-		list_ = List()
-		list_.save()
-
-		first_item = Item()
-		first_item.text = 'The first (ever) list item'
-		first_item.list = list_
-		first_item.save()
-
-		second_item = Item()
-		second_item.text = 'Item the second'
-		second_item.list = list_
-		second_item.save()
-
-		saved_list = List.objects.first()
-		self.assertEqual(saved_list, list_)
-
-		saved_items = Item.objects.all()
-		self.assertEqual(saved_items.count(), 2)
-
-		first_saved_item = saved_items[0]
-		second_saved_item = saved_items[1]
-		self.assertEqual(first_saved_item.text, 'The first (ever) list item')
-		self.assertEqual(first_saved_item.list, list_)
-		self.assertEqual(second_saved_item.text, 'Item the second')
-		self.assertEqual(second_saved_item.list, list_)
-
-class ListViewTest(TestCase):
-
-	def test_uses_list_template(self):
-		list_ = List.objects.create()
-		response = self.client.get(f'/lists/{list_.id}/')
-		self.assertTemplateUsed(response, 'app/list.html')
-
-
-	def test_displays_only_items_for_that_list(self):
-		correct_list = List.objects.create()
-		Item.objects.create(text='itemey 1', list=correct_list)
-		Item.objects.create(text='itemey 2', list=correct_list)
-		other_list = List.objects.create()
-		Item.objects.create(text='other list item 1', list=other_list)
-		Item.objects.create(text='other list item 2', list=other_list)
-
-		response = self.client.get(f'/lists/{correct_list.id}/')
-
-		self.assertContains(response, 'itemey 1')
-		self.assertContains(response, 'itemey 2')
-		self.assertNotContains(response, 'other list item 1')
-		self.assertNotContains(response, 'other list item 2')
-
-class NewListTest(TestCase):
-
-    def test_can_save_a_POST_request(self):
-        self.client.post('/lists/new', data={'item_text': 'A new list item'})
-        self.assertEqual(Item.objects.count(), 1)
-        new_item = Item.objects.first()
-        self.assertEqual(new_item.text, 'A new list item')
-
-
-    def test_redirects_after_POST(self):
-        response = self.client.post('/lists/new', data={'item_text': 'A new list item'})
-        new_list = List.objects.first()
-        self.assertRedirects(response, f'/lists/{new_list.id}/')
-
-class NewItemTest(TestCase):
-	def test_can_save_a_POST_request_to_an_existing_list(self):
-		other_list = List.objects.create()
-		correct_list = List.objects.create()
-
-		self.client.post(
-		    f'/lists/{correct_list.id}/add_item',
-		    data={'item_text': 'A new item for an existing list'}
-		)
-
-		self.assertEqual(Item.objects.count(), 1)
-		new_item = Item.objects.first()
-		self.assertEqual(new_item.text, 'A new item for an existing list')
-		self.assertEqual(new_item.list, correct_list)
-
-
-	def test_redirects_to_list_view(self):
-		other_list = List.objects.create()
-		correct_list = List.objects.create()
-
-		response = self.client.post(
-		    f'/lists/{correct_list.id}/add_item',
-		    data={'item_text': 'A new item for an existing list'}
-		)
-
-		self.assertRedirects(response, f'/lists/{correct_list.id}/')
-
-	def test_passes_correct_list_to_template(self):
-		other_list = List.objects.create()
-		correct_list = List.objects.create()
-		response = self.client.get(f'/lists/{correct_list.id}/')
+from django.test import TestCase
+from django.urls import resolve
+from django.http import HttpRequest
+from app_homepage.views import home_page
+from app_homepage.models import Item, List
+from django.template.loader import render_to_string
+
+# Create your tests here.
+class HomePageTest(TestCase):
+
+	def test_uses_home_template(self):
+	    response = self.client.get('/')
+	    self.assertTemplateUsed(response, 'app/home.html')
+
+	def test_can_save_a_POST_request(self):
+		response = self.client.post('/lists/new', data={'item_text':'A new list item'})
+		self.assertEqual(Item.objects.count(),1)
+		new_item = Item.objects.first()
+		self.assertEqual(new_item.text, 'A new list item')
+	
+	# def test_redirects_after_POST(self):
+	# 	response = self.client.post('/lists/new', data={'item_text': 'A new list item'})
+	# 	self.assertRedirects(response, '/lists/the-only-list-in-the-world/')
+	
+	# def test_if_item_smaller_than_5(self):
+	# 	response = self.client.get('/')
+	# 	self.assertIn('yey, waktunya libur', response.content.decode())
+
+	# def test_if_item_smaller_than_5(self):
+	# 	Item.objects.create(text='itemey 1')
+	# 	Item.objects.create(text='itemey 2')
+	# 	response = self.client.get('/')
+	# 	self.assertIn('sibuk tapi santai', response.content.decode())
+
+	# def test_if_item_more_than_5(self):
+	# 	Item.objects.create(text='itemey 1')
+	# 	Item.objects.create(text='itemey 2')
+	# 	Item.objects.create(text='itemey 3')
+	# 	Item.objects.create(text='itemey 4')
+	# 	Item.objects.create(text='itemey 5')
+	# 	Item.objects.create(text='itemey 6')
+	# 	response = self.client.get('/')
+	# 	self.assertIn('oh tidak', response.content.decode())
+
+
+class ListAndItemModelTest(TestCase):
+
+	def test_saving_and_retrieving_items(self):
+		list_ = List()
+		list_.save()
+
+		first_item = Item()
+		first_item.text = 'The first (ever) list item'
+		first_item.list = list_
+		first_item.save()
+
+		second_item = Item()
+		second_item.text = 'Item the second'
+		second_item.list = list_
+		second_item.save()
+
+		saved_list = List.objects.first()
+		self.assertEqual(saved_list, list_)
+
+		saved_items = Item.objects.all()
+		self.assertEqual(saved_items.count(), 2)
+
+		first_saved_item = saved_items[0]
+		second_saved_item = saved_items[1]
+		self.assertEqual(first_saved_item.text, 'The first (ever) list item')
+		self.assertEqual(first_saved_item.list, list_)
+		self.assertEqual(second_saved_item.text, 'Item the second')
+		self.assertEqual(second_saved_item.list, list_)
+
+class ListViewTest(TestCase):
+
+	def test_uses_list_template(self):
+		list_ = List.objects.create()
+		response = self.client.get(f'/lists/{list_.id}/')
+		self.assertTemplateUsed(response, 'app/list.html')
+
+
+	def test_displays_only_items_for_that_list(self):
+		correct_list = List.objects.create()
+		Item.objects.create(text='itemey 1', list=correct_list)
+		Item.objects.create(text='itemey 2', list=correct_list)
+		other_list = List.objects.create()
+		Item.objects.create(text='other list item 1', list=other_list)
+		Item.objects.create(text='other list item 2', list=other_list)
+
+		response = self.client.get(f'/lists/{correct_list.id}/')
+
+		self.assertContains(response, 'itemey 1')
+		self.assertContains(response, 'itemey 2')
+		self.assertNotContains(response, 'other list item 1')
+		self.assertNotContains(response, 'other list item 2')
+
+class NewListTest(TestCase):
+
+    def test_can_save_a_POST_request(self):
+        self.client.post('/lists/new', data={'item_text': 'A new list item'})
+        self.assertEqual(Item.objects.count(), 1)
+        new_item = Item.objects.first()
+        self.assertEqual(new_item.text, 'A new list item')
+
+
+    def test_redirects_after_POST(self):
+        response = self.client.post('/lists/new', data={'item_text': 'A new list item'})
+        new_list = List.objects.first()
+        self.assertRedirects(response, f'/lists/{new_list.id}/')
+
+class NewItemTest(TestCase):
+	def test_can_save_a_POST_request_to_an_existing_list(self):
+		other_list = List.objects.create()
+		correct_list = List.objects.create()
+
+		self.client.post(
+		    f'/lists/{correct_list.id}/add_item',
+		    data={'item_text': 'A new item for an existing list'}
+		)
+
+		self.assertEqual(Item.objects.count(), 1)
+		new_item = Item.objects.first()
+		self.assertEqual(new_item.text, 'A new item for an existing list')
+		self.assertEqual(new_item.list, correct_list)
+
+
+	def test_redirects_to_list_view(self):
+		other_list = List.objects.create()
+		correct_list = List.objects.create()
+
+		response = self.client.post(
+		    f'/lists/{correct_list.id}/add_item',
+		    data={'item_text': 'A new item for an existing list'}
+		)
+
+		self.assertRedirects(response, f'/lists/{correct_list.id}/')
+
+	def test_passes_correct_list_to_template(self):
+		other_list = List.objects.create()
+		correct_list = List.objects.create()
+		response = self.client.get(f'/lists/{correct_list.id}/')
 		self.assertEqual(response.context['list'], correct_list) 
\ No newline at end of file
diff --git a/app_homepage/tests/test_models.py b/app_homepage/tests/test_models.py
new file mode 100644
index 0000000000000000000000000000000000000000..49dc296ec185388443fd21d5a775b49b5508ceba
--- /dev/null
+++ b/app_homepage/tests/test_models.py
@@ -0,0 +1,33 @@
+from django.test import TestCase
+from app_homepage.models import Item, List
+
+# Create your tests here.
+class ListAndItemModelTest(TestCase):
+
+	def test_saving_and_retrieving_items(self):
+		list_ = List()
+		list_.save()
+
+		first_item = Item()
+		first_item.text = 'The first (ever) list item'
+		first_item.list = list_
+		first_item.save()
+
+		second_item = Item()
+		second_item.text = 'Item the second'
+		second_item.list = list_
+		second_item.save()
+
+		saved_list = List.objects.first()
+		self.assertEqual(saved_list, list_)
+
+		saved_items = Item.objects.all()
+		self.assertEqual(saved_items.count(), 2)
+
+		first_saved_item = saved_items[0]
+		second_saved_item = saved_items[1]
+		self.assertEqual(first_saved_item.text, 'The first (ever) list item')
+		self.assertEqual(first_saved_item.list, list_)
+		self.assertEqual(second_saved_item.text, 'Item the second')
+		self.assertEqual(second_saved_item.list, list_)
+
diff --git a/app_homepage/tests/test_views.py b/app_homepage/tests/test_views.py
new file mode 100644
index 0000000000000000000000000000000000000000..8edde1182159654b084c249705773d95008e85ff
--- /dev/null
+++ b/app_homepage/tests/test_views.py
@@ -0,0 +1,114 @@
+from django.test import TestCase
+from django.urls import resolve
+from django.http import HttpRequest
+from app_homepage.views import home_page
+from app_homepage.models import Item, List
+from django.template.loader import render_to_string
+
+# Create your tests here.
+class HomePageTest(TestCase):
+
+	def test_uses_home_template(self):
+	    response = self.client.get('/')
+	    self.assertTemplateUsed(response, 'app/home.html')
+
+	def test_can_save_a_POST_request(self):
+		response = self.client.post('/lists/new', data={'item_text':'A new list item'})
+		self.assertEqual(Item.objects.count(),1)
+		new_item = Item.objects.first()
+		self.assertEqual(new_item.text, 'A new list item')
+	
+	# def test_redirects_after_POST(self):
+	# 	response = self.client.post('/lists/new', data={'item_text': 'A new list item'})
+	# 	self.assertRedirects(response, '/lists/the-only-list-in-the-world/')
+	
+	# def test_if_item_smaller_than_5(self):
+	# 	response = self.client.get('/')
+	# 	self.assertIn('yey, waktunya libur', response.content.decode())
+
+	# def test_if_item_smaller_than_5(self):
+	# 	Item.objects.create(text='itemey 1')
+	# 	Item.objects.create(text='itemey 2')
+	# 	response = self.client.get('/')
+	# 	self.assertIn('sibuk tapi santai', response.content.decode())
+
+	# def test_if_item_more_than_5(self):
+	# 	Item.objects.create(text='itemey 1')
+	# 	Item.objects.create(text='itemey 2')
+	# 	Item.objects.create(text='itemey 3')
+	# 	Item.objects.create(text='itemey 4')
+	# 	Item.objects.create(text='itemey 5')
+	# 	Item.objects.create(text='itemey 6')
+	# 	response = self.client.get('/')
+	# 	self.assertIn('oh tidak', response.content.decode())
+
+
+class ListViewTest(TestCase):
+
+	def test_uses_list_template(self):
+		list_ = List.objects.create()
+		response = self.client.get(f'/lists/{list_.id}/')
+		self.assertTemplateUsed(response, 'app/list.html')
+
+
+	def test_displays_only_items_for_that_list(self):
+		correct_list = List.objects.create()
+		Item.objects.create(text='itemey 1', list=correct_list)
+		Item.objects.create(text='itemey 2', list=correct_list)
+		other_list = List.objects.create()
+		Item.objects.create(text='other list item 1', list=other_list)
+		Item.objects.create(text='other list item 2', list=other_list)
+
+		response = self.client.get(f'/lists/{correct_list.id}/')
+
+		self.assertContains(response, 'itemey 1')
+		self.assertContains(response, 'itemey 2')
+		self.assertNotContains(response, 'other list item 1')
+		self.assertNotContains(response, 'other list item 2')
+
+class NewListTest(TestCase):
+
+    def test_can_save_a_POST_request(self):
+        self.client.post('/lists/new', data={'item_text': 'A new list item'})
+        self.assertEqual(Item.objects.count(), 1)
+        new_item = Item.objects.first()
+        self.assertEqual(new_item.text, 'A new list item')
+
+
+    def test_redirects_after_POST(self):
+        response = self.client.post('/lists/new', data={'item_text': 'A new list item'})
+        new_list = List.objects.first()
+        self.assertRedirects(response, f'/lists/{new_list.id}/')
+
+class NewItemTest(TestCase):
+	def test_can_save_a_POST_request_to_an_existing_list(self):
+		other_list = List.objects.create()
+		correct_list = List.objects.create()
+
+		self.client.post(
+		    f'/lists/{correct_list.id}/add_item',
+		    data={'item_text': 'A new item for an existing list'}
+		)
+
+		self.assertEqual(Item.objects.count(), 1)
+		new_item = Item.objects.first()
+		self.assertEqual(new_item.text, 'A new item for an existing list')
+		self.assertEqual(new_item.list, correct_list)
+
+
+	def test_redirects_to_list_view(self):
+		other_list = List.objects.create()
+		correct_list = List.objects.create()
+
+		response = self.client.post(
+		    f'/lists/{correct_list.id}/add_item',
+		    data={'item_text': 'A new item for an existing list'}
+		)
+
+		self.assertRedirects(response, f'/lists/{correct_list.id}/')
+
+	def test_passes_correct_list_to_template(self):
+		other_list = List.objects.create()
+		correct_list = List.objects.create()
+		response = self.client.get(f'/lists/{correct_list.id}/')
+		self.assertEqual(response.context['list'], correct_list) 
\ No newline at end of file