From 2a519108e14989f593896f8d71d44193104e871c Mon Sep 17 00:00:00 2001
From: Ahmad Fauzan Amirul Isnain <ahmad.fauzan71@ui.ac.id>
Date: Sat, 31 Oct 2020 13:12:42 +0700
Subject: [PATCH] [#132] QA: Add Tests for PeriodForm Validation

---
 administration/tests.py                     |  51 +++++++++++++++++++-
 digipus/__pycache__/settings.cpython-36.pyc | Bin 4132 -> 4178 bytes
 2 files changed, 50 insertions(+), 1 deletion(-)

diff --git a/administration/tests.py b/administration/tests.py
index 6ba9e50..cc7b72d 100644
--- a/administration/tests.py
+++ b/administration/tests.py
@@ -10,7 +10,9 @@ from app.models import Category, Materi, LaporanMateri
 from authentication.models import User
 from bs4 import BeautifulSoup
 
-from datetime import datetime
+from datetime import datetime, timedelta
+
+from .forms import PeriodForm
 
 EDIT_ENDPOINT = "/edit"
 ERROR_403_MESSAGE = 'Kamu harus login untuk mengakses halaman ini'
@@ -1659,3 +1661,50 @@ class EditKontributorStatusTests(TestCase):
         self.assertEqual(response.status_code, 403)
 
 
+class PeriodFormTests(TestCase):
+
+    def test_validation_error_when_start_date_is_none(self):
+        data = {
+            'start_date': None,
+            'end_date': datetime.now(),
+        }
+        form = PeriodForm(data)
+        self.assertFalse(form.is_valid())
+        self.assertEqual(
+            form["start_date"].errors,
+            ['masukan waktu mulai']
+        )
+
+    def test_validation_error_when_end_date_is_none(self):
+        data = {
+            'start_date': datetime.now(),
+            'end_date': None,
+        }
+        form = PeriodForm(data)
+        self.assertFalse(form.is_valid())
+        self.assertEqual(
+            form["end_date"].errors,
+            ['masukan waktu selesai']
+        )
+
+    def test_validation_error_when_start_date_greater_than_end_date(self):
+        current_time = datetime.now()
+        data = {
+            'start_date': current_time + timedelta(days = 1),
+            'end_date': current_time,
+        }
+        form = PeriodForm(data)
+        self.assertFalse(form.is_valid())
+        self.assertEqual(
+            form["end_date"].errors,
+            ['waktu selesai sebelum waktu mulai']
+        )
+
+    def test_form_valid_when_data_valid(self):
+        current_time = datetime.now()
+        data = {
+            'start_date': current_time - timedelta(days = 1),
+            'end_date': current_time,
+        }
+        form = PeriodForm(data)
+        self.assertTrue(form.is_valid())
diff --git a/digipus/__pycache__/settings.cpython-36.pyc b/digipus/__pycache__/settings.cpython-36.pyc
index 1cf78ac5dc695e4dca1c09a4b10db034aec54534..43d2d1c4169e7113ebfa287197b9840fd637a652 100644
GIT binary patch
delta 670
zcmZ3Ya7jVgn3tC;Wci$UPca6D#|%h7fPsO*fq{Xcc)~{I?Tq#5j8RG{E>X%Uu2Cu}
ziczX5icxAQic#vR>{<LNZmH~98emd0#XXfhODn}Al|4&4#WRyNN+*>i#Vf@-#iy4k
zN;j1y#W%$d%+^a~%;LxrP31}PZ)S?pPYH-JKo&`7j516Kj530X#q*>DH8VvSrvyit
zq=ZD7ri4bBrG%w~r!!_UMwzEXL|LS=q(r7ffsM9IWl4!ni2<{%Qdv@BQ{upE>r|GM
z_>=@N+a^UZ$~Hwe$}WW|m_ajfb05<~HpW|%3pmxajS~wB^h!%IbBgr>5{rw=^NUi#
z5_2+B5=-)n;35I}Iho0olV@>VXN;O$#C@c`N;@ShF)uw|FFC&`RWCO&Ge<8eF*!Rm
zFQr(oIJcxg&lM!*1QEK$<?8F`=@aka9~@G}2bN9;N$Vx&=fdOy{DVR=y_pyoZt)`&
z$A<>H233g{<QC*4=Oh*v8yOfGIDoY3<$(1HBPk7V3=R(W4|0hT04Yz&OwTMRElvel
zqiMg{f@e2V{ViUIawkV;Z&yE;B2fkgh9WT#Ar2xW7#J8}N<xEO<3oIck-5RaJ}ViD
zoIol;#4juTjQreG{ltvi#FY57#L}w7JQGt3{oKT&tjxT`99^gj^kH=IWKVuc#$%I{
U`THmT;Md{fU}s_EfkGBW02@@xZ~y=R

delta 552
zcmcblutY)Gn3tF9_`HeniJ}Y)j~S4F00RSq0|Ns?aoR@Z?Tqy)PAM*#j44hju3*wF
zlQEqoN-4!XN;$<NN+m@xN;O3>N-ae(N<Ec5i$BFPl|4%XOlqchrLt#frFf^ZXKAPS
zWU@x-q_U*=rue1!_cBH4rn002qy&Q5dZ~<A99g2NJSjoVOi}tN!BGZq5!0Y%rgX+A
z!<3LHBe-B_GgFjtN?4RhN_doMN<@@dN@Pk@I%6hdlz9qMFoS0F<{eBA*%+fH&*D^P
z^q4%6O~kAqvADQAzbGZXEHNiDC9xzkKTj{TIJL;Jq@*Y_sk9_DI5RghC$T8Aq%sVm
zBEP804y08Fn^xb<yv*FvT%Xju^pXsO278bOU2Gbh^K*0a^8%o*K<ID)=}^X|!>=?q
zwJ0+gre*RQ&g+b~CLiHC!lY@j*_3BDllMx7B5MW)2=OaOKO;XkRX;l;vof(L(b7`i
zB|o_|H#M)MSU<qg+0#eg*D=I9)F;^0*IYlqH^4`~peR2pH9I~#Kese5b8-s53gf=X
Qo&5c5Y>Xf{SwcVu0E`*2*#H0l

-- 
GitLab