Remove implicit first-visit heart grant from progress summary
This commit is contained in:
parent
3ab009e338
commit
6cb282147e
@ -306,7 +306,6 @@ describe('challenge-service', () => {
|
||||
[freeUserRow], // deductDailyAttempt → getResourceUser
|
||||
[knowledgeCardRow], // getKnowledgeCard
|
||||
[{ groupId: 'week-2026-05-11-group-1' }], // addXp(first card): reuse weekly group
|
||||
[userAfterAttempt], // grantDailyFirstVisitHeart → getResourceUser
|
||||
[userAfterAttempt], // getResourceUser (getProgressSummary)
|
||||
[{ tier: 'free', heartsRemaining: 5, heartsLastRestore: null }], // getHearts
|
||||
[{ checkInDays: 2, lastCheckInDate: new Date().toISOString() }], // calculateStreak
|
||||
@ -342,7 +341,6 @@ describe('challenge-service', () => {
|
||||
[{ createdAt: new Date(Date.now() - 10 * 86_400_000).toISOString() }], // isNewUserProtected
|
||||
[freeUserRow], // deductDailyAttempt → getResourceUser
|
||||
[knowledgeCardRow], // getKnowledgeCard
|
||||
[userAfter], // grantDailyFirstVisitHeart → getResourceUser
|
||||
[userAfter], // getResourceUser (getProgressSummary)
|
||||
[{ tier: 'free', heartsRemaining: 2, heartsLastRestore: null }], // getHearts
|
||||
[{ checkInDays: 0, lastCheckInDate: null }], // calculateStreak
|
||||
@ -357,6 +355,7 @@ describe('challenge-service', () => {
|
||||
|
||||
expect(result.answerState).toBe('wrong');
|
||||
expect(result.xpDelta).toBe(0);
|
||||
expect(result.progress.hearts).toBe(2);
|
||||
expect(db.update).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
@ -386,7 +385,6 @@ describe('challenge-service', () => {
|
||||
[{ tier: 'pro', heartsRemaining: 99 }], // deductHeart: pro user
|
||||
[proUserRow], // deductDailyAttempt → getResourceUser
|
||||
[knowledgeCardRow], // getKnowledgeCard
|
||||
[proUserAfter], // grantDailyFirstVisitHeart → getResourceUser
|
||||
[proUserAfter], // getResourceUser (getProgressSummary)
|
||||
[{ tier: 'pro', heartsRemaining: 99, heartsLastRestore: null }], // getHearts
|
||||
[{ checkInDays: 0, lastCheckInDate: null }], // calculateStreak
|
||||
@ -415,7 +413,6 @@ describe('challenge-service', () => {
|
||||
[], // addXp(correct): no existing leaderboard group
|
||||
[freeUserRow], // deductDailyAttempt → getResourceUser
|
||||
// settleCompletedChallenge → getProgressSummary (before)
|
||||
[userAfterAttempt], // grantDailyFirstVisitHeart → getResourceUser
|
||||
[userAfterAttempt], // getResourceUser
|
||||
[{ tier: 'free', heartsRemaining: 5, heartsLastRestore: null }], // getHearts
|
||||
[{ checkInDays: 2, lastCheckInDate: new Date().toISOString() }], // calculateStreak
|
||||
|
||||
@ -223,8 +223,6 @@ export async function protectStreak(userId: string, _source: RewardSource): Prom
|
||||
}
|
||||
|
||||
export async function getProgressSummary(userId: string): Promise<ProgressSummaryDto> {
|
||||
await grantDailyFirstVisitHeart(userId);
|
||||
|
||||
const [user, hearts, streak, subscription, attempts] = await Promise.all([
|
||||
getResourceUser(userId),
|
||||
getHearts(userId),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user