From a03d71061ca11916009cfdbe5f406e6972b4c45d Mon Sep 17 00:00:00 2001 From: Yumna Pratista <yumnanaruto@gmail.com> Date: Wed, 25 Sep 2019 16:25:32 +0700 Subject: [PATCH] Model for list Items and associated migration --- .../__pycache__/models.cpython-37.pyc | Bin 246 -> 432 bytes app_homepage/__pycache__/tests.cpython-37.pyc | Bin 1130 -> 1783 bytes app_homepage/migrations/0001_initial.py | 20 ++++++ app_homepage/migrations/0002_item_text.py | 18 ++++++ .../__pycache__/0001_initial.cpython-37.pyc | Bin 0 -> 628 bytes .../__pycache__/0002_item_text.cpython-37.pyc | Bin 0 -> 602 bytes app_homepage/models.py | 3 +- app_homepage/tests.py | 20 ++++++ db.sqlite3 | Bin 0 -> 139264 bytes functional_test.py | 28 ++++++--- geckodriver.log | 58 ++++++++++++++++++ 11 files changed, 139 insertions(+), 8 deletions(-) create mode 100644 app_homepage/migrations/0001_initial.py create mode 100644 app_homepage/migrations/0002_item_text.py create mode 100644 app_homepage/migrations/__pycache__/0001_initial.cpython-37.pyc create mode 100644 app_homepage/migrations/__pycache__/0002_item_text.cpython-37.pyc diff --git a/app_homepage/__pycache__/models.cpython-37.pyc b/app_homepage/__pycache__/models.cpython-37.pyc index 3869d445de8560a569c1afb19fa0425663d192b1..03d012f4a9ceb0c1e8cbc9a817275a58a0fdd430 100644 GIT binary patch literal 432 zcmZ?b<>g{vU|^VS&>fq`z`*br#DQTJ1_lNP1_p*=B?bnD6owSW9EM!RC`LvGcZL+E z6y_F&6y{XMET(4WDCQKFU<OUrmmr;*jJMcw^HWlDijzTH7-ohUCc(hKkjfCnn8Fan zl**jNlERq6)XNyfn!+5+pviKJ#j_+e_ZEXD<1O}-)U?FXoDx4xwp$$W@p*~4sqyi* zxZ>k;^HWN5Ky04)_`=e}9EeO269WUoEzXeCiW0ZX)SQ%CEG4NGB`X<<xEUBA#IF<= zs~GRnoXo_GnBdgh)Z&uVA_eo90N((g7}tu_qU6ltR0YErLo)+23u7}&b2Ht7qQvBq z%;Z!fY=SX~1qJaL`MIeDiRq~^5HIT$R2G4J3c|%82XQch`F@%#w>VR>67$mY^-_`` gPG$84g%VgA;YJ9H2jmqF8;D2k7(sCWGK_}_0OY@DbN~PV delta 177 zcmdnM{EackiI<m)fq{V`&7&#ShJk_MF^B`hObiSR4h#$o#R3cr3@HpLj5!Rsj8Tk? z3@J>(44TX@LFzOaZ?Wa(r=;c-`)M-W;!Md(%uCPLOGzpMX<o@t#KOP;A%2xleD7yd yP?VpQnp|RF7@v`!n_7^Vo*I)_P=Me-jM6Kpyv1RYo1apelWNDvz`*bsWEBAD{VbdS diff --git a/app_homepage/__pycache__/tests.cpython-37.pyc b/app_homepage/__pycache__/tests.cpython-37.pyc index dd513e03a93317ad2baee47f1f210ac2fab1dbbe..3af5b760dc98e6f7b9a54d5cb312ba6336d842af 100644 GIT binary patch delta 929 zcmaFG@tv2?iI<m)fq{XcTE9E?FUv$e3C5g>>L#`<DQr0$xtvj)j0`CZDeO61x!h6Q zj12A!DI6)BEet7~sf^9cQ9SMpDO@SsEet8#U_NgOPcVZf@5CAhRu<2a)ZB?X?=lKZ zp3d0F$URw-sg03q@&YDHM()YCm{etW85kHenTq%r7#NE9L4*LD5S%Q{tjNee*_Ju6 zUI-*A0U{9cV3r_AjFW+Z0fdWL7#J8hm^fI9K)hs-hhUhAfq}t+fq|h|gn@w}l_82T zg&~S5g)xPxg&~SLg*li(ljRmK$g#fpDXBRjsl_G9j8MI73=H)QAd{Uz`imGC7)ltL z8EP3*7;6~g8EY69FfC+YgorVvFx4={GuAM{#Il$duq<S#Wv*dZz*@t+fNdc|3iCoH zMur;Z6c$N_T9z8-6jn)wT2`<;OBQ1aBUl!snl+0tg$cw<VF<2g&}8$gk_yR4RY=P$ zDlSpbNG(e((p1RFEG|*VEJ@9+;s?21p(G<!p*S@;KQHAa$iqb-FBGwYf|$LCoq>Vj z7E4KLMaeCe;>5DlTkQEsS*gh-#kZIfb8>ERCl(i{7L~XbmL}%hVolC3%`4Gl1IJ4g zS6V&D(s+<XQQQ#oVVuOW)D$qgI7$HQw0Mx&5TPhRs9J<j5jfJo1SsZiDU_rZmw>cn z=B39c=B30JrIr+Brj~)YAnS_7Kw&OX4~hy#Hbyo^4kif6#VEkU!N|eL$5^EY@;W@) z^az>gr^!+z2}(6mAVL~MsDKEtqYwnhc||e|3=E(I!(R*vP7WrpfS)Gc<g3ii8Em<r zq*4qCSh19>#Ju!;y^_@2f}F&XRK1-1#FW&cA`XzzpwtM~isXH;O(08daoFVMr<CTT S+JR!L7?cxu7~zmvfExfzb=FD% delta 253 zcmey)`-+3liI<m)fq{X6y{I!blW8KK1Y^KNbrVH~6t*0WT+S#?Mh16=6!sL37KRj# zRK{lJD6SOFU<OUDi8CA~KDfomKY2G}BO}*jTc$Qf&dEoZEE%~b|6@{>;bCB4&}1s& zWnf?^;sX)<a6(|RJ+mSs-{eH*L~}uqs5po~$b(q|ATbUG1_lr=W&tsnI9Q56JU>nD t$v$k(ljpEWSh2&D6@hgj2$23;95%W6DWy57c8m-R48<UC@-RXnGXO!(DwO~L diff --git a/app_homepage/migrations/0001_initial.py b/app_homepage/migrations/0001_initial.py new file mode 100644 index 0000000..d1f51bd --- /dev/null +++ b/app_homepage/migrations/0001_initial.py @@ -0,0 +1,20 @@ +# Generated by Django 2.2.1 on 2019-09-25 09:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Item', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ], + ), + ] diff --git a/app_homepage/migrations/0002_item_text.py b/app_homepage/migrations/0002_item_text.py new file mode 100644 index 0000000..02183b8 --- /dev/null +++ b/app_homepage/migrations/0002_item_text.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.1 on 2019-09-25 09:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app_homepage', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='item', + name='text', + field=models.TextField(default=''), + ), + ] diff --git a/app_homepage/migrations/__pycache__/0001_initial.cpython-37.pyc b/app_homepage/migrations/__pycache__/0001_initial.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e5acc0a56ef65389525d30d7e52d9f699069fd1b GIT binary patch literal 628 zcmZ?b<>g{vU|`_a?~dKW$iVOz#DQTJ1_lNP1_p*=H3kNT6owSW9EM!RD8^i-C?-Y* zcZL+E6y_F&6y{XMEaqnBDCQKFU<OUrmmuAmOt-jlGt-L_OEUBGif^&y=BK3Q6eokE zV3-qTxCH|PLn=cQV+unQQwn1gb2>v5ODby?8_4)n_AHJR#uUaBmK4?$wqBMrrgX*> z_FkrR#wgAdj$j5&&Rd+mFndC7v3QoG=H6n;OmVx#<msZxa*HRiv?M=1xhOTUBsJw0 zcR^8RZemeoe0FN(EzaW9qRhmc%&OE|JY}gxN%_U8@p*~4shUi;SU~hGwzSODoRnfe zO|DxU@nEU=_*-1@@wxdar8%kb@wa&5;|og@b3lsY<8QHN=4F;-Cg$AYNl7h8%}Ytm zOU_I!E@EO}V7SHY40eGpC=`mAK_Z-vr6u`pAPa7B<rkzv18OBhkr)F5g!onJVin_E znv<EB5fhx6n_66wTBKke6W|-*6XRNuT9lkwoT^|LV`yezW?^h*X>O)lP?VTll9`-p zgiSCev7jJ6BR@B_ATd2P1`#(g1_lO(@ldzx6;u|1BApEs>7aDM!NkJE!otGH!~_=i s(`32DnUa;5m!7Yek_7e}*gIfJgwr7`agaYbY#_m92l90>C@=(=0Sx}Ci~s-t literal 0 HcmV?d00001 diff --git a/app_homepage/migrations/__pycache__/0002_item_text.cpython-37.pyc b/app_homepage/migrations/__pycache__/0002_item_text.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e56f938c3ab9594f126b02e8c5b9e6d8d64656fe GIT binary patch literal 602 zcmZ?b<>g{vU|^VM&>h>#$iVOz#DQTJ1_lNP1_p*=H3kNT6owSW9EM!RD8^i-C?-Y* zcZL+E6y_F&6y{XMEaqnBDCQKFU<OUrmmuAmOt-jlGt-L_OEUBGif^&y=BK3Q6eokE zV3-YNxDEpYLn=cQV+unQQwn1`V-#~LOBO50@Km-e_7s*B)?UUGwqE9R#wd;y_Fx80 zj$53*Ftat8Zt)}*6vSub=cX1Url;QGF)%PNjL*!=EXhpFxy6!MlA3#qr6jeY<Q9V_ z<1O}-)U?FXoDxmuTU=l_#pfmFrru%!ldNf(sW~Zrnw+;d;=$ta@wd3*<8$*<N^?@< z<8SfA#}}3+=77|Kcqyp`sd*`>dC8fn#YIdE3=Fq898*%<KxPy%gSea_sTCz){w=Qj zf>dZ=tYjz>Wnh31zsg;#V!TUpG7~dmf>U!-i%U|A6wG4+d;@%9Tq{zGk~51_6%1nx z%?!*ejLj^~&2$Tj5|c|ZlT(eb3C19YL<}PQV+;%ojN(B-5f2Ipy@JXjP}G8ApcoYU z9L#JiER0NyOpIW0KTVcfoGDp}dFlCjDM?_jfjtD4L^vM85(D{^!v+#ab|8NjgTg|9 F835A1p=1C6 literal 0 HcmV?d00001 diff --git a/app_homepage/models.py b/app_homepage/models.py index 71a8362..2339168 100644 --- a/app_homepage/models.py +++ b/app_homepage/models.py @@ -1,3 +1,4 @@ from django.db import models -# Create your models here. +class Item(models.Model): + text = models.TextField(default = '') diff --git a/app_homepage/tests.py b/app_homepage/tests.py index f798f5d..7e88a00 100644 --- a/app_homepage/tests.py +++ b/app_homepage/tests.py @@ -2,6 +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 django.template.loader import render_to_string # Create your tests here. @@ -15,4 +16,23 @@ class HomePageTest(TestCase): response = self.client.post('/', data={'item_text':'A new list item'}) self.assertIn('A new list item', response.content.decode()) self.assertTemplateUsed(response, 'app/home.html') + +class ItemModelTest(TestCase): + + def test_saving_and_retrieving_items(self): + first_item = Item() + first_item.text = 'The first (ever) list item' + first_item.save() + + second_item = Item() + second_item.text = 'Item the second' + second_item.save() + + 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(second_saved_item.text, 'Item the second') \ No newline at end of file diff --git a/db.sqlite3 b/db.sqlite3 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..84a97d59846267e90d4d32eb9caeb5944b75d86f 100644 GIT binary patch literal 139264 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 literal 0 HcmV?d00001 diff --git a/functional_test.py b/functional_test.py index 82f6057..c6268c4 100644 --- a/functional_test.py +++ b/functional_test.py @@ -11,6 +11,11 @@ class NewVisitorTest(unittest.TestCase): def tearDown(self): self.browser.quit() + def check_for_row_in_list_table(self, row_text): + table = self.browser.find_element_by_id('id_list_table') + rows = table.find_elements_by_tag_name('tr') + self.assertIn(row_text, [row_text for row in rows]) + def test_can_start_a_list_and_retrieve_it_later(self): # Edith has heard about a cool new online to-do app. She goes # to check out its homepage @@ -21,6 +26,11 @@ class NewVisitorTest(unittest.TestCase): header_text = self.browser.find_element_by_tag_name('h1').text self.assertIn('To-Do', header_text) + inputbox = self.browser.find_element_by_id('id_new_item') + inputbox.send_keys(Keys.ENTER) + time.sleep(1) + # The page updates again, and now shows both items on her list + self.check_for_row_in_list_table('1: Buy peacock feathers') # She is invited to enter a to-do item straight away # There is still a text box inviting her to add another item. She # enters "Use peacock feathers to make a fly" (Edith is very @@ -31,13 +41,17 @@ class NewVisitorTest(unittest.TestCase): time.sleep(1) # The page updates again, and now shows both items on her list - table = self.browser.find_element_by_id('id_list_table') - rows = table.find_elements_by_tag_name('tr') - self.assertIn('1: Buy peacock feathers', [row.text for row in rows]) - self.assertIn( - '2: Use peacock feathers to make a fly', - [row.text for row in rows] - ) + self.check_for_row_in_list_table('1: Buy peacock feathers') + self.check_for_row_in_list_table('2: Use peacock feathers to make a fly') + + # The page updates again, and now shows both items on her list + # table = self.browser.find_element_by_id('id_list_table') + # rows = table.find_elements_by_tag_name('tr') + # self.assertIn('1: Buy peacock feathers', [row.text for row in rows]) + # self.assertIn( + # '2: Use peacock feathers to make a fly', + # [row.text for row in rows] + # ) # Edith wonders whether the site will remember her list. Then she sees # that the site has generated a unique URL for her -- there is some diff --git a/geckodriver.log b/geckodriver.log index 5f7171a..50662d2 100644 --- a/geckodriver.log +++ b/geckodriver.log @@ -520,3 +520,61 @@ JavaScript error: resource://gre/modules/XULStore.jsm, line 66: Error: Can't fin [Child 11912, Chrome_ChJavaScript error: resource://gre/modules/ExtensionSettingsStore.jsm, line 117: Error: The ExtensionSettingsStore was accessed before the initialize promise resolved. console.error: (new Error("Transaction canceled due to a closed connection.", "resource://gre/modules/Sqlite.jsm", 613)) console.error: (new Error("Transaction canceled due to a closed connection.", "resource://gre/modules/Sqlite.jsm", 613)) +1569290323575 mozrunner::runner INFO Running command: "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\YUMNAP~1\\AppData\\Local\\Temp\\rust_mozprofileYP5ql9" +1569290324406 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: mozillaAddons +1569290324406 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: telemetry +1569290324406 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: resource://pdf.js/ +1569290324407 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: about:reader* +JavaScript error: resource://gre/modules/XULStore.jsm, line 66: Error: Can't find profile directory. +1569290327278 Marionette INFO Listening on port 56936 +1569290327401 Marionette WARN TLS certificate errors will be ignored for this session +1569290328922 Marionette INFO Stopped listening on port 56936 +JavaScript error: resource://activity-stream/lib/ActivityStreamPrefs.jsm, line 27: NS_ERROR_ILLEGAL_VALUE: Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIPrefBranch.removeObserver] +[Child 19360, Chrome_ChildThread] WARNING: pipe error: 109: file z:/task_1566861941/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341 +[Child 19360, Chrome_ChildThread] WARNING[Child 6428, Chrome_ChildThread] WARNING: pipe error: 109: file z:/task_1566861941/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341 +[Child 6428, Chrome_ChildThread] WARNING: pipe e[Parent 7632, Gecko_IOThread] WARNING: pipe error: 109: file z:/task_1566861941/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341 +[Child 13208, Chrome_ChildThread] WARNING: pipe error: 109: file z:/task_1566861941/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341 +[Child 13208, Chrome_C +###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost + +[G +###!!! [Child][MessageChannel::SendAndWait] Error: Channel error: cannot send/recv + +1569290599845 mozrunner::runner INFO Running command: "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\YUMNAP~1\\AppData\\Local\\Temp\\rust_mozprofile3vJRSq" +1569290600768 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: mozillaAddons +1569290600768 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: telemetry +1569290600768 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: resource://pdf.js/ +1569290600768 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: about:reader* +JavaScript error: resource://gre/modules/XULStore.jsm, line 66: Error: Can't find profile directory. +1569290609517 Marionette INFO Listening on port 57003 +1569290609684 Marionette WARN TLS certificate errors will be ignored for this session +1569290610259 Marionette INFO Stopped listening on port 57003 +JavaScript error: resource://activity-stream/lib/ActivityStreamPrefs.jsm, line 27: NS_ERROR_ILLEGAL_VALUE: Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIPrefBranch.removeObserver] +[Child 6[Parent 18116, Gecko_IOThread] WARNING: pipe error: 109: file z:/task_1566861941/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341 +[Child 21176, Chrome_ChildThread] WARNING: pipe error: 109: file z:/task_1566861941/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341 +[Child 21176, Chrome_JavaScript error: resource://gre/modules/ExtensionSettingsStore.jsm, line 117: Error: The ExtensionSettingsStore was accessed before the initialize promise resolved. +JavaScript error: resource://gre/modules/Sqlite.jsm, line 912: Error: Connection is not open. + +###!!! [Parent][DispatchAsyncMessage] Error: PBackgroundIDBFactory::Msg_PBackgroundIDBFactoryRequestConstructor Value error: message was deserialized, but contained an illegal value + +[GPU 9480, Chrome +###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost + +_ +###!!! [Child][MessageChannel::SendAndWait] Error: Channel error: cannot send/recv + +1569290666739 mozrunner::runner INFO Running command: "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\YUMNAP~1\\AppData\\Local\\Temp\\rust_mozprofileKddsnv" +1569290667493 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: mozillaAddons +1569290667493 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: telemetry +1569290667493 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: resource://pdf.js/ +1569290667493 addons.webextension.screenshots@mozilla.org WARN Loading extension 'screenshots@mozilla.org': Reading manifest: Invalid extension permission: about:reader* +JavaScript error: resource://gre/modules/XULStore.jsm, line 66: Error: Can't find profile directory. +1569290670921 Marionette INFO Listening on port 57043 +1569290671052 Marionette WARN TLS certificate errors will be ignored for this session +1569290673569 Marionette INFO Stopped listening on port 57043 +[Child 18832, Chrome_ChildThread] WARNING: pipe error: 109: file z:/task_1566861941/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341 +[Child 18832, Ch[Child 12040, Chrome_ChildThread] WARNING: pipe error: 109: file z:/task_1566861941/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341 +[Child 12040, Chrome_ChildThread] WARNIJavaScript error: resource://gre/modules/UrlClassifierListManager.jsm, line 680: TypeError: this.tablesData[table] is undefined +[Parent 17632, Gecko_IOThread] WARNING: pipe error: 109: file z:/task_1566861941/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341 +[Child 18196, Chrome_ChildThread] WARNING: pipe error: 109: file z:/task_1566861941/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 341 +[Child 18196, Chrome_Child \ No newline at end of file -- GitLab