import 'package:flutter_test/flutter_test.dart'; import 'package:yumi/shared/business_logic/models/res/sc_room_rocket_status_res.dart'; import 'package:yumi/ui_kit/widgets/room/rocket/room_rocket_dialog.dart'; import 'package:yumi/ui_kit/widgets/room/rocket/room_rocket_floating_entry.dart'; void main() { test('rocket dialog title displays current level before daily round', () { expect(debugRoomRocketTitleText(level: 3, round: 1), 'Lv.3 Today'); expect( debugRoomRocketTitleText(level: 2, round: 4), 'Lv.2 ยท Round 4 Today', ); }); test( 'rocket level rail follows current level unless user selected manually', () { final status = SCRoomRocketStatusRes.fromJson({'currentLevel': 4}); const levels = [ RoomRocketLevelItem(label: 'Lv.2', level: 2), RoomRocketLevelItem(label: 'Lv.4', level: 4), RoomRocketLevelItem(label: 'Lv.5', level: 5), ]; expect( debugResolveRoomRocketSelectedLevelIndex( levelItems: levels, status: status, selectedLevel: 0, levelTouched: false, ), 1, ); expect( debugResolveRoomRocketSelectedLevelIndex( levelItems: levels, status: status, selectedLevel: 2, levelTouched: true, ), 2, ); }, ); test('rocket progress text caps rounded non-full progress at 99 percent', () { final notFull = SCRoomRocketStatusRes( currentLevel: 1, currentEnergy: 995, maxEnergy: 1000, displayPercent: 99.5, ); final fullEnergy = SCRoomRocketStatusRes( currentLevel: 1, currentEnergy: 1000, maxEnergy: 1000, displayPercent: 99.5, ); final fullPercent = SCRoomRocketStatusRes( currentLevel: 1, currentEnergy: 995, maxEnergy: 1000, displayPercent: 100, ); final launchStatus = SCRoomRocketStatusRes( currentLevel: 1, currentEnergy: 995, maxEnergy: 1000, displayPercent: 99.5, status: 'LAUNCHING', ); expect( debugRoomRocketDisplayPercentText(status: notFull, selectedLevel: 1), 99, ); expect( debugRoomRocketDisplayPercentText(status: fullEnergy, selectedLevel: 1), 100, ); expect( debugRoomRocketDisplayPercentText(status: fullPercent, selectedLevel: 1), 100, ); expect( debugRoomRocketDisplayPercentText(status: launchStatus, selectedLevel: 1), 100, ); }); }