summaryrefslogtreecommitdiff
path: root/cypress/e2e/event.cy.ts
blob: 353680672817b019a8efd8aa17abf9aa35b441f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
const eventData = {
    eventName: "Your Event Name",
    eventLocation: "Event Location",
    timezone: "Europe/London",
    eventDescription: "Event Description",
    eventURL: "https://example.com",
    imagePath: "path/to/your/image.jpg", // If you have an image to upload
    hostName: "Your Name",
    creatorEmail: "test@example.com",
    eventGroupCheckbox: false,
    eventGroupID: "YourEventGroupID",
    eventGroupEditToken: "YourEventGroupEditToken",
    interactionCheckbox: true,
    joinCheckbox: true,
    maxAttendeesCheckbox: true,
    maxAttendees: 10,
    eventStart: "",
    eventEnd: "",
};

describe("Events", () => {
    beforeEach(() => {
        cy.clearLocalStorage();

        cy.visit("/new");
        cy.get("#showNewEventFormButton").click();

        cy.get("#eventName").type(eventData.eventName);
        cy.get("#eventLocation").type(eventData.eventLocation);
        cy.get("#eventStart").click();
        // This opens a datepicker, so find the first non-disabled day and click it
        cy.get(".datepicker--cell-day:not(.-disabled-)").first().click();
        cy.get("#eventStart").invoke("val").as("eventStart");
        // Click away from the datepicker to close it
        cy.get("#eventName").click();
        cy.get("#eventEnd").click();
        // This opens a datepicker, so find the last non-disabled day and click it
        cy.get(".datepicker--cell-day:not(.-disabled-)").last().click();
        cy.get("#eventEnd").invoke("val").as("eventEnd");
        // Click away from the datepicker to close it
        cy.get("#eventName").click();
        // #timezone is a Select2 dropdown, so select the option you want
        cy.get("#timezone").select(eventData.timezone, { force: true });

        cy.get("#eventDescription").type(eventData.eventDescription);
        cy.get("#eventURL").type(eventData.eventURL);
        // Upload an image
        // if (eventData.imagePath) {
        //   cy.get("#eventImageUpload").attachFile(eventData.imagePath);
        // }

        cy.get("#hostName").type(eventData.hostName);
        cy.get("#creatorEmail").type(eventData.creatorEmail);

        // Check checkboxes based on eventData
        if (eventData.eventGroupCheckbox) {
            cy.get("#eventGroupCheckbox").check();
            cy.get("#eventGroupID").type(eventData.eventGroupID);
            cy.get("#eventGroupEditToken").type(eventData.eventGroupEditToken);
        }

        if (eventData.interactionCheckbox) {
            cy.get("#interactionCheckbox").check();
        }

        if (eventData.joinCheckbox) {
            cy.get("#joinCheckbox").check();
        }

        if (eventData.maxAttendeesCheckbox) {
            cy.get("#maxAttendeesCheckbox").check();
            cy.get("#maxAttendees").type(eventData.maxAttendees.toString());
        }

        // Submit the form
        cy.get("#newEventFormSubmit").click();
    });
    it("creates a new event", function () {
        // Check that all the data is correct
        cy.get(".p-name").should("have.text", eventData.eventName);
        cy.get(".p-location").should("have.text", eventData.eventLocation);
        cy.get(".p-summary").should("contain.text", eventData.eventDescription);
        cy.get("#hosted-by").should(
            "contain.text",
            `Hosted by ${eventData.hostName}`
        );
        cy.get("#attendees-alert").should("contain.text", "10 spots remaining");
        let [startDate, startTime] = this.eventStart.split(", ");
        let [endDate, endTime] = this.eventEnd.split(", ");
        // Remove leading zeroes from the times
        startTime = startTime.replace(/^0+/, "");
        endTime = endTime.replace(/^0+/, "");
        cy.get(".dt-duration").should("contain.text", startDate);
        cy.get(".dt-duration").should("contain.text", endDate);
        cy.get(".dt-duration").should("contain.text", startTime);
        cy.get(".dt-duration").should("contain.text", endTime);
    });

    it("allows you to attend an event", function () {
        cy.get("button#attendEvent").click();
        cy.get("#attendeeName").type("Test Attendee");
        cy.get("#attendeeNumber").clear();
        cy.get("#attendeeNumber").type("2");
        cy.get("form#attendEventForm").submit();
        cy.get("#attendees-alert").should("contain.text", "8 spots remaining");
        cy.get(".attendeesList").should(
            "contain.text",
            "Test Attendee (2 people)"
        );
    });

    it("allows you to comment on an event", function () {
        cy.get("#commentAuthor").type("Test Author");
        cy.get("#commentContent").type("Test Comment");
        cy.get("#postComment").click();
        cy.get(".comment").should("contain.text", "Test Author");
        cy.get(".comment").should("contain.text", "Test Comment");
    });
});