- Perbedaan implementasi functional test fitur login
- Exercise 10 :
- Data migration
- Populated data
## Exercise 3
**Proses test isolation**
...
...
@@ -190,7 +193,7 @@ Dengan implementasi di **accounts/views.py** seperti berikut ini
Dengan implementasi tersebut, test tanpa mock terpenuhi sedangkan test dengan mock gagal terpenuhi. Dalam kata lain, dengan mock kita harus memiliki detil implementasi yang sesuai pada views, walaupun sebenarnya hasilnya sama sama benar.
## Exercise 8
## Exercise 9
### Perbedaan implementasi functional test fitur login
Pada bab 20.1 kita ingin menggunakan functional authentication system agar dapat mengidentifikasikan user dan memperlihatkan list yang sudah mereka buat. Maka dari itu kita membuat FT untuk logged-in user sehingga daripada melakukan seluruh prosedur dari tahap login yang memakan waktu, kita dapat melewati bagian login email (karena sudah logged in).
...
...
@@ -238,3 +241,53 @@ Untuk bagian 21.2, pada logs di heroku bisa dilihat bahwa ada error SMTPSenderRe
Ketika dilakukan modifikasi pada file models, kita dapat merubah database skema yang ada. Hal tersebut bisa menjadi masalah ketika data yang sudah ada menjadi tidak sesuai dengan skema yang baru. "Data migrations" adalah sebuah tipe migrasi yang memodifikasi data dalam database daripada merubah skema yang ada.
Pada exercise 10, saya membuat sebuat data migrations yang akan berjalan sebelum saya mengaplikasikan integrity constraint (untuk menghilangkan duplikasi).
Saya menambahkan constraints unik pada models dan melakukan makemigrations. Lalu saya menambahkan fungsi dibawah ini dalam file migration yang baru saja dibuat, **0005_remove_duplicates.py**, untuk merubah existing data.
```python
deffind_dupes(apps,schema_editor):
List=apps.get_model("lists","List")
forlist_inList.objects.all():
items=list_.item_set.all()
texts=set()
forix,iteminenumerate(items):
ifitem.textintexts:
item.text='{} ({})'.format(item.text,ix)
item.save()
texts.add(item.text)
```
### Simulation : Populate Data
Pada exercise ini, dilakukan populate data. Saya menggunakan data migrations untuk populate data sebanyak 100 data. Dengan membuat file migration baru dan menambahkan fungsi berikut ini.