Project import generated by Copybara.
GitOrigin-RevId: d9e9e3fb4e31372ec1fb43b178994ca78fa8fe70
diff --git a/static_src/elements/help/mr-click-throughs/mr-click-throughs.test.js b/static_src/elements/help/mr-click-throughs/mr-click-throughs.test.js
new file mode 100644
index 0000000..e735380
--- /dev/null
+++ b/static_src/elements/help/mr-click-throughs/mr-click-throughs.test.js
@@ -0,0 +1,120 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {assert} from 'chai';
+import {MrClickThroughs} from './mr-click-throughs.js';
+import page from 'page';
+
+let element;
+
+describe('mr-click-throughs', () => {
+ beforeEach(() => {
+ element = document.createElement('mr-click-throughs');
+ document.body.appendChild(element);
+
+ sinon.stub(page, 'call');
+ });
+
+ afterEach(() => {
+ document.body.removeChild(element);
+
+ page.call.restore();
+ });
+
+ it('initializes', () => {
+ assert.instanceOf(element, MrClickThroughs);
+ });
+
+ it('stateChanged', () => {
+ const state = {userV0: {currentUser:
+ {prefs: new Map(), prefsLoaded: false}}};
+ element.stateChanged(state);
+ assert.deepEqual(element.prefs, new Map([['render_markdown', false]]));
+ assert.isFalse(element.prefsLoaded);
+ });
+
+ it('anon does not see privacy dialog', () => {
+ assert.isFalse(element._showPrivacyDialog);
+ });
+
+ it('signed in user sees no privacy dialog before prefs load', () => {
+ element.userDisplayName = 'user@example.com';
+ element.prefsLoaded = false;
+ assert.isFalse(element._showPrivacyDialog);
+ });
+
+ it('signed in user sees no privacy dialog if dismissal pref set', () => {
+ element.userDisplayName = 'user@example.com';
+ element.prefsLoaded = true;
+ element.prefs = new Map([['privacy_click_through', true]]);
+ assert.isFalse(element._showPrivacyDialog);
+ });
+
+ it('signed in user sees privacy dialog if dismissal pref missing', () => {
+ element.userDisplayName = 'user@example.com';
+ element.prefsLoaded = true;
+ element.prefs = new Map();
+ assert.isTrue(element._showPrivacyDialog);
+ });
+
+ it('anon does not see corp mode dialog', () => {
+ assert.isFalse(element._showCorpModeDialog);
+ });
+
+ it('signed in user sees no corp mode dialog before prefs load', () => {
+ element.userDisplayName = 'user@example.com';
+ element.prefsLoaded = false;
+ assert.isFalse(element._showCorpModeDialog);
+ });
+
+ it('signed in user sees no corp mode dialog if dismissal pref set', () => {
+ element.userDisplayName = 'user@example.com';
+ element.prefsLoaded = true;
+ element.prefs = new Map([['corp_mode_click_through', true]]);
+ assert.isFalse(element._showCorpModeDialog);
+ });
+
+ it('non-corp user sees no corp mode dialog', () => {
+ element.userDisplayName = 'user@example.com';
+ element.prefsLoaded = true;
+ element.prefs = new Map();
+ assert.isFalse(element._showCorpModeDialog);
+ });
+
+ it('corp user sees corp mode dialog if dismissal pref missing', () => {
+ element.userDisplayName = 'user@example.com';
+ element.prefsLoaded = true;
+ element.prefs = new Map([['public_issue_notice', true]]);
+ assert.isTrue(element._showCorpModeDialog);
+ });
+
+ it('corp user sees no corp mode dialog in members-only project', () => {
+ window.CS_env = {projectIsRestricted: true};
+ element.userDisplayName = 'user@example.com';
+ element.prefsLoaded = true;
+ element.prefs = new Map([['public_issue_notice', true]]);
+ assert.isFalse(element._showCorpModeDialog);
+ });
+
+ it('corp user sees corp mode dialog with no RVG warning', async () => {
+ element.userDisplayName = 'user@example.com';
+ element.prefsLoaded = true;
+ element.prefs = new Map([['public_issue_notice', true]]);
+
+ await element.updateComplete;
+ assert.notInclude(element.shadowRoot.innerHTML, 'altered');
+ });
+
+ it('corp user sees corp mode dialog with RVG warning', async () => {
+ element.userDisplayName = 'user@example.com';
+ element.prefsLoaded = true;
+ element.prefs = new Map([
+ ['public_issue_notice', true],
+ ['restrict_new_issues', true],
+ ]);
+
+ await element.updateComplete;
+ assert.include(element.shadowRoot.innerHTML, 'altered');
+ });
+});