mirror of
https://github.com/discourse/discourse-adplugin.git
synced 2025-02-12 06:24:43 +00:00
If the selected group to not display ads to had its visibility set to not be visible then this setting wouldn't work correctly because that group wouldn't be available client side. The change moves that group check to be server side so that we can correctly see all the groups that should not see ads.
105 lines
3.2 KiB
JavaScript
105 lines
3.2 KiB
JavaScript
import { visit } from "@ember/test-helpers";
|
|
import { test } from "qunit";
|
|
import { AUTO_GROUPS } from "discourse/lib/constants";
|
|
import groupFixtures from "discourse/tests/fixtures/group-fixtures";
|
|
import {
|
|
acceptance,
|
|
updateCurrentUser,
|
|
} from "discourse/tests/helpers/qunit-helpers";
|
|
|
|
acceptance("DFP Ads", function (needs) {
|
|
needs.user();
|
|
needs.settings({
|
|
no_ads_for_groups: "47",
|
|
no_ads_for_categories: "1",
|
|
dfp_publisher_id: "MYdfpID",
|
|
dfp_through_trust_level: 2,
|
|
dfp_display_groups: [AUTO_GROUPS.trust_level_1, AUTO_GROUPS.trust_level_2],
|
|
dfp_topic_list_top_code: "list_top_ad_unit",
|
|
dfp_topic_list_top_ad_sizes: "728*90 - leaderboard",
|
|
dfp_mobile_topic_list_top_code: "mobile_list_top_ad_unit",
|
|
dfp_mobile_topic_list_top_ad_size: "300*250 - medium rectangle",
|
|
dfp_post_bottom_code: "post_bottom_ad_unit",
|
|
dfp_post_bottom_ad_sizes: "728*90 - leaderboard",
|
|
dfp_mobile_post_bottom_code: "mobile_post_bottom_ad_unit",
|
|
dfp_mobile_post_bottom_ad_size: "300*250 - medium rectangle",
|
|
dfp_nth_post_code: 6,
|
|
dfp_topic_above_post_stream_code: "list_top_ad_unit",
|
|
dfp_topic_above_post_stream_ad_sizes: "728*90 - leaderboard",
|
|
});
|
|
needs.site({
|
|
house_creatives: {
|
|
settings: {
|
|
topic_list_top: "",
|
|
topic_above_post_stream: "",
|
|
topic_above_suggested: "",
|
|
post_bottom: "",
|
|
after_nth_post: 20,
|
|
},
|
|
creatives: {},
|
|
},
|
|
});
|
|
|
|
test("correct number of ads should show", async (assert) => {
|
|
updateCurrentUser({
|
|
staff: false,
|
|
trust_level: 1,
|
|
show_dfp_ads: true,
|
|
show_to_groups: true,
|
|
});
|
|
await visit("/t/280"); // 20 posts
|
|
|
|
assert
|
|
.dom(".google-dfp-ad.dfp-ad-post-bottom")
|
|
.exists({ count: 3 }, "it should render 3 ads");
|
|
|
|
assert
|
|
.dom("#post_6 + .widget-connector .google-dfp-ad.dfp-ad-post-bottom")
|
|
.exists({ count: 1 }, "ad after 6th post");
|
|
|
|
assert
|
|
.dom("#post_12 + .widget-connector .google-dfp-ad.dfp-ad-post-bottom")
|
|
.exists({ count: 1 }, "ad after 12th post");
|
|
|
|
assert
|
|
.dom("#post_18 + .widget-connector .google-dfp-ad.dfp-ad-post-bottom")
|
|
.exists({ count: 1 }, "ad after 18th post");
|
|
});
|
|
|
|
test("no ads for trust level 3", async (assert) => {
|
|
updateCurrentUser({
|
|
staff: false,
|
|
trust_level: 3,
|
|
groups: [
|
|
AUTO_GROUPS.trust_level_1,
|
|
AUTO_GROUPS.trust_level_2,
|
|
AUTO_GROUPS.trust_level_3,
|
|
],
|
|
});
|
|
await visit("/t/280");
|
|
assert
|
|
.dom(".google-dfp-ad.dfp-ad-post-bottom")
|
|
.doesNotExist("it should render 0 ads");
|
|
});
|
|
|
|
test("can omit ads based on groups", async (assert) => {
|
|
updateCurrentUser({
|
|
staff: false,
|
|
trust_level: 1,
|
|
groups: [groupFixtures["/groups/discourse.json"].group],
|
|
});
|
|
await visit("/t/280");
|
|
assert
|
|
.dom(".google-dfp-ad.dfp-ad-post-bottom")
|
|
.doesNotExist("it should render 0 ads");
|
|
});
|
|
|
|
test("can omit ads based on category", async (assert) => {
|
|
updateCurrentUser({ staff: false, trust_level: 1 });
|
|
await visit("/t/28830");
|
|
assert
|
|
.dom(".google-dfp-ad.dfp-ad-topic-above-post-stream")
|
|
.doesNotExist("it should render 0 ads");
|
|
});
|
|
});
|