docbrown/cypress/e2e/seededFlows/adminFlows/displayAds/createDisplayAds.spec.js
Ridhwana ccacf0bc3a
Refactor the home feed + add user tag filtering on in-feed billboards (#19600)
* feat: fix of there is no article

* feat: set the feed order in a data structure rather than in a view

* feat: update yarn.lock

* feat: push the items to the array

* feat: update feed to only show billboards if we have the correct length of items in the feed

* fix: organizedFeedItems.legth

* feat: rename 'featured' to 'image'

* feat: rename 'featured' to 'image'

* feat: rename 'featured' to 'image'

* feat: add some utilities for the feed that we can use in the FeedTest

* feat/WIP: the setup for the feed tests and a first working test

* test: imageItem

* fix: the podcasts can be passed through as an array of objects in the feedItems so that they can be grouped in one card

* feat: remove podcastEpisode state and the attribute in the object

* fix: check that the items exist before trying to slice them

* feat: setup the userdata and the podcast data in the test

* whoops - commit the podcast episodes

* feat: write soem more tests for the feed and including the podcasts

* feat: add some more tests

* feat: add more billboards tests to chcek the order of stuff

* feat: set the timeframe not empty

* feat: update the logic for organizaed feed by inserting the last on first

* doc: jsdoc for functions

* refactor: break the code up into smaller functions

* refactor: make the code more readable and easier to follow

* refactor: pull function out into a utlity

* feat: add specs to utility

* feat: chcek if pinned post

* test the latest timeframe correctly

* chore: update var name

* move the podcast items out of the object clause

* feat: update text

* feat: add a pack file that duplicates initializeDisplayAdVisibility

* feat: create callbacks that will help us to determine when the feed has been rendered so that we can observe the dsplay ads accordingly

* chore: rename to billboards instead of display ad

* feat: abstract out a function that will work for any tagged resource and also limit the article tags within a scope of the article_id

* feat: update the spec for the previous changes

* feat: write tests for the user_tags

* feat: add user_tags to for_display adn the query

* feat: add user_tags to the endpoint where we query the tags to send it through to for_display

* feat: pass through the suer tags to the async request

* feat: update the user_tags fiter query + tests

* feat: update the admin view to show targeted tags on the new feed option billboards too

* feat: add tests for targeted tags field on admin

* refactor: consolidate all of the options into one

* feat: move comment close to attribute

* feat: use a helper method

* feat: include helper on ads query

* feat: move the query from the frontend to live on the backend

* feat: first pass at some error handling whilst maintaining the order of the items

* test: for feed error

* feat: abstract out some code

* update the feed items for errors

* chore: comment

* feat: update the variable names

* feat: update honeybadger message

* feat: update the name of the variable

* refactor: do not conflate the duty of the untagged_ads

* refactor: rename the variables + add note for clarity

* fix: update var
2023-07-06 16:47:08 +02:00

62 lines
2.2 KiB
JavaScript

describe('Create Display Ads', () => {
context('when creating a new display ad', () => {
beforeEach(() => {
cy.testSetup();
cy.fixture('users/adminUser.json').as('user');
cy.get('@user').then((user) => {
cy.loginAndVisit(user, '/admin/customization/display_ads');
cy.findByRole('link', { name: 'Make A New Display Ad' }).click({
force: true,
});
});
});
describe('Targeted Tags field', () => {
[
'Sidebar Right (Home)',
'Sidebar Left (First Position)',
'Sidebar Left (Second Position)',
'Home Hero',
].forEach((area) => {
it(`should not show the tags field if the placement is ${area}`, () => {
cy.findByRole('combobox', { name: 'Placement Area:' }).select(area);
cy.findByRole('input', { name: 'Targeted Tag(s)' }).should(
'not.exist',
);
});
});
[
'Below the comment section',
'Sidebar Right (Individual Post)',
'Sidebar Right (Individual Post)',
'Home Feed First',
'Home Feed Second',
'Home Feed Third',
].forEach((area) => {
it(`should show the tags field if the placement is ${area}`, () => {
cy.findByRole('combobox', { name: 'Placement Area:' }).select(area);
cy.findByLabelText('Targeted Tag(s)').should('exist');
});
});
});
describe('Audience Segment field', () => {
it('should not show the audience segment field if the display to is logged-out users', () => {
cy.findByRole('radio', { name: 'Only logged out users' }).click();
cy.findByLabelText('Users who:').should('not.be.visible');
});
it('should not show the audience segment field if the display to is all users', () => {
cy.findByRole('radio', { name: 'All users' }).click();
cy.findByLabelText('Users who:').should('not.be.visible');
});
it('should show the audience segment field if the display to is logged-in users', () => {
cy.findByRole('radio', { name: 'Only logged in users' }).click();
cy.findByLabelText('Users who:').should('be.visible');
});
});
});
});