이벤트 가져오기 위젯 테스트 추가 및 테스트 훅 도입
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:lanebow/utils/test_utils.dart';
|
||||
import 'package:lanebow/utils/url_utils.dart';
|
||||
|
||||
void main() {
|
||||
setUp(() {
|
||||
// 테스트 모드 강제
|
||||
TestUtils.setTestMode(true);
|
||||
});
|
||||
|
||||
group('UrlUtils', () {
|
||||
test('generatePublicHash - 테스트 모드에서 예측 가능한 해시 반환', () {
|
||||
final h1 = UrlUtils.generatePublicHash();
|
||||
final h2 = UrlUtils.generatePublicHash();
|
||||
expect(h1, isNotEmpty);
|
||||
expect(h2, isNotEmpty);
|
||||
expect(h1, isNot(h2)); // 카운터 증가로 서로 달라야 함
|
||||
expect(h1.startsWith('test'), true);
|
||||
expect(h2.startsWith('test'), true);
|
||||
});
|
||||
|
||||
test('getEventPublicUrl - 기본 도메인과 해시 결합', () {
|
||||
const hash = 'test42';
|
||||
final url = UrlUtils.getEventPublicUrl(hash);
|
||||
expect(url, '${UrlUtils.eventBaseUrl}$hash');
|
||||
});
|
||||
|
||||
testWidgets('copyUrlToClipboard - 테스트 모드에서 오류 없이 동작하고 SnackBar 미표시', (tester) async {
|
||||
// 테스트 환경에서는 SnackBar를 실제로 띄우지 않고 로그만 출력하도록 구현되어 있음
|
||||
final app = MaterialApp(
|
||||
home: Scaffold(
|
||||
appBar: AppBar(),
|
||||
body: Builder(
|
||||
builder: (context) {
|
||||
return Center(
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
UrlUtils.copyUrlToClipboard(context, 'https://example.com');
|
||||
},
|
||||
child: const Text('copy'),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await tester.pumpWidget(app);
|
||||
await tester.tap(find.text('copy'));
|
||||
await tester.pump();
|
||||
|
||||
// SnackBar가 표시되지 않아야 함 (테스트 모드)
|
||||
expect(find.byType(SnackBar), findsNothing);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user