diff --git a/app_homepage/__pycache__/models.cpython-37.pyc b/app_homepage/__pycache__/models.cpython-37.pyc index 03d012f4a9ceb0c1e8cbc9a817275a58a0fdd430..711d89f975eda38b159e312355ecb0e4b2315710 100644 Binary files a/app_homepage/__pycache__/models.cpython-37.pyc and b/app_homepage/__pycache__/models.cpython-37.pyc differ diff --git a/app_homepage/__pycache__/tests.cpython-37.pyc b/app_homepage/__pycache__/tests.cpython-37.pyc index 23cbcbd01366cdc3d5e085a37fc661584facbb10..b697218bc8188e54c688ed4d1882d24a1cd74186 100644 Binary files a/app_homepage/__pycache__/tests.cpython-37.pyc and b/app_homepage/__pycache__/tests.cpython-37.pyc differ diff --git a/app_homepage/__pycache__/views.cpython-37.pyc b/app_homepage/__pycache__/views.cpython-37.pyc index ca07c81cb9d3f1d7f0ab1a1d954deb95f2cf32fe..97f8d89704adc73e03d6ae56ddb2132615dc18fa 100644 Binary files a/app_homepage/__pycache__/views.cpython-37.pyc and b/app_homepage/__pycache__/views.cpython-37.pyc differ diff --git a/app_homepage/migrations/0003_list.py b/app_homepage/migrations/0003_list.py new file mode 100644 index 0000000000000000000000000000000000000000..49253cf01b81f9a1df584c40a89f4079c81bf816 --- /dev/null +++ b/app_homepage/migrations/0003_list.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.1 on 2019-10-10 03:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app_homepage', '0002_item_text'), + ] + + operations = [ + migrations.CreateModel( + name='List', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ], + ), + ] diff --git a/app_homepage/migrations/0004_item_list.py b/app_homepage/migrations/0004_item_list.py new file mode 100644 index 0000000000000000000000000000000000000000..ad00e65f1c53b44aca0c0b915141962a5421b280 --- /dev/null +++ b/app_homepage/migrations/0004_item_list.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.1 on 2019-10-10 03:40 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('app_homepage', '0003_list'), + ] + + operations = [ + migrations.AddField( + model_name='item', + name='list', + field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='app_homepage.List'), + ), + ] diff --git a/app_homepage/migrations/__pycache__/0003_list.cpython-37.pyc b/app_homepage/migrations/__pycache__/0003_list.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b1344b72f610c862f78f5042143576b68613faa2 Binary files /dev/null and b/app_homepage/migrations/__pycache__/0003_list.cpython-37.pyc differ diff --git a/app_homepage/migrations/__pycache__/0004_item_list.cpython-37.pyc b/app_homepage/migrations/__pycache__/0004_item_list.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e3b6d39860a2c896a045878d5a8723638fed8e78 Binary files /dev/null and b/app_homepage/migrations/__pycache__/0004_item_list.cpython-37.pyc differ diff --git a/app_homepage/migrations/__pycache__/0005_auto_20191010_1037.cpython-37.pyc b/app_homepage/migrations/__pycache__/0005_auto_20191010_1037.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8724174a1902e15f75769cbcd629918e31a89cda Binary files /dev/null and b/app_homepage/migrations/__pycache__/0005_auto_20191010_1037.cpython-37.pyc differ diff --git a/app_homepage/models.py b/app_homepage/models.py index 23391689c46e637c88b2f487e5a43f44dbe3faa8..d3e5682ca297dea60aba43944e07dfbdcdd37e4d 100644 --- a/app_homepage/models.py +++ b/app_homepage/models.py @@ -1,4 +1,9 @@ from django.db import models +class List(models.Model): + pass + class Item(models.Model): text = models.TextField(default = '') + list = models.ForeignKey(List, default = None, on_delete = models.CASCADE) + diff --git a/app_homepage/tests.py b/app_homepage/tests.py index 839b881db21fb2b1bc7269fd33d6bdee12026ae0..ecf5428a91aad67a18a9643d1878f05d05583d78 100644 --- a/app_homepage/tests.py +++ b/app_homepage/tests.py @@ -2,7 +2,7 @@ from django.test import TestCase from django.urls import resolve from django.http import HttpRequest from .views import home_page -from .models import Item +from .models import Item, List from django.template.loader import render_to_string # Create your tests here. @@ -13,7 +13,7 @@ class HomePageTest(TestCase): self.assertTemplateUsed(response, 'app/home.html') def test_can_save_a_POST_request(self): - response = self.client.post('/', data={'item_text':'A new list item'}) + 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') @@ -43,24 +43,34 @@ class HomePageTest(TestCase): # self.assertIn('oh tidak', response.content.decode()) -class ItemModelTest(TestCase): +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): @@ -69,10 +79,11 @@ class ListViewTest(TestCase): self.assertTemplateUsed(response, 'app/list.html') def test_displays_all_items(self): + list_ = List.objects.create() - Item.objects.create(text='itemey 1') + Item.objects.create(text='itemey 1', list = list_) - Item.objects.create(text='itemey 2') + Item.objects.create(text='itemey 2', list = list_) response = self.client.get('/lists/the-only-list-in-the-world/') self.assertContains(response, 'itemey 1') diff --git a/app_homepage/views.py b/app_homepage/views.py index f106a55ba0dc92ef13734200079332591a1ed0ca..48700c65d6c61f5811ad009d72622c031c53ae2f 100644 --- a/app_homepage/views.py +++ b/app_homepage/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render, redirect from django.http import HttpResponse -from .models import Item +from .models import Item, List # Create your views here. def home_page(request): @@ -19,5 +19,6 @@ def view_list(request): return render(request, 'app/list.html', {'items': items}) def new_list(request): - Item.objects.create(text=request.POST['item_text']) - return redirect('/lists/the-only-list-in-the-world/') \ No newline at end of file + list_ = List.objects.create() + Item.objects.create(text=request.POST['item_text'], list=list_) + return redirect('/lists/the-only-list-in-the-world/') \ No newline at end of file diff --git a/db.sqlite3 b/db.sqlite3 index 0e00fda6995599cfff00e6771ba161d1593d94c7..45ba44c2a0b385b625e774afb607e0f4698c4a8f 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ