Latihan 1 dari materi Dependency Injection di Design Patterns — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Starter sudah membuat repo dan service, mendaftarkan Budi dan Ani, lalu mencetak empat baris; bagian itu tetap. Lengkapi dua bagian:
createFakeRepo(): simpan const users = [] dan let nextId = 1 di dalamnya, lalu kembalikan object dengan:
users: array itu sendiri, supaya bisa dibaca dari luar (repo.users.length);
find(id): user dengan id itu, atau null kalau gak ada;
save(user): buat { id: nextId++, name: user.name }, push ke users, lalu kembalikan.
class UserService:
constructor(userRepository): simpan ke this.userRepository. Jangan membuat repo sendiri di sini;
getUserName(id): panggil this.userRepository.find(id), kembalikan name-nya, atau 'Unknown' kalau hasilnya null;
register(name): kembalikan this.userRepository.save({ name: name }).
Console harus mencetak empat baris ini, berurutan:
Budi
Ani
Unknown
2
Yang juga dinilai: dengan repo baru, register('Sari') lalu getUserName dengan id hasilnya memberi Sari, repo.users bertambah 1, dan getUserName(9999) memberi Unknown, jadi Sari|1|Unknown.
Hint
UserService gak tahu repo-nya asli atau palsu: dia cuma menyimpan repo yang dititipkan lewat constructor, lalu memanggil find dan save milik repo itu. Repo palsunya cukup array di memori dengan nomor id yang naik mulai dari 1.