mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
154 lines
4.0 KiB
JavaScript
154 lines
4.0 KiB
JavaScript
import { Given, When, Then } from 'cypress-cucumber-preprocessor/steps'
|
|
import { getLangByName } from '../../support/helpers'
|
|
import users from '../../fixtures/users.json'
|
|
|
|
/* global cy */
|
|
|
|
let lastPost = {
|
|
}
|
|
let loginCredentials
|
|
|
|
Given('I am logged in', () => {
|
|
loginCredentials = {
|
|
email: 'admin@example.org',
|
|
password: '1234',
|
|
}
|
|
cy.factory().create('user', {
|
|
role: 'admin',
|
|
...loginCredentials
|
|
})
|
|
cy.login('admin@example.org', '1234')
|
|
})
|
|
Given('I am logged in as {string}', userType => {
|
|
cy.loginAs(userType)
|
|
})
|
|
|
|
Given('we have a selection of tags and categories as well as posts', () => {
|
|
// TODO: use db factories instead of seed data
|
|
})
|
|
|
|
Given('my account has the following details:', table => {
|
|
// TODO: use db factories instead of seed data
|
|
})
|
|
|
|
Given('my user account has the role {string}', role => {
|
|
// TODO: use db factories instead of seed data
|
|
})
|
|
|
|
When('I log out', cy.logout)
|
|
|
|
When('I visit the {string} page', page => {
|
|
cy.openPage(page)
|
|
})
|
|
|
|
Given('I am on the {string} page', page => {
|
|
cy.openPage(page)
|
|
})
|
|
|
|
When('I fill in my email and password combination and click submit', () => {
|
|
cy.login('admin@example.org', 1234)
|
|
})
|
|
|
|
When('I refresh the page', () => {
|
|
cy.reload()
|
|
})
|
|
|
|
When('I log out through the menu in the top right corner', () => {
|
|
cy.get('.avatar-menu').click()
|
|
cy.get('.avatar-menu-popover')
|
|
.find('a[href="/logout"]')
|
|
.click()
|
|
})
|
|
|
|
Then('I can see my name {string} in the dropdown menu', () => {
|
|
cy.get('.avatar-menu-popover').should('contain', users.admin.name)
|
|
})
|
|
|
|
Then('I see the login screen again', () => {
|
|
cy.location('pathname').should('contain', '/login')
|
|
})
|
|
|
|
Then('I can click on my profile picture in the top right corner', () => {
|
|
cy.get('.avatar-menu').click()
|
|
cy.get('.avatar-menu-popover')
|
|
})
|
|
|
|
Then('I am still logged in', () => {
|
|
cy.get('.avatar-menu').click()
|
|
cy.get('.avatar-menu-popover').contains(users.admin.name)
|
|
})
|
|
|
|
When('I select {string} in the language menu', name => {
|
|
cy.switchLanguage(name, true)
|
|
})
|
|
Given('I previously switched the language to {string}', name => {
|
|
cy.switchLanguage(name, true)
|
|
})
|
|
Then('the whole user interface appears in {string}', name => {
|
|
const lang = getLangByName(name)
|
|
cy.get(`html[lang=${lang.code}]`)
|
|
cy.getCookie('locale').should('have.property', 'value', lang.code)
|
|
})
|
|
Then('I see a button with the label {string}', label => {
|
|
cy.contains('button', label)
|
|
})
|
|
|
|
When(`I click on {string}`, linkOrButton => {
|
|
cy.contains(linkOrButton).click()
|
|
})
|
|
|
|
When('I press {string}', label => {
|
|
cy.contains(label).click()
|
|
})
|
|
|
|
Given('we have the following posts in our database:', table => {
|
|
table.hashes().forEach(row => {
|
|
//TODO: calll factory here
|
|
//create('post', row)
|
|
})
|
|
})
|
|
|
|
Then('I see a success message:', message => {
|
|
cy.contains(message)
|
|
})
|
|
|
|
When('I click on the avatar menu in the top right corner', () => {
|
|
cy.get('.avatar-menu').click()
|
|
})
|
|
|
|
When('I click on the big plus icon in the bottom right corner to create post', () => {
|
|
cy.get('.post-add-button').click()
|
|
})
|
|
|
|
Given('I previously created a post', () => {
|
|
cy.factory()
|
|
.authenticateAs(loginCredentials)
|
|
.create('post', lastPost)
|
|
})
|
|
|
|
When('I choose {string} as the title of the post', (title) => {
|
|
lastPost.title = title.replace('\n', ' ')
|
|
cy.get('input[name="title"]').type(lastPost.title)
|
|
})
|
|
|
|
When('I type in the following text:', (text) => {
|
|
lastPost.content = text.replace('\n', ' ')
|
|
cy.get('.ProseMirror').type(lastPost.content)
|
|
})
|
|
|
|
Then('the post shows up on the landing page at position {int}', (index) => {
|
|
cy.openPage('landing')
|
|
const selector = `:nth-child(${index}) > .ds-card > .ds-card-content`
|
|
cy.get(selector).should('contain', lastPost.title)
|
|
cy.get(selector).should('contain', lastPost.content)
|
|
})
|
|
|
|
Then('I get redirected to {string}', (route) => {
|
|
cy.location('pathname').should('contain', route)
|
|
})
|
|
|
|
Then('the post was saved successfully', () => {
|
|
cy.get('.ds-card-header > .ds-heading').should('contain', lastPost.title)
|
|
cy.get('.content').should('contain', lastPost.content)
|
|
})
|