* 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
62 lines
2.2 KiB
JavaScript
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');
|
|
});
|
|
});
|
|
});
|
|
});
|