Fakultas Ilmu Komputer UI
Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
PMPL
Collection of Practice
2019
1606889830-practice
Commits
1fa91823
Commit
1fa91823
authored
Oct 13, 2019
by
Luthfi Dzaky Saifuddin
Browse files
pass functional test and add section in readme md
parent
70ac3962
Pipeline
#23140
passed with stages
in 9 minutes
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
1fa91823
...
...
@@ -60,3 +60,23 @@ Ada perubahan pada `functional_test` dimana saya harus memakai
`StaticLiveServerTestCase`
untuk mengetes layout karena ketika saya menggunakan
`LiveServerTestCase`
style yang saya gunakan tidak tampil. Namun, penggunaannya tetap sama.
## Tutorial 5
Red-Green-Refactor merupakan bentuk implementasi dari TDD.
`RED`
dikatakan sebagai
fase dimana kita membuat test-test yang memungkinkan dari semua use case, dikatakan RED
karena pada fase ini akan membuat semua test fail/pipeline fail karena kita
belum membuat implementasi dari program tersebut. Kemudian
`GREEN`
merupakan fase
dimana kita mengimplementasi program dengan memenuhi keseluruhan test yang dibuat.
Hal tersebut akan membuat test kita berhasil atau pipeline kita sudah menunjukkan
success. Kemudian
`REFACTOR`
merupakan fase dimana kita melakukan refaktorisasi
terhadap implementasi yang ada, seperti contohnya menghapus duplikasi kode, penamaan variabel,
simplifikasi fungsi dan lain-lain. Hal tersebut membuat program yang kita buat
akan lebih mudah terhindar dari bug atau
`code smell`
dimana hal tersebut merupakan
salah satu penanda bahwa kita menerapkan
`clean code`
atau tidak.
Kemudian, mengenai
`Test Organization`
,
`Test Organization`
merupakan
bentuk pengorganisasian test berdasarkan tanggung jawab aktivitas apa yang dilakukan.
Seperti pada
`functional test`
membagi pada 3 aktivitas berbeda dan
`test lists`
membagi
pada 2 aktivitas berbeda, yaitu aktivitas yang berkaitan dengan
`views`
dan berkaitan
dengan
`models`
. Hal tersebut memberikan keuntungan ketika program yang kita buat
memuat banyak aktivitas sehingga untuk mencari test atau membuat test terkait aktivitas tersebut
tidak hanya berada di 1 file yang bisa mengakibatkan file tersebut menjadi panjang.
\ No newline at end of file
lists/templates/base.html
View file @
1fa91823
...
...
@@ -6,7 +6,8 @@
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<link
href=
"/static/bootstrap/css/bootstrap.min.css"
rel=
"stylesheet"
>
<link
href=
"/static/base.css"
rel=
"stylesheet"
>
<link
href=
"/static/base.css"
rel=
"stylesheet"
>
{% load sass_tags %}
<link
href=
"{% sass_src 'home1.scss' %}"
rel=
"stylesheet"
type=
"text/css"
/>
</head>
...
...
@@ -28,38 +29,50 @@
<button>
Contact
</button>
</p>
</div>
<div
class=
"container"
>
<h3
id=
"comment-todo"
class=
"text-center"
>
{% if list.item_set.count >= 5 %}
oh tidak
{% elif list.item_set.count
<
5
%}
sibuk
tapi
santai
{%
else
%}
yey
,
waktunya
berlibur
{%
endif
%}
</
h3
>
<div
class=
"row"
>
<div
class=
"container"
>
<h3
id=
"comment-todo"
class=
"text-center"
>
{% if list.item_set.count >= 5 %}
oh tidak
{% elif list.item_set.count
<
5
%}
sibuk
tapi
santai
{%
else
%}
yey
,
waktunya
berlibur
{%
endif
%}
</
h3
>
<div
class=
"row"
>
<div
class=
"col-md-6 col-md-offset-3 jumbotron"
>
<div
class=
"text-center"
>
<h1>
{% block header_text %}{% endblock %}
</h1>
<form
method=
"POST"
action=
"{% block form_action %}{% endblock %}"
>
<input
name=
"item_text"
id=
"id_new_item"
class=
"form-control input-lg"
placeholder=
"Enter a to-do item"
/>
{% csrf_token %}
</form>
</div>
<div
class=
"text-center"
>
<h1>
{% block header_text %}{% endblock %}
</h1>
<form
method=
"POST"
action=
"{% block form_action %}{% endblock %}"
>
<input
name=
"item_text"
id=
"id_new_item"
class=
"form-control input-lg"
placeholder=
"Enter a to-do item"
/>
{% csrf_token %}
{% if error.text != '' %}
<div>
<p
class=
"alert-danger has-error"
>
{{ error }}
</p>
</div>
{% endif %}
</form>
</div>
</div>
</div>
</div>
<div
class=
"row"
>
<div
class=
"col-md-6 col-md-offset-3"
>
{% block table %}
{% endblock %}
</div>
</div>
<div
class=
"row"
>
<div
class=
"col-md-6 col-md-offset-3"
>
{% block table %}
{% endblock %}
</div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
lists/views.py
View file @
1fa91823
...
...
@@ -3,20 +3,27 @@ from django.http import HttpResponse
from
lists.models
import
Item
,
List
# Create your views here.
def
home_page
(
request
):
def
home_page
(
request
,
error
=
''
):
items
=
Item
.
objects
.
all
()
return
render
(
request
,
'homepage.html'
,
{
'items'
:
items
})
return
render
(
request
,
'homepage.html'
,
{
'items'
:
items
,
'error'
:
error
})
def
view_list
(
request
,
list_id
):
def
view_list
(
request
,
list_id
,
error
=
''
):
list_
=
List
.
objects
.
get
(
id
=
list_id
)
return
render
(
request
,
'list.html'
,
{
'list'
:
list_
})
return
render
(
request
,
'list.html'
,
{
'list'
:
list_
,
'error'
:
error
})
def
new_list
(
request
):
if
len
(
request
.
POST
[
'item_text'
])
==
0
:
error
=
"You can't have an empty list item"
return
home_page
(
request
,
error
)
list_
=
List
.
objects
.
create
()
Item
.
objects
.
create
(
text
=
request
.
POST
[
'item_text'
],
list
=
list_
)
return
redirect
(
f
'/lists/
{
list_
.
id
}
/'
)
def
add_item
(
request
,
list_id
):
list_
=
List
.
objects
.
get
(
id
=
list_id
)
if
len
(
request
.
POST
[
'item_text'
])
==
0
:
error
=
"You can't have an empty list item"
return
view_list
(
request
,
list_id
,
error
)
Item
.
objects
.
create
(
text
=
request
.
POST
[
'item_text'
],
list
=
list_
)
return
redirect
(
f
'/lists/
{
list_
.
id
}
/'
)
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment