test: 테스트 파일 추가 및 리팩토링 반영
- combat_calculator_test, skill_service_test, stat_calculator_test 추가 - mock_factories.dart 헬퍼 추가 - progress_loop_test, game_session_controller_test 서비스 분리 반영
This commit is contained in:
@@ -1,17 +1,12 @@
|
||||
import 'package:asciineverdie/l10n/app_localizations.dart';
|
||||
import 'package:asciineverdie/src/core/engine/game_mutations.dart';
|
||||
import 'package:asciineverdie/src/core/engine/progress_service.dart';
|
||||
import 'package:asciineverdie/src/core/engine/reward_service.dart';
|
||||
import 'package:asciineverdie/src/core/model/game_state.dart';
|
||||
import 'package:asciineverdie/src/core/model/pq_config.dart';
|
||||
import 'package:asciineverdie/src/core/storage/save_manager.dart';
|
||||
import 'package:asciineverdie/src/core/storage/save_repository.dart';
|
||||
import 'package:asciineverdie/src/core/storage/save_service.dart';
|
||||
import 'package:asciineverdie/src/features/game/game_play_screen.dart';
|
||||
import 'package:asciineverdie/src/features/game/game_session_controller.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
import '../helpers/mock_factories.dart';
|
||||
|
||||
/// 테스트용 MaterialApp 래퍼 (localization 포함)
|
||||
Widget _buildTestApp(Widget child) {
|
||||
return MaterialApp(
|
||||
@@ -21,33 +16,6 @@ Widget _buildTestApp(Widget child) {
|
||||
);
|
||||
}
|
||||
|
||||
class _FakeSaveManager implements SaveManager {
|
||||
@override
|
||||
Future<SaveOutcome> saveState(
|
||||
GameState state, {
|
||||
String? fileName,
|
||||
bool cheatsEnabled = false,
|
||||
}) async {
|
||||
return const SaveOutcome.success();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<(SaveOutcome, GameState?, bool)> loadState({String? fileName}) async {
|
||||
return (const SaveOutcome.success(), null, false);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<SaveFileInfo>> listSaves() async => [];
|
||||
|
||||
@override
|
||||
Future<SaveOutcome> deleteSave({String? fileName}) async {
|
||||
return const SaveOutcome.success();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> saveExists({String? fileName}) async => false;
|
||||
}
|
||||
|
||||
GameState _createTestState() {
|
||||
return GameState.withSeed(
|
||||
seed: 42,
|
||||
@@ -83,15 +51,9 @@ GameState _createTestState() {
|
||||
}
|
||||
|
||||
GameSessionController _createController() {
|
||||
const config = PqConfig();
|
||||
final mutations = GameMutations(config);
|
||||
return GameSessionController(
|
||||
progressService: ProgressService(
|
||||
config: config,
|
||||
mutations: mutations,
|
||||
rewards: RewardService(mutations, config),
|
||||
),
|
||||
saveManager: _FakeSaveManager(),
|
||||
progressService: MockFactories.createProgressService(),
|
||||
saveManager: FakeSaveManager(),
|
||||
tickInterval: const Duration(seconds: 10), // 느린 틱
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,58 +1,12 @@
|
||||
import 'package:asciineverdie/src/core/engine/game_mutations.dart';
|
||||
import 'package:asciineverdie/src/core/engine/progress_service.dart';
|
||||
import 'package:asciineverdie/src/core/engine/reward_service.dart';
|
||||
import 'package:asciineverdie/src/core/model/game_state.dart';
|
||||
import 'package:asciineverdie/src/core/model/pq_config.dart';
|
||||
import 'package:asciineverdie/src/core/storage/save_manager.dart';
|
||||
import 'package:asciineverdie/src/core/storage/save_repository.dart';
|
||||
import 'package:asciineverdie/src/core/storage/save_service.dart';
|
||||
import 'package:asciineverdie/src/features/game/game_session_controller.dart';
|
||||
import 'package:fake_async/fake_async.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
class FakeSaveManager implements SaveManager {
|
||||
final List<GameState> savedStates = [];
|
||||
(SaveOutcome, GameState?, bool) Function(String?)? onLoad;
|
||||
SaveOutcome saveOutcome = const SaveOutcome.success();
|
||||
|
||||
@override
|
||||
Future<SaveOutcome> saveState(
|
||||
GameState state, {
|
||||
String? fileName,
|
||||
bool cheatsEnabled = false,
|
||||
}) async {
|
||||
savedStates.add(state);
|
||||
return saveOutcome;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<(SaveOutcome, GameState?, bool)> loadState({String? fileName}) async {
|
||||
if (onLoad != null) {
|
||||
return onLoad!(fileName);
|
||||
}
|
||||
return (const SaveOutcome.success(), null, false);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<List<SaveFileInfo>> listSaves() async => [];
|
||||
|
||||
@override
|
||||
Future<SaveOutcome> deleteSave({String? fileName}) async {
|
||||
return const SaveOutcome.success();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> saveExists({String? fileName}) async => false;
|
||||
}
|
||||
import '../helpers/mock_factories.dart';
|
||||
|
||||
void main() {
|
||||
const config = PqConfig();
|
||||
final mutations = GameMutations(config);
|
||||
final progressService = ProgressService(
|
||||
config: config,
|
||||
mutations: mutations,
|
||||
rewards: RewardService(mutations, config),
|
||||
);
|
||||
final progressService = MockFactories.createProgressService();
|
||||
|
||||
GameSessionController buildController(
|
||||
FakeAsync async,
|
||||
|
||||
Reference in New Issue
Block a user