mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-28 04:24:12 +00:00
Test initial track selection
This commit is contained in:
parent
41e0ad4563
commit
e41fb3d9b4
4 changed files with 51 additions and 5 deletions
|
|
@ -65,7 +65,7 @@ export function loadPresets(presets: StatePreset[]): Dispatchable {
|
|||
const state = getState();
|
||||
const presetsLength = state.milkdrop.presets.length;
|
||||
dispatch({ type: GOT_BUTTERCHURN_PRESETS, presets });
|
||||
if (state.milkdrop.randomize) {
|
||||
if (presetsLength === 0 && Selectors.getRandomizePresets(state)) {
|
||||
dispatch(selectRandomPreset());
|
||||
} else {
|
||||
dispatch(
|
||||
|
|
@ -116,7 +116,7 @@ export function selectNextPreset(
|
|||
): Dispatchable {
|
||||
return (dispatch, getState) => {
|
||||
const state = getState();
|
||||
if (state.milkdrop.randomize) {
|
||||
if (Selectors.getRandomizePresets(state)) {
|
||||
return dispatch(selectRandomPreset(transitionType));
|
||||
}
|
||||
const currentPresetIndex = Selectors.getCurrentPresetIndex(state);
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@ function mapStateToProps(state: AppState): StateProps {
|
|||
function mapDispatchToProps(dispatch: Dispatch): DispatchProps {
|
||||
return {
|
||||
requestPresetAtIndex: (i: number) => {
|
||||
dispatch(Actions.requestPresetAtIndex(i, TransitionType.DEFAULT));
|
||||
dispatch(Actions.requestPresetAtIndex(i, TransitionType.DEFAULT, true));
|
||||
},
|
||||
togglePresetOverlay: () => dispatch(Actions.togglePresetOverlay()),
|
||||
appendPresetFileList: (fileList: FileList) =>
|
||||
|
|
|
|||
|
|
@ -13,14 +13,31 @@ const media = {
|
|||
on: jest.fn()
|
||||
};
|
||||
|
||||
const store = createStore(media, new Emitter());
|
||||
test("The first tack is picked at random", () => {
|
||||
const store = createStore(media, new Emitter());
|
||||
const mockPreset = [
|
||||
{ type: "RESOLVED", name: "First", preset: {} },
|
||||
{ type: "RESOLVED", name: "Second", preset: {} },
|
||||
{ type: "RESOLVED", name: "Third", preset: {} },
|
||||
{ type: "RESOLVED", name: "Fourth", preset: {} }
|
||||
];
|
||||
Math.random = () => 0.5;
|
||||
// Just confirm that the default setting is correct
|
||||
expect(Selectors.getRandomizePresets(store.getState())).toBe(true);
|
||||
store.dispatch(Actions.loadPresets(mockPreset));
|
||||
expect(Selectors.getCurrentPresetIndex(store.getState())).toBe(2);
|
||||
});
|
||||
|
||||
test("handles history correctly", () => {
|
||||
test("handles history (prev/next) correctly", () => {
|
||||
const store = createStore(media, new Emitter());
|
||||
const mockPreset = [
|
||||
{ type: "RESOLVED", name: "First", preset: {} },
|
||||
{ type: "RESOLVED", name: "Second", preset: {} }
|
||||
];
|
||||
expect(Selectors.getRandomizePresets(store.getState())).toBe(true);
|
||||
store.dispatch(Actions.toggleRandomizePresets());
|
||||
expect(Selectors.getRandomizePresets(store.getState())).toBe(false);
|
||||
|
||||
// Check initial state
|
||||
expect(store.getState().milkdrop.presetHistory).toEqual([]);
|
||||
expect(Selectors.getCurrentPreset(store.getState())).toBe(null);
|
||||
|
|
@ -51,3 +68,28 @@ test("handles history correctly", () => {
|
|||
expect(store.getState().milkdrop.presetHistory).toEqual([0]);
|
||||
expect(Selectors.getCurrentPresetIndex(store.getState())).toBe(0);
|
||||
});
|
||||
|
||||
test("selectes the first preset in a new set when added", async () => {
|
||||
const store = createStore(media, new Emitter());
|
||||
const mockPreset = [
|
||||
{ type: "RESOLVED", name: "First", preset: {} },
|
||||
{ type: "RESOLVED", name: "Second", preset: {} }
|
||||
];
|
||||
store.dispatch(Actions.toggleRandomizePresets());
|
||||
|
||||
// Load some presets
|
||||
store.dispatch(Actions.loadPresets(mockPreset));
|
||||
expect(Selectors.getCurrentPresetIndex(store.getState())).toBe(0);
|
||||
|
||||
const presetPromise = Promise.resolve({});
|
||||
// Load some more presets
|
||||
const newMockPresets = [
|
||||
{ type: "UNRESOLVED", name: "First", getPreset: () => presetPromise }
|
||||
];
|
||||
store.dispatch(Actions.loadPresets(newMockPresets));
|
||||
// The new presets are not selected right away
|
||||
expect(Selectors.getCurrentPresetIndex(store.getState())).toBe(0);
|
||||
await presetPromise;
|
||||
// Once the first preset is loaded, it gets selected
|
||||
expect(Selectors.getCurrentPresetIndex(store.getState())).toBe(2);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -652,3 +652,7 @@ export function getPresetOverlayOpen(state: AppState): boolean {
|
|||
export function getPresetsAreCycling(state: AppState): boolean {
|
||||
return state.milkdrop.cycling;
|
||||
}
|
||||
|
||||
export function getRandomizePresets(state: AppState): boolean {
|
||||
return state.milkdrop.randomize;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue