feat: 优化微信订阅消息体系并新增约课取消通知与开课前1小时提醒

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
richarjiang
2026-09-10 16:20:13 +08:00
parent d32f592e54
commit 3e049d2c1d
26 changed files with 1268 additions and 44 deletions

View File

@@ -1,4 +1,8 @@
import { buildClassReviewSubscribeData } from '../subscription-message.service'
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', () => {
@@ -25,3 +29,51 @@ describe('Class review subscribe payload', () => {
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))
})
})