80 lines
3.0 KiB
TypeScript
80 lines
3.0 KiB
TypeScript
import {
|
||
buildClassReviewSubscribeData,
|
||
buildBookingCancelledSubscribeData,
|
||
buildClassReminderSubscribeData,
|
||
} from '../subscription-message.service'
|
||
|
||
describe('Class review subscribe payload', () => {
|
||
it('fills thing1 course, thing2 coach, time3 class time and thing4 tip', () => {
|
||
expect(buildClassReviewSubscribeData({
|
||
studioName: 'Focus Core 普拉提工作室',
|
||
date: new Date('2026-09-09T00:00:00.000Z'),
|
||
startTime: '10:00:00',
|
||
})).toEqual({
|
||
thing1: { value: 'Focus Core 普拉提工作室' },
|
||
thing2: { value: 'Iris' },
|
||
time3: { value: '2026年09月09日 10:00' },
|
||
thing4: { value: '欢迎留下这节课的感受' },
|
||
})
|
||
})
|
||
|
||
it('falls back to a short course name and trims thing fields to 20 characters', () => {
|
||
const data = buildClassReviewSubscribeData({
|
||
studioName: '超长工作室名称用来测试微信订阅消息字段截断是否生效',
|
||
date: new Date('2026-01-02T00:00:00.000Z'),
|
||
startTime: '09:30',
|
||
})
|
||
expect(data.thing1.value).toHaveLength(20)
|
||
expect(data.thing1.value).toBe('超长工作室名称用来测试微信订阅消息字段截断是否生效'.slice(0, 20))
|
||
expect(data.time3.value).toBe('2026年01月02日 09:30')
|
||
})
|
||
})
|
||
|
||
describe('Booking cancelled subscribe payload', () => {
|
||
it('formats date11, date1 and thing2 correctly', () => {
|
||
const data = buildBookingCancelledSubscribeData({
|
||
bookingDate: '2026-09-10',
|
||
courseTime: '10:00-11:00',
|
||
courseName: '普拉提一对一私教体验课',
|
||
})
|
||
expect(data).toEqual({
|
||
date11: { value: '2026-09-10' },
|
||
date1: { value: '10:00-11:00' },
|
||
thing2: { value: '普拉提一对一私教体验课' },
|
||
})
|
||
})
|
||
|
||
it('trims courseName to 20 characters', () => {
|
||
const data = buildBookingCancelledSubscribeData({
|
||
bookingDate: '2026-09-10',
|
||
courseTime: '10:00-11:00',
|
||
courseName: '这是一个超过二十个汉字的普拉提非常长非常长非常长的课程名称',
|
||
})
|
||
expect(data.thing2.value).toHaveLength(20)
|
||
})
|
||
})
|
||
|
||
describe('Class reminder subscribe payload', () => {
|
||
it('formats thing1, time2 and thing5 correctly', () => {
|
||
const data = buildClassReminderSubscribeData({
|
||
courseName: '普拉提核心床小班课',
|
||
classTime: '2026-09-10 15:00',
|
||
tips: '课程将于1小时后开始,请准时出席',
|
||
})
|
||
expect(data).toEqual({
|
||
thing1: { value: '普拉提核心床小班课' },
|
||
time2: { value: '2026-09-10 15:00' },
|
||
thing5: { value: '课程将于1小时后开始,请准时出席' },
|
||
})
|
||
})
|
||
|
||
it('falls back to default tips and trims fields to 20 characters', () => {
|
||
const data = buildClassReminderSubscribeData({
|
||
courseName: '超过二十个字的超长课程名称请务必进行截断处理测试',
|
||
classTime: '14:00',
|
||
})
|
||
expect(data.thing1.value).toHaveLength(20)
|
||
expect(data.thing5.value).toBe('课程即将于1小时后开始,请准时出席'.slice(0, 20))
|
||
})
|
||
})
|