import 'package:block_seasons/game/models/season.dart'; import 'package:flutter_test/flutter_test.dart'; const packJson = { 'schemaVersion': 1, 'seasonId': 'season_001', 'version': 2, 'title': {'en': 'First Bloom', 'ko': '첫 개화'}, 'theme': {'tileSet': 'spring', 'background': 'background.webp'}, 'stages': [ { 'id': 's001_001', 'seed': 101, 'moveLimit': 18, 'preset': [ {'x': 3, 'y': 3, 't': 'gem'}, ], 'objectives': [ {'type': 'clearGems', 'count': 1}, ], 'stars': { 'two': {'movesLeft': 4}, 'three': {'movesLeft': 8}, }, 'generatorProfile': 'easy', }, ], }; void main() { group('SeasonPack', () { test('parses the pack schema', () { final pack = SeasonPack.fromJson(packJson); expect(pack.schemaVersion, 1); expect(pack.seasonId, 'season_001'); expect(pack.version, 2); expect(pack.theme.tileSet, 'spring'); expect(pack.stages, hasLength(1)); expect(pack.stages.first.id, 's001_001'); }); test('round-trips to JSON', () { final pack = SeasonPack.fromJson(packJson); expect(pack.toJson(), packJson); }); test('localized title falls back to English', () { final pack = SeasonPack.fromJson(packJson); expect(pack.titleFor('ko'), '첫 개화'); expect(pack.titleFor('en'), 'First Bloom'); expect(pack.titleFor('ja'), 'First Bloom'); }); test('rejects unsupported schema versions', () { expect( () => SeasonPack.fromJson({...packJson, 'schemaVersion': 99}), throwsFormatException, ); }); }); }