From c1520a90412698df787ae592aa066b3e6dafb07e Mon Sep 17 00:00:00 2001
From: Kalle <38327916+Sendouc@users.noreply.github.com>
Date: Sat, 13 Aug 2022 13:42:49 +0300
Subject: [PATCH] E2E tests to report results
---
TODO.md | 47 ----------------------
app/db/seed.ts | 3 +-
app/routes/calendar/$id/report-winners.tsx | 9 ++++-
cypress/e2e/calendar.cy.ts | 44 ++++++++++++++++++++
4 files changed, 54 insertions(+), 49 deletions(-)
delete mode 100644 TODO.md
diff --git a/TODO.md b/TODO.md
deleted file mode 100644
index fe0ea2a0e..000000000
--- a/TODO.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# Focus
-
-Calendar
-
-## Features
-
-- [x] Add badges to the seed
-- [x] Implement badge prizes
-- [x] Implement tags
-- [x] Add initial tags.json
-- [x] Add tags to the seed
-- [x] Page to add a new event
-- [x] Edit page
-- [x] E2E test form controls (adding/removing date, adding/removing tags) etc.
-- [x] E2E test browsing events + event page
-- [x] E2E test adding and editing event
-- [x] Add winners page
-- [ ] E2E test add winners page
-- [x] Winners on the event info page
-- [x] There should be a banner on the list page if you have past tournaments to report
-- [x] On the user page tab showing past results
-- [x] Translations
-
-## Other
-
-- [x] can submit results with one invalid linked user
-- [x] Redirect to event page after submitting results
-- [x] date input take in account time zone difference between server and client
-- [x] User selector allow passing users from top level
-- [x] Constants use CALENDAR_EVENT object
-- [x] New unfriendly crash if omits dates
-- [x] badges inside tag?
-- [x] Tags selector can remove
-- [x] Calendar new title
-- [x] Sort tags so that they are always in same order
-- [x] Maybe make bracket URL mandatory?
-- [x] components render twice on state change?
-- [x] If week has no events show some text + don't show time zone text
-- [x] flatMap -> React.fragment
-- [x] Event page layout shift with time not taking space before mount (only if one day)
-- [x] WeekLinks make opaque blocks not take space on mobile
-- [x] Type problem with Avatar
-- [x] Maybe classNames that do nothing on calendar event page?
-- [x] refactor global.css/common.css -> variables.css / utils.css / common.css
-- [x] addTagArray get tags type from constant
-- [x] Rename model events -> calendarEvents
-- [x] On the event page should not say Day 1 if only one day
diff --git a/app/db/seed.ts b/app/db/seed.ts
index 7277b15a6..f47afb68c 100644
--- a/app/db/seed.ts
+++ b/app/db/seed.ts
@@ -456,7 +456,8 @@ function calendarEventResults() {
);
for (const eventId of eventIdsOfPast) {
- if (Math.random() < 0.3) continue;
+ // event id = 1 needs to be without results for e2e tests
+ if (Math.random() < 0.3 || eventId === 1) continue;
db.calendarEvents.upsertReportedScores({
eventId,
diff --git a/app/routes/calendar/$id/report-winners.tsx b/app/routes/calendar/$id/report-winners.tsx
index ffa6238ba..574f836fb 100644
--- a/app/routes/calendar/$id/report-winners.tsx
+++ b/app/routes/calendar/$id/report-winners.tsx
@@ -164,7 +164,7 @@ export default function ReportWinnersPage() {
{t("calendar:forms.reportResultsInfo")}
- {" "}
@@ -430,6 +436,7 @@ function Players({
variant="destructive"
onClick={handleRemovePlayer}
disabled={players.length === 1}
+ data-cy="remove-player-button"
>
{t("forms.team.player.remove")}
diff --git a/cypress/e2e/calendar.cy.ts b/cypress/e2e/calendar.cy.ts
index 030c41098..6cf09fa50 100644
--- a/cypress/e2e/calendar.cy.ts
+++ b/cypress/e2e/calendar.cy.ts
@@ -103,4 +103,48 @@ describe("New calendar event page", () => {
cy.url().should("include", "/1"); // we should have been redirected to the new event's page
cy.contains("Edited Event");
});
+
+ describe("Results", () => {
+ it("Adds results to tournament", () => {
+ cy.auth(2);
+
+ cy.visit(calendarEventPage(1));
+ cy.getCy("report-winners-button").click();
+
+ cy.getCy("participants-count-input").type("24");
+
+ cy.getCy("team-name-input").type("Team Olive");
+
+ for (let i = 0; i < 4; i++) {
+ cy.getCy("change-input-type-button").eq(i).click();
+ cy.getCy("plain-player-name-input")
+ .eq(i)
+ .type(`Player ${i + 1}`);
+ }
+
+ cy.getCy("add-player-button").first().click();
+ cy.getCy("team-player-combobox-input").clear().type("Sendou{enter}");
+
+ cy.getCy("add-team-button").click();
+
+ cy.getCy("team-name-input").eq(1).type("NSTC");
+ cy.getCy("placing-input").eq(1).clear().type("8");
+
+ for (let i = 0; i < 3; i++) {
+ cy.getCy("remove-player-button").eq(1).click();
+ }
+ cy.getCy("change-input-type-button").eq(5).click();
+ cy.getCy("plain-player-name-input").eq(4).type(`fuzzy`);
+
+ cy.getCy("submit-button").click();
+
+ // checking that added results show
+
+ cy.contains("8th");
+ cy.contains("Sendou").click();
+
+ cy.contains("Results").click();
+ cy.contains("Player 1");
+ });
+ });
});