Files
gameno-api/components/professors/professorUserMerge.test.js

61 lines
2.2 KiB
JavaScript

'use strict';
const test = require('node:test');
const assert = require('node:assert/strict');
const mongoose = require('mongoose');
const Professor = require('./professorModel');
const { formatProfessorDoc } = require('./professorService');
test('Professor Model & User Merge Tests', async (t) => {
await t.test('Professor schema has user reference and virtual getters', () => {
const userId = new mongoose.Types.ObjectId();
const prof = new Professor({
user: userId,
bio: 'استاد ارشد هوش مصنوعی',
expertise: ['Machine Learning', 'Python'],
isActive: true
});
assert.equal(String(prof.user), String(userId));
assert.equal(prof.bio, 'استاد ارشد هوش مصنوعی');
assert.deepEqual(prof.expertise, ['Machine Learning', 'Python']);
assert.equal(prof.isActive, true);
});
await t.test('formatProfessorDoc correctly extracts and formats linked user fields', () => {
const userId = new mongoose.Types.ObjectId();
const profId = new mongoose.Types.ObjectId();
const mockDoc = {
_id: profId,
user: {
_id: userId,
name: 'علی حسینی',
nationalIdCode: '0012345678',
phoneNumber: '09123456789',
email: 'ali@example.com',
cardNumber: '6037997112345678',
shabaNumber: 'IR120000000000000000000000',
isActive: true
},
bio: 'استاد برنامه‌نویسی',
expertise: ['Web', 'Vue'],
courses: [],
isActive: true
};
const formatted = formatProfessorDoc(mockDoc);
assert.equal(String(formatted._id), String(profId));
assert.equal(String(formatted.user), String(userId));
assert.equal(formatted.name, 'علی');
assert.equal(formatted.surname, 'حسینی');
assert.equal(formatted.fullName, 'علی حسینی');
assert.equal(formatted.nationalIdCode, '0012345678');
assert.equal(formatted.phoneNumber, '09123456789');
assert.equal(formatted.email, 'ali@example.com');
assert.equal(formatted.cardNumber, '6037997112345678');
assert.equal(formatted.shabaNumber, 'IR120000000000000000000000');
assert.deepEqual(formatted.expertise, ['Web', 'Vue']);
assert.equal(formatted.isActive, true);
});
});