가입 트리거 서울 리전 · 탈퇴 시 업로드 파일 삭제 · 위치 인증 위경도 미저장

This commit is contained in:
Sn-Kinos
2026-10-06 18:29:51 +09:00
parent 14fef64999
commit e9e4260e2c
7 changed files with 41 additions and 12 deletions
@@ -456,8 +456,9 @@ describe('방문 — S-H-PLACE (fn-quest-verify-place)', () => {
const logs = await db().collection(`users/${UID}/activityLogs`).get();
expect(only(logs.docs).get('rejectReason')).toBe('E-QST-02');
const evidence = only(logs.docs).get('evidence') as
{ place: { gps: { mocked: boolean } } };
expect(evidence.place.gps.mocked).toBe(true);
{ place: { location: { mocked: boolean }; gps?: unknown } };
expect(evidence.place.location.mocked).toBe(true);
expect(evidence.place.gps).toBeUndefined();
});
it('좌표만으로도 반경 안이면 지급한다 — QR · 사진은 추가 수단(C-03)', async () => {
@@ -517,8 +518,9 @@ describe('방문 — S-H-PLACE (fn-quest-verify-place)', () => {
const result = await call(fnQuestVerifyPlace, { ...q, qr: 'code-ok' });
expect(result.rewarded).toBe(100);
const ok = (await db().collection(`users/${UID}/activityLogs`).where('verified', '==', true).get()).docs;
const evidence = only(ok).get('evidence') as { place: { gps: unknown; qr: { value: string; ok: boolean } } };
expect(evidence.place.gps).toBeDefined();
const evidence = only(ok).get('evidence') as { place: { location: { distanceM: number }; qr: { value: string; ok: boolean } } };
expect(evidence.place.location.distanceM).toBeGreaterThanOrEqual(0);
expect(JSON.stringify(evidence)).not.toMatch(/"(lat|lng)"/);
expect(evidence.place.qr).toEqual({ value: 'code-ok', ok: true });
// GPS 없이(반경 밖) QR 만으로는 0건.
await db().doc('quests/place-quest-qr2').set({ type: 'location', placeId: PLACE, verifyMethods: ['gps', 'qr'] });