const { expect } = require('chai'); const UserService = require('../src/services/UserService'); describe('UserService', () => { let emailService; let userService; beforeEach(() => { // TODO 1: Hozz létre egy mock EmailService-t (sendWelcomeEmail = async () => {}) // Tipp: emailService = { sendWelcomeEmail: async (email, name) => { /* mock */ } }; // TODO 2: Példányosítsd a UserService-t a mock-kal // Tipp: userService = new UserService(emailService); }); it('should create a user and send welcome email', async () => { // TODO 3: Teszt: createUser létrehoz egy usert és email-t küld // 1. Hívd meg a createUser-t: const user = await userService.createUser('Test User', 'test@example.com'); // 2. Ellenőrizd az user property-ket: expect(user).to.have.property('id'); // 3. Ellenőrizd a name-et: expect(user.name).to.equal('Test User'); // 4. Ellenőrizd, hogy a user a listában van: const users = userService.getAllUsers(); }); it('should throw error for duplicate email', async () => { // TODO 4: Teszt: duplikált email hibát dob // 1. Hozz létre egy usert: await userService.createUser('User 1', 'test@example.com'); // 2. Próbáld létrehozni ugyanazzal az emaillel: expect(...).to.throw() vagy try-catch // Tipp async esetén: try { await userService.createUser(...); } catch(e) { expect(e.message).to.include('already exists'); } }); it('should validate required fields', async () => { // TODO 5: Teszt: hiányzó mezők validációs hibát dobnak // 1. Próbáld meg név nélkül: expect(() => userService.createUser('', 'test@example.com')).to.throw(); // 2. Próbáld meg email nélkül: expect(() => userService.createUser('Test', '')).to.throw(); }); });