Skip to content

Commit

Permalink
Add tests for mbld and fewest moves
Browse files Browse the repository at this point in the history
  • Loading branch information
campos20 committed Sep 17, 2020
1 parent 2c51213 commit 83a1d86
Showing 1 changed file with 95 additions and 0 deletions.
95 changes: 95 additions & 0 deletions tnoodle-ui/src/test/App.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import App from "../App";
import { version, formats, events, languages } from "./mock/tnoodle.api.mock";
import { scrambleProgram } from "./mock/wca.api.mock";

import _ from "lodash";

const tnoodleApi = require("../main/api/tnoodle.api");
const wcaApi = require("../main/api/wca.api");

Expand Down Expand Up @@ -75,6 +77,7 @@ afterEach(() => {
tnoodleApi.fetchFormats.mockRestore();
tnoodleApi.fetchAvailableFmcTranslations.mockRestore();
tnoodleApi.fetchRunningVersion.mockRestore();
tnoodleApi.fetchZip.mockRestore();
wcaApi.fetchVersionInfo.mockRestore();
});

Expand Down Expand Up @@ -171,3 +174,95 @@ it("Changes on 333, scramble", async () => {

expect(password).toBe(newPassword);
});

it("Remove 333, add FMC and MBLD", async () => {
const store = createStore(Reducer);

// Render component
await act(async () => {
render(
<Provider store={store}>
<App />
</Provider>,
container
);
});

const mbldEvent = "3x3x3 Multiple Blindfolded";
const fmcEvent = "3x3x3 Fewest Moves";

let events = Array.from(container.querySelectorAll("form table"));
const names = [mbldEvent, fmcEvent];

let mbldCubes = "70";

// Pick random indexes from fmc to deselect
let laguageKeys = Object.keys(languages);
let numberOfLanguages = laguageKeys.length;

// At least 1, we do not deselect every translation
let languagesToDeselect =
Math.floor(Math.random() * numberOfLanguages - 2) + 1;

let languagesIndexToDelesect = _.shuffle([
...Array(numberOfLanguages).keys(),
]).slice(languagesToDeselect);

events.forEach((event) => {
let title = event.querySelector("h5").innerHTML;

let rounds = event.querySelector("select");

if (names.includes(title)) {
fireEvent.change(rounds, { target: { value: 3 } });
} else {
fireEvent.change(rounds, { target: { value: 0 } });
}

let inputs = Array.from(event.querySelectorAll("input"));

// Change to 70 mbld
if (title === mbldEvent) {
fireEvent.change(inputs[inputs.length - 1], {
target: { value: mbldCubes },
});
} else if (title === fmcEvent) {
// Open translations
fireEvent.click(event.querySelector("button"));

// Deselesect random translations
let checkboxes = event.querySelectorAll("input[type=checkbox]");

languagesIndexToDelesect.forEach((index) =>
fireEvent.click(checkboxes[index])
);
}
});

// Generate scrambles
const scrambleButton = container.querySelector("form button");
fireEvent.click(scrambleButton);

expect(wcif.events.length).toBe(events.length);

expect(mbld).toBe(mbldCubes);

let selected = translations
.filter((translation) => translation.status)
.map((translation) => translation.id);

let deselected = translations
.filter((translation) => !translation.status)
.map((translation) => translation.id)
.sort();

// Deselected should be with status false
expect(deselected).toEqual(
languagesIndexToDelesect.map((index) => laguageKeys[index]).sort()
);

// Selected and deselected should cover every languages
expect([...selected, ...deselected].sort()).toStrictEqual(
laguageKeys.sort()
);
});

0 comments on commit 83a1d86

Please sign in to comment.