veza/apps/web/src/services/socialService.test.ts

112 lines
3.3 KiB
TypeScript

import { describe, it, expect, vi, beforeEach } from 'vitest';
import { socialService } from './socialService';
describe('socialService', () => {
beforeEach(() => {
vi.clearAllMocks();
});
describe('getFeed', () => {
it('should return social feed', async () => {
const result = await socialService.getFeed();
expect(result).toBeDefined();
expect(result).toHaveProperty('posts');
expect(Array.isArray(result.posts)).toBe(true);
if (result.posts.length > 0) {
expect(result.posts[0]).toHaveProperty('id');
expect(result.posts[0]).toHaveProperty('author');
expect(result.posts[0]).toHaveProperty('content');
}
});
it('should handle pagination', async () => {
const result = await socialService.getFeed({ page: 2, limit: 10 });
expect(result).toBeDefined();
expect(result).toHaveProperty('posts');
});
});
describe('createPost', () => {
it('should create a new post', async () => {
const result = await socialService.createPost({
content: 'Test post',
});
expect(result).toBeDefined();
expect(result).toHaveProperty('post');
expect(result.post).toHaveProperty('id');
expect(result.post.content).toBe('Test post');
});
});
describe('getComments', () => {
it('should return comments for a track', async () => {
const result = await socialService.getComments('track-1');
expect(result).toBeDefined();
expect(result).toHaveProperty('comments');
expect(Array.isArray(result.comments)).toBe(true);
});
});
describe('postComment', () => {
it('should post a comment', async () => {
const result = await socialService.postComment('track-1', 'Great track!');
expect(result).toBeDefined();
expect(result).toHaveProperty('id');
expect(result).toHaveProperty('content');
expect(result.content).toBe('Great track!');
});
});
describe('deleteComment', () => {
it('should delete a comment', async () => {
const result = await socialService.deleteComment('comment-1');
expect(result).toBeDefined();
});
});
describe('getNotifications', () => {
it('should return notifications', async () => {
const result = await socialService.getNotifications();
expect(result).toBeDefined();
expect(result).toHaveProperty('notifications');
expect(Array.isArray(result.notifications)).toBe(true);
if (result.notifications.length > 0) {
expect(result.notifications[0]).toHaveProperty('id');
expect(result.notifications[0]).toHaveProperty('type');
expect(result.notifications[0]).toHaveProperty('text');
}
});
});
describe('markRead', () => {
it('should mark notification as read', async () => {
const result = await socialService.markRead();
expect(result).toBeDefined();
});
});
describe('markAllRead', () => {
it('should mark all notifications as read', async () => {
const result = await socialService.markAllRead();
expect(result).toBeDefined();
});
});
describe('getChatToken', () => {
it('should return chat token', async () => {
const result = await socialService.getChatToken();
expect(result).toBeDefined();
expect(result).toHaveProperty('token');
});
});
});