Skip to content

Commit

Permalink
Merge pull request #526 from DnD-Montreal/440-player-event-registrati…
Browse files Browse the repository at this point in the history
…on-cypress-tests

440 player event registration cypress tests
  • Loading branch information
pascwhale authored Mar 27, 2022
2 parents 3f3d1f1 + 97c0cfc commit f6b3f5e
Show file tree
Hide file tree
Showing 3 changed files with 127 additions and 2 deletions.
124 changes: 124 additions & 0 deletions cypress/integration/Event Management/player_event_registration.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
describe('Player Event Registration Test Suite', () => {
let last_url = ''
let event_id = 0

before(() => {
cy.refreshDatabase()
cy.seed('FastSeeder')
})

beforeEach(() => {
cy.seederLogin()
cy.intercept('GET', last_url).as('last_url')
cy.visit(last_url)
cy.wait('@last_url')
})

it('Event Tab Button', () => {
cy.intercept('GET', Cypress.Laravel.route('event.index')).as('event_index')
cy.contains('a', 'Events').click()
cy.wait('@event_index')
last_url = Cypress.Laravel.route('event.index')
})

it('Event Index', () => {
cy.contains('div', 'Events')
cy.contains('Event Title')
cy.contains('Description')
cy.contains('Actions')
cy.contains('Rows per page:')
})

it('Event Filter', () => {
cy.intercept('GET', '**event*').as('event_filter')
cy.contains('Registered Events').click()
cy.wait('@event_filter')
cy.url().should('include', '?registered_only=1')

cy.contains('Registered Events').click()
cy.wait('@event_filter')
cy.url().should('include', '?registered_only=0')
})

it('Event Detail', () => {
cy.get('svg[data-testid="LogoutIcon"]')
.eq(0)
.parent()
.parent()
.invoke('attr', 'href')
.then((href) => {
event_id = parseInt(href.split('/').pop())
})
.then(() => {
cy.intercept(
'GET',
Cypress.Laravel.route('event.show').replace('{event}', event_id),
).as('event_detail')
cy.get('svg[data-testid="LogoutIcon"]').eq(0).click()
cy.wait('@event_detail')

cy.contains('Event Title')
cy.contains('Start Date')
cy.contains('End Date')
cy.contains('Location')
cy.contains('Total Spots')

cy.contains('div', 'Sessions')
cy.contains('Adventure Title')
cy.contains('Game Master')
cy.contains('Seats Taken')
cy.contains('Seats Left')
cy.contains('Actions')
cy.contains('Rows per page:')
})
})

it('Session Register', () => {
cy.intercept('GET', Cypress.Laravel.route('event.show').replace('{event}', event_id)).as(
'event_detail',
)
cy.visit(Cypress.Laravel.route('event.show').replace('{event}', event_id))
cy.wait('@event_detail')

cy.intercept('POST', Cypress.Laravel.route('registration.store')).as('register')

cy.contains('button', 'Register').eq(0).click()
cy.get('#character_id').click()
cy.get('li[role=option]').eq(0).click()
cy.contains('button', 'Join').click()
cy.wait('@register').its('response.statusCode').should('eq', 302)
cy.wait('@event_detail')
})

it('Session Filter', () => {
cy.intercept('GET', Cypress.Laravel.route('event.show').replace('{event}', event_id)).as(
'event_detail',
)
cy.visit(Cypress.Laravel.route('event.show').replace('{event}', event_id))
cy.wait('@event_detail')

cy.intercept('GET', `event/${event_id}*`).as('session_filter')
cy.contains('Registered Sessions').click()
cy.wait('@session_filter')
cy.url().should('include', '?registered_sessions=1')

cy.contains('Registered Sessions').click()
cy.wait('@session_filter')
cy.url().should('include', '?registered_sessions=0')
})

it('Session Leave', () => {
cy.intercept('GET', Cypress.Laravel.route('event.show').replace('{event}', event_id)).as(
'event_detail',
)
cy.visit(Cypress.Laravel.route('event.show').replace('{event}', event_id))
cy.wait('@event_detail')

cy.intercept('DELETE', 'registration/*').as('register')

cy.contains('button', 'Leave').eq(0).click()
cy.get('[data-cy=default-registration-modal-option]').click()
cy.wait('@register').its('response.statusCode').should('eq', 303)
cy.wait('@event_detail')
})
})
4 changes: 2 additions & 2 deletions database/seeders/FastSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,9 @@ private function generateSessions(Collection $events, Collection $dm)

// Each event will have 3 sessions being run at them
foreach ($events as $event) {
$seats = rand(2, 4);
$seats = rand(3, 8);
$sessions = Session::factory(3)
->has(Character::factory($seats - rand(0, 2)))
->has(Character::factory($seats - rand(1, 3)))
->create([
'event_id' => $event->id,
'dungeon_master_id' => $dm->random()->id,
Expand Down
1 change: 1 addition & 0 deletions resources/js/Components/Modal/EventRegistrationModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ const EventRegistrationModal = ({
loading={processing}
variant='contained'
fullWidth
data-cy='default-registration-modal-option'
onClick={() => {
if (registrationData.is_registered) {
destroy(route('event-registration.destroy', [data.session_id]))
Expand Down

0 comments on commit f6b3f5e

Please sign in to comment.