Skip to content
Snippets Groups Projects
Select Git revision
  • d039e4be658f2ca850541aa2312eaf10905d57a0
  • master default protected
  • deploy
  • develop
4 results

friendService.test.js

Blame
  • friendService.test.js 7.43 KiB
    // test/friendService.test.js
    
    const sequelize = require('../config/sequelize'); // Sequelize 인스턴스 임포트
    const User = require('../models/User');
    const Friend = require('../models/Friend');
    const friendService = require('../services/friendService'); // FriendService 임포트
    
    // Sequelize의 Op를 가져오기 위해 추가
    const { Op } = require('sequelize');
    
    beforeAll(async () => {
      // 테스트 전에 데이터베이스를 동기화하고 테이블을 생성합니다.
      await sequelize.sync({ force: true });
    });
    
    beforeEach(async () => {
      // 각 테스트 전에 데이터베이스를 초기화하여 독립성을 보장합니다.
      await sequelize.sync({ force: true });
    
      // 더미 사용자 생성
      await User.bulkCreate([
        { id: 1, name: 'Alice', email: 'alice@example.com' },
        { id: 2, name: 'Bob', email: 'bob@example.com' },
        { id: 3, name: 'Charlie', email: 'charlie@example.com' },
      ]);
    });
    
    afterAll(async () => {
      // 모든 테스트가 끝난 후 데이터베이스 연결을 종료합니다.
      await sequelize.close();
    });
    
    describe('Friend Service', () => {
      describe('validUser', () => {
        test('should return user when user exists', async () => {
          const user = await friendService.validUser(1);
          expect(user).toBeDefined();
          expect(user.name).toBe('Alice');
        });
    
        test('should throw error when user does not exist', async () => {
          await expect(friendService.validUser(999)).rejects.toThrow('User not found');
        });
      });
    
      describe('sendFriendRequest', () => {
        test('should send a friend request successfully', async () => {
          const friendRequest = await friendService.sendFriendRequest(1, 3); // Alice sends request to Charlie
          expect(friendRequest).toBeDefined();
          expect(friendRequest.requester_id).toBe(1);
          expect(friendRequest.receiver_id).toBe(3);
          expect(friendRequest.status).toBe('PENDING');
        });
    
        test('should throw error when sending friend request to self', async () => {
          await expect(friendService.sendFriendRequest(1, 1)).rejects.toThrow('Cannot send friend request to yourself');
        });
    
        test('should throw error when sending duplicate friend request', async () => {
          
          await friendService.sendFriendRequest(1, 2);
    
        
          await friendService.acceptFriendRequest(2, 1);
    
          await expect(friendService.sendFriendRequest(1, 2)).rejects.toThrow('Friend request already exists');
        });
    
        test('should throw error when user does not exist', async () => {
          await expect(friendService.sendFriendRequest(1, 999)).rejects.toThrow('User not found');