Fakultas Ilmu Komputer UI

Commit b7c6d085 authored by Luthfi Dzaky Saifuddin's avatar Luthfi Dzaky Saifuddin
Browse files

add readme MD

parent a106a754
Pipeline #26083 passed with stages
in 8 minutes and 26 seconds
......@@ -8,10 +8,10 @@ http://pmpl-luthfi.herokuapp.com
# Tutorial
## Tutorial 1 (DONE)
## Tutorial 2 (DONE)
## Tutorial 1
## Tutorial 2
forgot squash commit
## Tutorial 3 Explanation (DONE)
## Tutorial 3
### Isolation Test
Pada tutorial 3 kali ini, dijelaskan mengenai <i>isolation test</i>, dimana seharusnya sebuah tes berjalan secara <b>independen</b>. Pada tutorial sebelumnya ketika kita menjalankan <i>functional test</i>. Kita harus menghapus `db.sqlite3` terlebih dahulu karena masih tersimpan data pada <i>functional test</i> sebelumnya.
......@@ -38,7 +38,7 @@ Kedua, pada latihan sebelumnya setiap kali kita menjalankan sebuah `functional t
Pada latihan kali ini menggunakan konsep `try-catch` dimana ketika tiap `time.sleep(0.5)` akan mengecek apakah elemen yang dicari ada atau tidak. Jika sudah mencapai `threshold` yang ditentukan (pada latihan ini 10 detik), maka akan langsung menimbulkan error.
![Foto 2](https://i.ibb.co/dBrHJSq/line-20190928-212737.jpg)
## Tutorial 4 (DONE)
## Tutorial 4
[Bab 7]
Pada tutorial 4 kali ini, mempelajari bagaimana seharusnya sebuah program
......@@ -304,3 +304,85 @@ sama atau tidak. Jadi, ketika message.add_message dipanggil tetap akan memanggil
tanpa ditimpa hasil mock. Hal tersebut bisa dibilang mock sangat terikat
dengan implementasinya, jika implementasinya mengubah sebuah pemanggilan fungsi walau
hasilnya sama, test mock juga harus diubah. Hal tersebut dinamakan <i>"tightly coupled with the implementation"</i>
## Tutorial 9
###Bagian 20.1-20.2
Pada tutorial kali ini, dijelaskan bagaimana membuat autentikasi di Django
untuk melakukan functional test. Pertama-tama saya akan mencoba menjelaskan
perbedaan FT di bagian 18.3 dan FT sekarang ketika melakukan
spike, terdapat test berikut:
```python
# she is logged in!
self.wait_for(
lambda: self.browser.find_element_by_link_text('Log out')
)
navbar = self.browser.find_element_by_css_selector('.navbar')
self.assertIn(TEST_EMAIL, navbar.text)
# Now she logs out
self.browser.find_element_by_link_text('Log out').click()
# She is logged out
self.wait_for(
lambda: self.browser.find_element_by_name('email')
)
navbar = self.browser.find_element_by_css_selector('.navbar')
self.assertNotIn(TEST_EMAIL, navbar.text)
```
Kemudian, pada bagian 20.1, kami membuat juga FT yang kegunaanya sama,
sehingga membuat fungsi pada base.py seperti berikut:
```python
@wait
def wait_to_be_logged_in(self, email):
self.browser.find_element_by_link_text('Log out')
navbar = self.browser.find_element_by_css_selector('.navbar')
self.assertIn(email, navbar.text)
@wait
def wait_to_be_logged_out(self, email):
self.browser.find_element_by_name('email')
navbar = self.browser.find_element_by_css_selector('.navbar')
self.assertNotIn(email, navbar.text)
```
Sehingga pada FT yang sekarang lebih simpel:
```python
# she is logged in!
self.wait_to_be_logged_in(email=TEST_EMAIL)
# Now she logs out
self.browser.find_element_by_link_text('Log out').click()
# She is logged out
self.wait_to_be_logged_out(email=TEST_EMAIL)
```
Kemudian, yang paling baru dari tutorial kali ini adalah mengenai
membuat session autentikasi yang bisa digunakan seperti berikut:
```python
def create_pre_authenticated_session(self, email):
user = User.objects.create(email=email)
session = SessionStore()
session[SESSION_KEY] = user.pk
session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
session.save()
## to set a cookie we need to first visit the domain.
## 404 pages load the quickest!
self.browser.get(self.live_server_url + "/404_no_such_url/")
self.browser.add_cookie(dict(
name=settings.SESSION_COOKIE_NAME,
value=session.session_key,
path='/',
))
```
Hal tersebut memudahkan kita untuk melakukan FT yang berkaitan dengan login
tanpa menuliskan FT untuk melakukan login seperti yang dilakukan pada FT
di 18.3. Hal tersebut jelas mempersingkat waktu FT yang seringkali memakan waktu.
Namun, ada beberapa concern, seperti kita juga harus melakukan FT dimana
proses yang dilakukan terurut sehingga semua FT yang kita lakukan sudah
dalam proses yang benar.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment