| a successful pull does not signal a refusal |
a successful pull does not signal a refusal |
1 |
0 |
0 |
0.034s |
100% |
| advanceMultiSpin beyond results does not crash |
advanceMultiSpin beyond results does not crash |
1 |
0 |
0 |
0.040s |
100% |
| advanceMultiSpin increments index |
advanceMultiSpin increments index |
1 |
0 |
0 |
0.012s |
100% |
| age gate refusal signals that the pull was refused |
age gate refusal signals that the pull was refused |
1 |
0 |
0 |
0.011s |
100% |
| balance flow error does not crash ViewModel |
balance flow error does not crash ViewModel |
1 |
0 |
0 |
0.033s |
100% |
| clearError clears error |
clearError clears error |
1 |
0 |
0 |
0.050s |
100% |
| config flow error does not crash ViewModel |
config flow error does not crash ViewModel |
1 |
0 |
0 |
0.085s |
100% |
| configLoaded is false when pullCosts are empty |
configLoaded is false when pullCosts are empty |
1 |
0 |
0 |
0.041s |
100% |
| configLoaded is true when pullCosts are present |
configLoaded is true when pullCosts are present |
1 |
0 |
0 |
0.032s |
100% |
| dismissAgeRestrictionDialog resets to Hidden |
dismissAgeRestrictionDialog resets to Hidden |
1 |
0 |
0 |
0.043s |
100% |
| dismissResults resets all spin state |
dismissResults resets all spin state |
1 |
0 |
0 |
0.040s |
100% |
| gift catalog error sets error state |
gift catalog error sets error state |
1 |
0 |
0 |
0.023s |
100% |
| hundred pull requires 1000 coins |
hundred pull requires 1000 coins |
1 |
0 |
0 |
0.038s |
100% |
| hundred pull success sets isMultiSpin and multiSpinResults |
hundred pull success sets isMultiSpin and multiSpinResults |
1 |
0 |
0 |
0.042s |
100% |
| insufficient coins refusal signals that the pull was refused |
insufficient coins refusal signals that the pull was refused |
1 |
0 |
0 |
0.010s |
100% |
| multi pull sets isMultiSpin and multiSpinResults |
multi pull sets isMultiSpin and multiSpinResults |
1 |
0 |
0 |
0.036s |
100% |
| pull blocked fail-closed when currentUserId is null |
pull blocked fail-closed when currentUserId is null |
1 |
0 |
0 |
0.023s |
100% |
| pull blocked fail-closed when userRepository returns Error |
pull blocked fail-closed when userRepository returns Error |
1 |
0 |
0 |
0.029s |
100% |
| pull blocked with NeedsVerification dialog when user is unverified 18+ |
pull blocked with NeedsVerification dialog when user is unverified 18+ |
1 |
0 |
0 |
0.028s |
100% |
| pull blocked with SubEighteen dialog when user is sub-18 |
pull blocked with SubEighteen dialog when user is sub-18 |
1 |
0 |
0 |
0.039s |
100% |
| pull error from server sets error state |
pull error from server sets error state |
1 |
0 |
0 |
0.050s |
100% |
| pull fails with insufficient coins |
pull fails with insufficient coins |
1 |
0 |
0 |
0.025s |
100% |
| pull proceeds normally when user is verified — dialog stays Hidden |
pull proceeds normally when user is verified — dialog stays Hidden |
1 |
0 |
0 |
0.013s |
100% |
| pull returns priceChanged true sets error and updates pullCosts |
pull returns priceChanged true sets error and updates pullCosts |
1 |
0 |
0 |
0.011s |
100% |
| pull returns priceChanged true with null costs keeps existing pullCosts |
pull returns priceChanged true with null costs keeps existing pullCosts |
1 |
0 |
0 |
0.048s |
100% |
| pull updates pity counter from result |
pull updates pity counter from result |
1 |
0 |
0 |
0.047s |
100% |
| pull with zero balance shows error |
pull with zero balance shows error |
1 |
0 |
0 |
0.009s |
100% |
| rapid double pull does not double-fire |
rapid double pull does not double-fire |
1 |
0 |
0 |
0.019s |
100% |
| single pull sets currentWin |
single pull sets currentWin |
1 |
0 |
0 |
0.527s |
100% |
| single pull sets pullResults |
single pull sets pullResults |
1 |
0 |
0 |
0.046s |
100% |
| skipMultiSpin jumps to end |
skipMultiSpin jumps to end |
1 |
0 |
0 |
0.048s |
100% |
| ten pull with insufficient coins shows error |
ten pull with insufficient coins shows error |
1 |
0 |
0 |
0.016s |
100% |
| the refusal signal is monotonic across mixed outcomes |
the refusal signal is monotonic across mixed outcomes |
1 |
0 |
0 |
0.022s |
100% |
| two identical refusals signal twice, not once |
two identical refusals signal twice, not once |
1 |
0 |
0 |
0.035s |
100% |
| unknown tier refusal signals that the pull was refused |
unknown tier refusal signals that the pull was refused |
1 |
0 |
0 |
0.021s |
100% |
| updateBalance updates coin balance and pity counter |
updateBalance updates coin balance and pity counter |
1 |
0 |
0 |
0.029s |
100% |
| winnableGifts empty when no gifts have showOnWheel true |
winnableGifts empty when no gifts have showOnWheel true |
1 |
0 |
0 |
0.024s |
100% |
| winnableGifts exactly 16 when more than 16 eligible gifts |
winnableGifts exactly 16 when more than 16 eligible gifts |
1 |
0 |
0 |
0.024s |
100% |
| winnableGifts excludes gifts with showOnWheel false |
winnableGifts excludes gifts with showOnWheel false |
1 |
0 |
0 |
0.047s |
100% |
| winnableGifts filters out zero coinValue and pads to 16 |
winnableGifts filters out zero coinValue and pads to 16 |
1 |
0 |
0 |
0.009s |
100% |