49 lines
1.8 KiB
Dart
49 lines
1.8 KiB
Dart
import 'package:ykavu_mobile/db/app_database.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
void main() {
|
|
test('tone samples round-trip in memory database', () async {
|
|
final db = AppDatabase.memory();
|
|
addTearDown(db.close);
|
|
|
|
await db.replaceToneSamples(['ㅇㅇ 알겠음', 'ㅋㅋ 그래']);
|
|
expect(await db.loadToneSamples(), ['ㅇㅇ 알겠음', 'ㅋㅋ 그래']);
|
|
|
|
await db.setBoolKv('tone_onboarding_done', true);
|
|
expect(await db.getBoolKv('tone_onboarding_done'), isTrue);
|
|
|
|
await db.replaceToneSamples(['하나만']);
|
|
expect(await db.loadToneSamples(), ['하나만']);
|
|
});
|
|
|
|
// roadmap.md §2.7-F 답장 마감 알림: 스누즈 시각은 서버로 전혀 전송되지 않는
|
|
// 순수 온디바이스 상태라 tone samples와 동일한 방식(in-memory DB round-trip)으로
|
|
// 검증한다.
|
|
test('conversation snooze round-trips in memory database', () async {
|
|
final db = AppDatabase.memory();
|
|
addTearDown(db.close);
|
|
|
|
expect(await db.getSnoozedUntil(42), isNull);
|
|
|
|
final until = DateTime.utc(2026, 8, 3, 20, 0);
|
|
await db.setSnoozedUntil(42, until);
|
|
expect(await db.getSnoozedUntil(42), until);
|
|
|
|
// 다른 대화방(id 43)에는 영향 없음.
|
|
expect(await db.getSnoozedUntil(43), isNull);
|
|
|
|
// 다시 걸면(insertOnConflictUpdate) 덮어써야 한다 — 새 행이 추가되면 안 됨.
|
|
final rescheduled = DateTime.utc(2026, 8, 4, 9, 0);
|
|
await db.setSnoozedUntil(42, rescheduled);
|
|
expect(await db.getSnoozedUntil(42), rescheduled);
|
|
|
|
await db.setSnoozedUntil(43, until);
|
|
final all = await db.loadAllSnoozes();
|
|
expect(all, {42: rescheduled, 43: until});
|
|
|
|
await db.clearSnooze(42);
|
|
expect(await db.getSnoozedUntil(42), isNull);
|
|
expect(await db.loadAllSnoozes(), {43: until});
|
|
});
|
|
}
|