docbrown/cypress/integration/searchFlows/followUser.spec.js
Suzanne Aitchison 75b6c8ed96
Use a single listener for all follow buttons on a page (#14246)
* create new pack, handle user follow buttons, use pack on article page, remove initializeUserFollowButts

* init all follow button types, add pack to tag index and podcast episode pages

* add pack to all relevant pages, listen for newly inserted follow buttons

* change to searchParams to remove follow button initializer calls

* fix bug with tag page, add pack to notifications page

* fix issue with follow back inner text

* update cypress specs

* run the followbuttons code on sponsors page

* remove extra foreach

* add test for follow from article sidebar

* add test for follow and unfollow tag

* add test for the tag index page

* add spec for organisation profile follow

* add tests for follow buttons in search results

* add tests for notification follows

* commit missed file - woops

* show login modal if user is logged out when they click

* add cypress tests for logged out state

* change tag button initialization

* remove data-button-initialized

* init follow buttons from base pack

* handle the case where multiple follow buttons exist on a page for the same user

* account for instantclick and userdata not being defined, lower coverage for jest

* use getInstantClick

* fix issue with set initialisation

* only listen for mutations in areas we know follow buttons may be added dynamically

* small refactors
2021-07-27 10:45:50 +01:00

37 lines
1.1 KiB
JavaScript

describe('Follow user from search results', () => {
beforeEach(() => {
cy.testSetup();
cy.fixture('users/adminUser.json').as('user');
cy.get('@user').then((user) => {
cy.loginUser(user);
});
});
it('Shows an edit profile button for the current user', () => {
cy.visitAndWaitForUserSideEffects(
'/search?q=admin&filters=class_name:User',
);
cy.findByRole('button', { name: 'Edit profile' }).click();
cy.findByRole('heading', { name: 'Settings for @admin_mcadmin' });
});
it('Follows and unfollows a user from search results', () => {
cy.visitAndWaitForUserSideEffects(
'/search?q=article&filters=class_name:User',
);
cy.intercept('/follows').as('followsRequest');
cy.findAllByRole('button', { name: 'Follow' }).first().as('followButton');
cy.get('@followButton').click();
cy.wait('@followsRequest');
cy.get('@followButton').should('have.text', 'Following');
cy.get('@followButton').click();
cy.wait('@followsRequest');
cy.get('@followButton').should('have.text', 'Follow');
});
});