77 lines
1.8 KiB
TypeScript
77 lines
1.8 KiB
TypeScript
import { describe, expect, test } from 'vitest';
|
|
|
|
import {
|
|
type PlatformCreationLaunchTarget,
|
|
resolvePlatformCreationLaunchIntent,
|
|
} from './platformCreationLaunchModel';
|
|
import { EDUTAINMENT_HIDDEN_MESSAGE } from './platformEdutainmentVisibility';
|
|
|
|
describe('platformCreationLaunchModel', () => {
|
|
test('keeps airp as a placeholder noop before prepare', () => {
|
|
expect(
|
|
resolvePlatformCreationLaunchIntent({
|
|
type: 'airp',
|
|
isBabyObjectMatchVisible: true,
|
|
}),
|
|
).toEqual({
|
|
type: 'noop',
|
|
shouldPrepare: false,
|
|
reason: 'placeholder',
|
|
});
|
|
});
|
|
|
|
test('blocks hidden baby object match after prepare', () => {
|
|
expect(
|
|
resolvePlatformCreationLaunchIntent({
|
|
type: 'baby-object-match',
|
|
isBabyObjectMatchVisible: false,
|
|
}),
|
|
).toEqual({
|
|
type: 'blocked',
|
|
shouldPrepare: true,
|
|
message: EDUTAINMENT_HIDDEN_MESSAGE,
|
|
});
|
|
});
|
|
|
|
test('resolves known creation launch targets', () => {
|
|
const targets: PlatformCreationLaunchTarget[] = [
|
|
'rpg',
|
|
'big-fish',
|
|
'match3d',
|
|
'square-hole',
|
|
'jump-hop',
|
|
'wooden-fish',
|
|
'puzzle',
|
|
'bark-battle',
|
|
'visual-novel',
|
|
'baby-object-match',
|
|
];
|
|
|
|
targets.forEach((target) => {
|
|
expect(
|
|
resolvePlatformCreationLaunchIntent({
|
|
type: target,
|
|
isBabyObjectMatchVisible: true,
|
|
}),
|
|
).toEqual({
|
|
type: 'launch',
|
|
shouldPrepare: true,
|
|
target,
|
|
});
|
|
});
|
|
});
|
|
|
|
test('keeps unknown creation type as a prepared noop', () => {
|
|
expect(
|
|
resolvePlatformCreationLaunchIntent({
|
|
type: 'unknown-template',
|
|
isBabyObjectMatchVisible: true,
|
|
}),
|
|
).toEqual({
|
|
type: 'noop',
|
|
shouldPrepare: true,
|
|
reason: 'unknown',
|
|
});
|
|
});
|
|
});
|