332 lines
8.7 KiB
JavaScript
332 lines
8.7 KiB
JavaScript
import { visit } from "@ember/test-helpers";
|
|
import { test } from "qunit";
|
|
import {
|
|
acceptance,
|
|
query,
|
|
updateCurrentUser,
|
|
} from "discourse/tests/helpers/qunit-helpers";
|
|
|
|
acceptance("House Ads", function (needs) {
|
|
needs.user();
|
|
needs.settings({
|
|
no_ads_for_categories: "1",
|
|
house_ads_after_nth_post: 6,
|
|
house_ads_after_nth_topic: 3,
|
|
});
|
|
needs.site({
|
|
house_creatives: {
|
|
settings: {
|
|
topic_list_top: "Topic List Top",
|
|
topic_above_post_stream: "Above Post Stream",
|
|
topic_above_suggested: "Above Suggested",
|
|
post_bottom: "Post",
|
|
topic_list_between: "Between Topic List",
|
|
after_nth_post: 6,
|
|
after_nth_topic: 6,
|
|
},
|
|
creatives: {
|
|
"Topic List Top": {
|
|
html: "<div class='h-topic-list'>TOPIC LIST TOP</div>",
|
|
category_ids: [],
|
|
},
|
|
"Above Post Stream": {
|
|
html: "<div class='h-above-post-stream'>ABOVE POST STREAM</div>",
|
|
category_ids: [],
|
|
},
|
|
"Above Suggested": {
|
|
html: "<div class='h-above-suggested'>ABOVE SUGGESTED</div>",
|
|
category_ids: [],
|
|
},
|
|
Post: {
|
|
html: "<div class='h-post'>BELOW POST</div>",
|
|
category_ids: [],
|
|
},
|
|
"Between Topic List": {
|
|
html: "<div class='h-between-topic-list'>BETWEEN TOPIC LIST</div>",
|
|
category_ids: [],
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
test("correct ads show", async (assert) => {
|
|
updateCurrentUser({ staff: false, trust_level: 1, show_to_groups: true });
|
|
await visit("/t/280"); // 20 posts
|
|
|
|
assert
|
|
.dom(".h-above-post-stream")
|
|
.exists({ count: 1 }, "it should render ad at top of topic");
|
|
|
|
assert
|
|
.dom(".h-above-suggested")
|
|
.exists({ count: 1 }, "it should render ad above suggested topics");
|
|
|
|
assert
|
|
.dom(".h-post")
|
|
.exists({ count: 3 }, "it should render 3 ads between posts");
|
|
|
|
assert
|
|
.dom("#post_6 + .widget-connector .h-post")
|
|
.exists({ count: 1 }, "ad after 6th post");
|
|
|
|
assert
|
|
.dom("#post_12 + .widget-connector .h-post")
|
|
.exists({ count: 1 }, "ad after 12th post");
|
|
|
|
assert
|
|
.dom("#post_18 + .widget-connector .h-post")
|
|
.exists({ count: 1 }, "ad after 18th post");
|
|
|
|
await visit("/latest");
|
|
|
|
assert
|
|
.dom(".h-topic-list")
|
|
.exists({ count: 1 }, "it should render ad above topic list");
|
|
const originalTopAdElement = query(".h-topic-list");
|
|
|
|
assert
|
|
.dom(".h-between-topic-list")
|
|
.exists({ count: 5 }, "it should render 5 ads between topics");
|
|
|
|
await visit("/top");
|
|
const newTopAdElement = query(".h-topic-list");
|
|
|
|
assert.notStrictEqual(
|
|
originalTopAdElement,
|
|
newTopAdElement,
|
|
"ad is fully re-rendered when changing pages"
|
|
);
|
|
|
|
await visit("/t/28830");
|
|
|
|
assert
|
|
.dom(".h-above-post-stream")
|
|
.doesNotExist(
|
|
"no ad above post stream because category is in no_ads_for_categories"
|
|
);
|
|
|
|
assert
|
|
.dom(".h-post")
|
|
.doesNotExist(
|
|
"no ad between posts because category is in no_ads_for_categories"
|
|
);
|
|
|
|
assert
|
|
.dom(".h-above-suggested")
|
|
.doesNotExist(
|
|
"no ad above suggested because category is in no_ads_for_categories"
|
|
);
|
|
|
|
await visit("/c/bug");
|
|
|
|
assert
|
|
.dom(".h-topic-list")
|
|
.doesNotExist(
|
|
"no ad above category topic list because category is in no_ads_for_categories"
|
|
);
|
|
});
|
|
});
|
|
|
|
acceptance(
|
|
"House Ads | Category and Group Permissions | Authenticated | Display Ad",
|
|
function (needs) {
|
|
needs.user();
|
|
needs.settings({
|
|
no_ads_for_categories: "",
|
|
});
|
|
needs.site({
|
|
house_creatives: {
|
|
settings: {
|
|
topic_list_top: "Topic List Top",
|
|
},
|
|
creatives: {
|
|
"Topic List Top": {
|
|
html: "<div class='h-topic-list'>TOPIC LIST TOP</div>",
|
|
// match /c/bug/1
|
|
category_ids: [1],
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
test("displays ad to users when current category id is included in ad category_ids", async (assert) => {
|
|
updateCurrentUser({
|
|
staff: false,
|
|
trust_level: 1,
|
|
show_to_groups: true,
|
|
});
|
|
await visit("/c/bug/1");
|
|
assert
|
|
.dom(".h-topic-list")
|
|
.exists(
|
|
"ad is displayed above the topic list because the current category id is included in the ad category_ids"
|
|
);
|
|
});
|
|
}
|
|
);
|
|
|
|
acceptance(
|
|
"House Ads | Category and Group Permissions | Authenticated | Hide Ad",
|
|
function (needs) {
|
|
needs.user();
|
|
needs.settings({
|
|
no_ads_for_categories: "",
|
|
});
|
|
needs.site({
|
|
house_creatives: {
|
|
settings: {
|
|
topic_list_top: "Topic List Top",
|
|
},
|
|
creatives: {
|
|
"Topic List Top": {
|
|
html: "<div class='h-topic-list'>TOPIC LIST TOP</div>",
|
|
// restrict ad to a different category than /c/bug/1
|
|
category_ids: [2],
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
test("hides ad to users when current category id is not included in ad category_ids", async (assert) => {
|
|
updateCurrentUser({
|
|
staff: false,
|
|
trust_level: 1,
|
|
show_to_groups: true,
|
|
});
|
|
await visit("/c/bug/1");
|
|
assert
|
|
.dom(".h-topic-list")
|
|
.doesNotExist(
|
|
"ad is not displayed because the current category id is not included in the ad category_ids"
|
|
);
|
|
});
|
|
}
|
|
);
|
|
|
|
acceptance(
|
|
"House Ads | Category and Group Permissions | Anonymous | Hide Ad",
|
|
function (needs) {
|
|
needs.settings({
|
|
no_ads_for_categories: "",
|
|
});
|
|
needs.site({
|
|
house_creatives: {
|
|
settings: {
|
|
topic_list_top: "Topic List Top",
|
|
},
|
|
creatives: {
|
|
"Topic List Top": {
|
|
html: "<div class='h-topic-list'>TOPIC LIST TOP</div>",
|
|
// restrict ad to a different category than /c/bug/1
|
|
category_ids: [2],
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
test("hides ad to anon users when current category id is not included in ad category_ids", async (assert) => {
|
|
await visit("/c/bug/1");
|
|
assert
|
|
.dom(".h-topic-list")
|
|
.doesNotExist(
|
|
"ad is not displayed because the current category id is not included in the ad category_ids"
|
|
);
|
|
});
|
|
}
|
|
);
|
|
|
|
acceptance(
|
|
"House Ads | Category and Group Permissions | Anonymous | Hide Ad",
|
|
function (needs) {
|
|
needs.settings({
|
|
no_ads_for_categories: "",
|
|
});
|
|
needs.site({
|
|
house_creatives: {
|
|
settings: {
|
|
topic_list_top: "Topic List Top",
|
|
},
|
|
creatives: {
|
|
"Topic List Top": {
|
|
html: "<div class='h-topic-list'>TOPIC LIST TOP</div>",
|
|
// restrict ad to a different category than /c/bug/1
|
|
category_ids: [2],
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
test("hides ad to anon users when current category id is not included in ad category_ids", async (assert) => {
|
|
await visit("/c/bug/1");
|
|
assert
|
|
.dom(".h-topic-list")
|
|
.doesNotExist(
|
|
"ad is not displayed because the current category id is not included in the ad category_ids"
|
|
);
|
|
});
|
|
}
|
|
);
|
|
|
|
acceptance(
|
|
"House Ads | Category and Group Permissions | Anonymous | Show Ad",
|
|
function (needs) {
|
|
needs.settings({
|
|
no_ads_for_categories: "",
|
|
});
|
|
needs.site({
|
|
house_creatives: {
|
|
settings: {
|
|
topic_list_top: "Topic List Top",
|
|
},
|
|
creatives: {
|
|
"Topic List Top": {
|
|
html: "<div class='h-topic-list'>TOPIC LIST TOP</div>",
|
|
// match /c/bug/1
|
|
category_ids: [1],
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
test("shows ad to anon users when current category id is included in ad category_ids", async (assert) => {
|
|
await visit("/c/bug/1");
|
|
assert
|
|
.dom(".h-topic-list")
|
|
.exists(
|
|
"ad is displayed because the current category id is included in the ad category_ids"
|
|
);
|
|
});
|
|
}
|
|
);
|
|
|
|
acceptance(
|
|
"House Ads | Category and Group Permissions | Anonymous | Show non-restricted ads",
|
|
function (needs) {
|
|
needs.settings({
|
|
no_ads_for_categories: "",
|
|
});
|
|
needs.site({
|
|
house_creatives: {
|
|
settings: {
|
|
topic_list_top: "Topic List Top One|Topic List Top Two",
|
|
},
|
|
creatives: {
|
|
"Topic List Top One": {
|
|
html: "<div class='h-topic-list-one'>TOPIC LIST TOP ONE</div>",
|
|
category_ids: [2],
|
|
},
|
|
"Topic List Top Two": {
|
|
html: "<div class='h-topic-list-two'>TOPIC LIST TOP TWO</div>",
|
|
category_ids: [],
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
test("shows non-restricted ad to anon users", async (assert) => {
|
|
await visit("/c/bug/1");
|
|
assert.dom(".h-topic-list-two").exists("non-restricted ad is displayed");
|
|
});
|
|
}
|
|
);
|