Skip to content

Commit e6ee53e

Browse files
authored
Merge pull request #315 from guidofamula/open-dev1
Adding/correct Bahasa and made minor improvements
2 parents aaea853 + c18490d commit e6ee53e

File tree

3 files changed

+75
-85
lines changed

3 files changed

+75
-85
lines changed

Diff for: 1-js/01-getting-started/2-manuals-specifications/article.md

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
21
# Manual dan spesifikasi
32

4-
Buku ini adalah *tutorial*. Tujuannya membantu kamu memahami bahasa ini pelan-pelan. Tapi sekali kamu akrab dengan dasarnya, kamu butuh sumber lain.
3+
Buku ini adalah _tutorial_. Tujuannya membantu kamu memahami bahasa ini (Javascript) pelan-pelan. Tapi sekali kamu akrab atau familiar dengan dasarnya, kamu juga membutuhkan dari sumber-sumber lain.
54

65
## Spesifikasi
76

@@ -17,14 +16,13 @@ Juga, jika kamu dalam pengembangan untuk peramban, maka ada spek lain yang dibah
1716

1817
## Manual
1918

20-
- **Referensi JavaScript MDN (Mozilla)** ialah manual dengan informasi dan contoh lain. Di sana bagus untuk mendapat informasi mendalam tentang metode, fungsi bahasa, dll.
19+
- **Referensi JavaScript MDN (Mozilla)** ialah manual dengan informasi dan contoh lain. Di sana bagus untuk mendapat informasi mendalam tentang metode, fungsi bahasa, dll.
2120

2221
Kamu bisa cari di <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
2322

2423
Meski, sering lebih bagus menggunakan pencarian internet. Pakai "MDN [term]" di query, misal <https://google.com/search?q=MDN+parseInt> untuk mencari fungsi `parseInt`.
2524

26-
27-
- **MSDN** – Manual Microsoft dengan banyak informasi, termasuk JavaScript (sering dirujuk sebagai JScript). Jika kamu butuh sesuatu yang spesifik ke Internet Explorer, lebih baik pergi ke: <http://msdn.microsoft.com/>.
25+
- **MSDN** – Manual Microsoft dengan banyak informasi, termasuk JavaScript (sering dirujuk sebagai JScript). Jika kamu butuh sesuatu yang spesifik ke Internet Explorer, lebih baik pergi ke: <http://msdn.microsoft.com/>.
2826

2927
Juga, kamu bisa menggunakan pencarian internet dengan frasa seperti "RegExp MSDN" atau "RegExp MSDN jscript".
3028

@@ -34,8 +32,8 @@ JavaScript merupakan bahasa berkembang, fitur baru ditambah secara reguler.
3432

3533
Untuk melihat dukungan mereka pada engine berbasis peramban dan lainnya, lihat:
3634

37-
- <http://caniuse.com> - tabel dukungan per-fitur, misal untuk melihat engine mana yang mendukung fungsi kryptografi modern: <http://caniuse.com/#feat=cryptography>.
38-
- <https://kangax.github.io/compat-table> - tabel dengan fitur dan engine bahasa yang mendukung atau yang tidak mendukung.
35+
- <http://caniuse.com> - tabel dukungan per-fitur, misal untuk melihat engine mana yang mendukung fungsi kryptografi modern: <http://caniuse.com/#feat=cryptography>.
36+
- <https://kangax.github.io/compat-table> - tabel dengan fitur dan engine bahasa yang mendukung atau yang tidak mendukung.
3937

4038
Semua sumber ini berguna di pengembangan nyata, karena mereka berisi informasi berharga tentang detil bahasa, dukungan mereka dll.
4139

Diff for: 1-js/03-code-quality/05-testing-mocha/article.md

+41-49
Original file line numberDiff line numberDiff line change
@@ -36,28 +36,23 @@ Tugas itu cuma contoh: ada operator `**` di JavaScript yang bisa melakukan itu,
3636

3737
Sebelum membuat kode `pow`, kita bisa bayangkan apa yang harus dilakukan fungsi itu dan menjelaskannya.
3838

39-
Deskripsi begitu disebut *spesifikasi* atau, singkatnya, spek, dan berisi deskripsi use case bersama dengan tes untuk mereka, seperti ini:
39+
Deskripsi begitu disebut _spesifikasi_ atau, singkatnya, spek, dan berisi deskripsi use case bersama dengan tes untuk mereka, seperti ini:
4040

4141
```js
42-
describe("pow", function() {
43-
44-
it("raises to n-th power", function() {
42+
describe("pow", function () {
43+
it("raises to n-th power", function () {
4544
assert.equal(pow(2, 3), 8);
4645
});
47-
4846
});
4947
```
5048

5149
Spek punya tiga blok bangunan utama yang bisa kamu lihat di bawah:
5250

53-
`describe("title", function() { ... })`
54-
: Fungsionalitas apa yang kita jelaskan. Di kasus ini kita akan menjelaskan fungsi `pow`. Dipakai untuk mengelompokkan "pekerja" -- blok `it`.
51+
`describe("title", function() { ... })` : Fungsionalitas apa yang kita jelaskan. Di kasus ini kita akan menjelaskan fungsi `pow`. Dipakai untuk mengelompokkan "pekerja" -- blok `it`.
5552

56-
`it("use case description", function() { ... })`
57-
: Di judul `it` kita *dalam bahasa manusia* menjelaskan use case tertentu, dan argumen kedua ialah fungsi yang mengetes itu.
53+
`it("use case description", function() { ... })` : Di judul `it` kita _dalam bahasa manusia_ menjelaskan use case tertentu, dan argumen kedua ialah fungsi yang mengetes itu.
5854

59-
`assert.equal(value1, value2)`
60-
: Kode di dalam blok `it`, jika implementasinya benar, harus berjalan tanpa galat.
55+
`assert.equal(value1, value2)` : Kode di dalam blok `it`, jika implementasinya benar, harus berjalan tanpa galat.
6156

6257
Fungsi `assert.*` dipakai untuk mengecek apakah `pow` bekerja sesuai harapan. Tepat di sini kita memakai salah satunya -- `assert.equal`, ia membandingkan argumen dan menghasilkan galat jika mereka tak sama. Di sini ia mengecek apakah hasil `pow(2, 3)` sama dengan `8`. Ada tipe perbandingan dan pengecekan lain, yang akan kita tambah nanti.
6358

@@ -75,7 +70,7 @@ Alur pengembangan biasanya seperti ini:
7570
6. Pergi ke 3, perbaharui implementasinya hingga tes tak memberikan galat.
7671
7. Ulangi langkah 3-6 hingga fungsionalitasnya siap.
7772

78-
Jadi, pengembangannya *iteratif*. Kita tulis spek, implementasikan, memastikan tes lulus, lalu menulis tes lainnya, memastikan mereka bekerja dll. Akhirnya kita punya implementasi yang bekerja dan tes untuk itu.
73+
Jadi, pengembangannya _iteratif_. Kita tulis spek, implementasikan, memastikan tes lulus, lalu menulis tes lainnya, memastikan mereka bekerja dll. Akhirnya kita punya implementasi yang bekerja dan tes untuk itu.
7974

8075
Ayo lihat alur pengembangan ini di kasus praktik kita.
8176

@@ -86,19 +81,20 @@ Langkap pertama sudah lengkap: kita punya spek inisial untuk `pow`. Sekarang, se
8681
Di sini di tutorial ini kita akan memakai librari JavaScript untuk tes:
8782

8883
- [Mocha](http://mochajs.org/) -- inti framework: menyediakan fungsi testing umum `describe` dan `it` dan fungsi utama yang menjalankan test.
89-
- [Chai](http://chaijs.com) -- library dengan banyak penambahan. Ini membuatmu bisa untuk menggunakan banyak penambahan yang berbeda, untuk sekarang kita hanya membutuhkan `assert.equal`.
90-
- [Sinon](http://sinonjs.org/) -- sebuah library untuk memata-matai fungsi, meniru fungsi bawaan dan lainnya, kita akan butuh ini nanti.
84+
- [Chai](http://chaijs.com) -- librari dengan banyak penambahan. Ini membuatmu bisa untuk menggunakan banyak penambahan yang berbeda, untuk sekarang kita hanya membutuhkan `assert.equal`.
85+
- [Sinon](http://sinonjs.org/) -- sebuah librari untuk memata-matai fungsi, meniru fungsi bawaan dan lainnya, kita akan butuh ini nanti.
9186

9287
Librari ini cocok baik untuk pengetesan in-browser dan server-side. Di sini kita akan mempertimbangkan varian peramban.
9388

9489
Laman HTML lengkap dengan framework ini dan spek `pow`:
9590

9691
```html src="index.html"
92+
9793
```
9894

9995
Laman ini bisa dibagi jadi lima bagian:
10096

101-
1. `<head>` -- menambah libraru dan gaya pihak-ketiga untuk tes.
97+
1. `<head>` -- menambah librari dan gaya pihak-ketiga untuk tes.
10298
2. `<script>` dengan fungsi untuk dites, di kasus kita -- degngan kode untuk `pow`.
10399
3. Tes -- di kasus kita script external `test.js` yang punya `describe("pow", ...)` dari atas.
104100
4. Elemen HTML `<div id="mocha">` akan dipakai untuk mengoutputkan hasil.
@@ -138,33 +134,32 @@ Kita bisa pilih salah satu cara mengorganisasikan tes di sini:
138134

139135
1. Varian pertama -- tambah satu lagi `assert` ke dalam `it` yang sama:
140136

141-
```js
142-
describe("pow", function() {
137+
```js
138+
describe("pow", function() {
143139

144-
it("raises to n-th power", function() {
145-
assert.equal(pow(2, 3), 8);
146-
*!*
147-
assert.equal(pow(3, 4), 81);
148-
*/!*
149-
});
140+
it("raises to n-th power", function() {
141+
assert.equal(pow(2, 3), 8);
142+
*!*
143+
assert.equal(pow(3, 4), 81);
144+
*/!*
145+
});
146+
147+
});
148+
```
150149

151-
});
152-
```
153150
2. Kedua -- buat dua tes:
154151

155-
```js
156-
describe("pow", function() {
152+
```js
153+
describe("pow", function () {
154+
it("2 raised to power 3 is 8", function () {
155+
assert.equal(pow(2, 3), 8);
156+
});
157157

158-
it("2 raised to power 3 is 8", function() {
159-
assert.equal(pow(2, 3), 8);
160-
});
161-
162-
it("3 raised to power 4 is 81", function() {
163-
assert.equal(pow(3, 4), 81);
164-
});
165-
166-
});
167-
```
158+
it("3 raised to power 4 is 81", function () {
159+
assert.equal(pow(3, 4), 81);
160+
});
161+
});
162+
```
168163

169164
Perbedaan prinsipal ialah saat `assert` memicu galat, blok `it` segera berhenti. Jadi, di varian pertama jika `assert` pertama gagal, maka kita takkan pernah melihat hasil `assert` kedua.
170165

@@ -203,19 +198,17 @@ function pow(x, n) {
203198
Untuk yakin bahwa fungsi bekerja dengan baik, ayo kita tes dia dengan lebih banyak nilai. Daripada menulis blok `it` secara manual, kita bisa menggenerate mereka di `for`:
204199

205200
```js
206-
describe("pow", function() {
207-
201+
describe("pow", function () {
208202
function makeTest(x) {
209203
let expected = x * x * x;
210-
it(`${x} in the power 3 is ${expected}`, function() {
204+
it(`${x} in the power 3 is ${expected}`, function () {
211205
assert.equal(pow(x, 3), expected);
212206
});
213207
}
214208

215209
for (let x = 1; x <= 5; x++) {
216210
makeTest(x);
217211
}
218-
219212
});
220213
```
221214

@@ -261,23 +254,20 @@ describe("pow", function() {
261254

262255
Di masa depan kita bisa menambah lebih banyak `it` dan `describe` di level tertinggi dengan fungsi pembantu mereka sendiri, mereka takkan melihat `makeTest`.
263256

264-
````smart header="`before/after` dan `beforeEach/afterEach`"
265-
Kita bisa mengeset fungsi `before/after` yang berjalan sebelum/setelah menjalankan tes, dan juga fungsi `beforeEach/afterEach` yang berjalan sebelum/setelah *setiap* `it`.
257+
````smart header="`before/after`dan`beforeEach/afterEach`" Kita bisa mengeset fungsi `before/after`yang berjalan sebelum/setelah menjalankan tes, dan juga fungsi`beforeEach/afterEach`yang berjalan sebelum/setelah *setiap*`it`.
266258

267259
Misalnya:
268260

269261
```js no-beautify
270-
describe("test", function() {
271-
262+
describe("test", function () {
272263
before(() => alert("Testing started – before all tests"));
273264
after(() => alert("Testing finished – after all tests"));
274265

275266
beforeEach(() => alert("Before a test – enter a test"));
276267
afterEach(() => alert("After a test – exit a test"));
277268

278-
it('test 1', () => alert(1));
279-
it('test 2', () => alert(2));
280-
269+
it("test 1", () => alert(1));
270+
it("test 2", () => alert(2));
281271
});
282272
```
283273

@@ -297,6 +287,7 @@ Tes selesai – setelah semua tes (after)
297287
[edit src="beforeafter" title="Buka contoh di sandbox."]
298288

299289
Biasanya, `beforeEach/afterEach` dan `before/after` dipakai untuk melakukan inisialisasi, mengnolkan counter atau melakukan sesuatu di antara tes (atau grup tes).
290+
300291
````
301292
302293
## Mengextend spek
@@ -322,7 +313,7 @@ describe("pow", function() {
322313
323314
it("untuk n non-integer hasilnya NaN", function() {
324315
*!*
325-
assert.isNaN(pow(2, 1.5));
316+
assert.isNaN(pow(2, 1.5));
326317
*/!*
327318
});
328319
@@ -407,3 +398,4 @@ Di kehidupan riil kadang tak mudah. Kadang sulit menulis spek sebelum kode aktua
407398
Nanti di tutorial ini kamu akan menemui banyak tugas dengan tes yang matang. Jadi kamu akan melihat banyak contoh praktik.
408399
409400
Menulis tes membutuhkan pengetahuan JavaScript yang baik. Tapi kita baru saja mulai belajar. Jadi, supaya settle semuanya, dari sekarang kamu belum wajib menulis tes, tapi kamu harus sudah bisa membaca mereka meski mereka agak rumit dari yang ada di bab ini.
401+
````
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
11
<!DOCTYPE html>
22
<html>
3-
<head>
4-
<!-- add mocha css, to show results -->
5-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mocha/3.2.0/mocha.css">
6-
<!-- add mocha framework code -->
7-
<script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/3.2.0/mocha.js"></script>
8-
<script>
9-
// enable bdd-style testing
10-
mocha.setup('bdd');
11-
</script>
12-
<!-- add chai -->
13-
<script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.5.0/chai.js"></script>
14-
<script>
15-
// chai has a lot of stuff, let's make assert global
16-
let assert = chai.assert;
17-
</script>
18-
</head>
3+
<head>
4+
<!-- Tambahkan mocha css untuk menampilkan hasil. -->
5+
<link
6+
rel="stylesheet"
7+
href="https://cdnjs.cloudflare.com/ajax/libs/mocha/3.2.0/mocha.css"
8+
/>
9+
<!-- Tambahkan kode kerangka kerja/framework mocha -->
10+
<script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/3.2.0/mocha.js"></script>
11+
<script>
12+
// Mengaktifkan pengujian dengan bdd-style
13+
mocha.setup("bdd");
14+
</script>
15+
<!-- Tambahkan chai script -->
16+
<script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.5.0/chai.js"></script>
17+
<script>
18+
// Chai memiliki banyak fitur, mari kita membuat assert menjadi global.
19+
let assert = chai.assert;
20+
</script>
21+
</head>
1922

20-
<body>
21-
22-
<!-- the script with tests (describe, it...) -->
23-
<script src="test.js"></script>
24-
25-
<!-- the element with id="mocha" will contain test results -->
26-
<div id="mocha"></div>
27-
28-
<!-- run tests! -->
29-
<script>
30-
mocha.run();
31-
</script>
32-
</body>
23+
<body>
24+
<!-- Skrip dengan pengujian (describe, it...). -->
25+
<script src="test.js"></script>
26+
<!-- Elemen dengan id="mocha" akan berisi hasil uji coba/test. -->
27+
<div id="mocha"></div>
3328

29+
<!-- Jalankan pengujian/tests -->
30+
<script>
31+
mocha.run();
32+
</script>
33+
</body>
3434
</html>

0 commit comments

Comments
 (0)