팬덤 탈퇴 · 성운 창립자 권한 승계 · 대표 팬덤 자동 지정

This commit is contained in:
Sn-Kinos
2026-10-05 17:41:20 +09:00
parent 8a1b824307
commit 3a3be4c3d3
21 changed files with 229 additions and 54 deletions
+28 -2
View File
@@ -95,17 +95,21 @@ class _NoTopPercentRepository extends SamplePlanetRepository {
class _Joinable extends SamplePlanetRepository {
_Joinable();
int joins = 0;
int leaves = 0;
@override
Future<void> join() async => joins++;
@override
Future<void> leave() async => leaves++;
@override
Future<PlanetDetail> load({required bool nebula}) async {
final d = await super.load(nebula: nebula);
return PlanetDetail(
fandomId: d.fandomId, name: d.name, stage: d.stage, isNebula: d.isNebula,
totalFpi: d.totalFpi, scores: d.scores, members: d.members, posts: d.posts,
joined: joins > 0,
joined: joins > leaves,
);
}
}
@@ -120,11 +124,33 @@ void main() {
await tester.pumpAndSettle();
expect(repo.joins, 1);
expect(find.text('가입중'), findsOneWidget);
// 가입중 알약은 다시 눌러도 호출하지 않는다.
// 가입중 알약은 다시 눌러도 가입을 부르지 않는다(탈퇴 시트가 열린다).
await tester.tap(find.text('가입중'));
await tester.pumpAndSettle();
expect(repo.joins, 1);
});
testWidgets('「가입중」 → 탈퇴하기 → 확인 창(343:213582)에서 확인해야 fn-fandom-leave 를 부른다', (tester) async {
final repo = _Joinable()..joins = 1;
await _pumpTall(tester, PlanetDetailScreen(repository: repo, eclipse: const NoEclipseRepository()));
Future<void> openConfirm() async {
await tester.tap(find.text('가입중'));
await tester.pumpAndSettle();
await tester.tap(find.text('탈퇴하기'));
await tester.pumpAndSettle();
expect(find.text('행성 탈퇴를 할까요?'), findsOneWidget);
}
await openConfirm();
await tester.tap(find.text('취소'));
await tester.pumpAndSettle();
expect(repo.leaves, 0);
await openConfirm();
await tester.tap(find.text('확인'));
await tester.pumpAndSettle();
expect(repo.leaves, 1);
expect(find.text('가입하기'), findsOneWidget);
});
group('행성 상세 · FPI (F3 · 343:213428)', () {
testWidgets('TOTAL FPI 값과 갱신 주기를 띄운다', (tester) async {
await _pumpTall(tester, const PlanetDetailScreen(