summaryrefslogtreecommitdiffstats
path: root/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts')
-rw-r--r--polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts633
1 files changed, 488 insertions, 145 deletions
diff --git a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts
index 61876fe621..6a8f575bbe 100644
--- a/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts
+++ b/polygerrit-ui/app/elements/settings/gr-settings-view/gr-settings-view_test.ts
@@ -18,7 +18,6 @@
import '../../../test/common-test-setup-karma';
import './gr-settings-view';
import {GrSettingsView} from './gr-settings-view';
-import {flush} from '@polymer/polymer/lib/legacy/polymer.dom';
import {GerritView} from '../../../services/router/router-model';
import {queryAll, queryAndAssert, stubRestApi} from '../../../test/test-utils';
import {
@@ -57,7 +56,7 @@ suite('gr-settings-view tests', () => {
let config: ServerInfo;
function valueOf(title: string, id: string) {
- const sections = element.root?.querySelectorAll(`#${id} section`) ?? [];
+ const sections = queryAll(element, `#${id} section`);
let titleEl;
for (let i = 0; i < sections.length; i++) {
titleEl = sections[i].querySelector('.title');
@@ -123,10 +122,420 @@ suite('gr-settings-view tests', () => {
stubRestApi('getAccountEmails').returns(Promise.resolve(undefined));
stubRestApi('getConfig').returns(Promise.resolve(config));
element = basicFixture.instantiate();
+ await element.updateComplete;
// Allow the element to render.
if (element._testOnly_loadingPromise)
await element._testOnly_loadingPromise;
+ await element.updateComplete;
+ });
+
+ test('renders', async () => {
+ sinon
+ .stub(element, 'getFilterDocsLink')
+ .returns('https://test.com/user-notify.html');
+ element.docsBaseUrl = 'https://test.com';
+ await element.updateComplete;
+ // this cannot be formatted with /* HTML */, because it breaks test
+ expect(element).shadowDom.to.equal(/* HTML*/ `<div
+ class="loading"
+ hidden=""
+ >
+ Loading...
+ </div>
+ <div>
+ <gr-page-nav class="navStyles">
+ <ul>
+ <li><a href="#Profile"> Profile </a></li>
+ <li><a href="#Preferences"> Preferences </a></li>
+ <li><a href="#DiffPreferences"> Diff Preferences </a></li>
+ <li><a href="#EditPreferences"> Edit Preferences </a></li>
+ <li><a href="#Menu"> Menu </a></li>
+ <li><a href="#ChangeTableColumns"> Change Table Columns </a></li>
+ <li><a href="#Notifications"> Notifications </a></li>
+ <li><a href="#EmailAddresses"> Email Addresses </a></li>
+ <li><a href="#Groups"> Groups </a></li>
+ <li><a href="#Identities"> Identities </a></li>
+ <li><a href="#MailFilters"> Mail Filters </a></li>
+ <gr-endpoint-decorator name="settings-menu-item">
+ </gr-endpoint-decorator>
+ </ul>
+ </gr-page-nav>
+ <div class="gr-form-styles main">
+ <h1 class="heading-1">User Settings</h1>
+ <h2 id="Theme">Theme</h2>
+ <section class="darkToggle">
+ <div class="toggle">
+ <paper-toggle-button
+ aria-disabled="false"
+ aria-labelledby="darkThemeToggleLabel"
+ aria-pressed="false"
+ role="button"
+ style="touch-action: none;"
+ tabindex="0"
+ toggles=""
+ >
+ </paper-toggle-button>
+ <div id="darkThemeToggleLabel">
+ Dark theme
+ </div>
+ </div>
+ </section>
+ <h2 id="Profile">Profile</h2>
+ <fieldset id="profile">
+ <gr-account-info id="accountInfo"> </gr-account-info>
+ <gr-button
+ aria-disabled="true"
+ disabled=""
+ role="button"
+ tabindex="-1"
+ >
+ Save changes
+ </gr-button>
+ </fieldset>
+ <h2 id="Preferences">Preferences</h2>
+ <fieldset id="preferences">
+ <section>
+ <label class="title" for="changesPerPageSelect">
+ Changes per page
+ </label>
+ <span class="value">
+ <gr-select>
+ <select id="changesPerPageSelect">
+ <option value="10">10 rows per page</option>
+ <option value="25">25 rows per page</option>
+ <option value="50">50 rows per page</option>
+ <option value="100">100 rows per page</option>
+ </select>
+ </gr-select>
+ </span>
+ </section>
+ <section>
+ <label class="title" for="dateTimeFormatSelect">
+ Date/time format
+ </label>
+ <span class="value">
+ <gr-select>
+ <select id="dateTimeFormatSelect">
+ <option value="STD">Jun 3 ; Jun 3, 2016</option>
+ <option value="US">06/03 ; 06/03/16</option>
+ <option value="ISO">06-03 ; 2016-06-03</option>
+ <option value="EURO">3. Jun ; 03.06.2016</option>
+ <option value="UK">03/06 ; 03/06/2016</option>
+ </select>
+ </gr-select>
+ <gr-select aria-label="Time Format">
+ <select id="timeFormatSelect">
+ <option value="HHMM_12">4:10 PM</option>
+ <option value="HHMM_24">16:10</option>
+ </select>
+ </gr-select>
+ </span>
+ </section>
+ <section>
+ <label class="title" for="emailNotificationsSelect">
+ Email notifications
+ </label>
+ <span class="value">
+ <gr-select>
+ <select id="emailNotificationsSelect">
+ <option value="CC_ON_OWN_COMMENTS">Every comment</option>
+ <option value="ENABLED">
+ Only comments left by others
+ </option>
+ <option value="ATTENTION_SET_ONLY">
+ Only when I am in the attention set
+ </option>
+ <option value="DISABLED">None</option>
+ </select>
+ </gr-select>
+ </span>
+ </section>
+ <section>
+ <label class="title" for="emailFormatSelect">
+ Email format
+ </label>
+ <span class="value">
+ <gr-select>
+ <select id="emailFormatSelect">
+ <option value="HTML_PLAINTEXT">HTML and plaintext</option>
+ <option value="PLAINTEXT">Plaintext only</option>
+ </select>
+ </gr-select>
+ </span>
+ </section>
+ <section>
+ <span class="title"> Default Base For Merges </span>
+ <span class="value">
+ <gr-select>
+ <select id="defaultBaseForMergesSelect">
+ <option value="AUTO_MERGE">Auto Merge</option>
+ <option value="FIRST_PARENT">First Parent</option>
+ </select>
+ </gr-select>
+ </span>
+ </section>
+ <section>
+ <label class="title" for="relativeDateInChangeTable">
+ Show Relative Dates In Changes Table
+ </label>
+ <span class="value">
+ <input id="relativeDateInChangeTable" type="checkbox" />
+ </span>
+ </section>
+ <section>
+ <span class="title"> Diff view </span>
+ <span class="value">
+ <gr-select>
+ <select id="diffViewSelect">
+ <option value="SIDE_BY_SIDE">Side by side</option>
+ <option value="UNIFIED_DIFF">Unified diff</option>
+ </select>
+ </gr-select>
+ </span>
+ </section>
+ <section>
+ <label class="title" for="showSizeBarsInFileList">
+ Show size bars in file list
+ </label>
+ <span class="value">
+ <input
+ checked=""
+ id="showSizeBarsInFileList"
+ type="checkbox"
+ />
+ </span>
+ </section>
+ <section>
+ <label class="title" for="publishCommentsOnPush">
+ Publish comments on push
+ </label>
+ <span class="value">
+ <input id="publishCommentsOnPush" type="checkbox" />
+ </span>
+ </section>
+ <section>
+ <label class="title" for="workInProgressByDefault">
+ Set new changes to "work in progress" by default
+ </label>
+ <span class="value">
+ <input id="workInProgressByDefault" type="checkbox" />
+ </span>
+ </section>
+ <section>
+ <label class="title" for="disableKeyboardShortcuts">
+ Disable all keyboard shortcuts
+ </label>
+ <span class="value">
+ <input id="disableKeyboardShortcuts" type="checkbox" />
+ </span>
+ </section>
+ <section>
+ <label class="title" for="disableTokenHighlighting">
+ Disable token highlighting on hover
+ </label>
+ <span class="value">
+ <input id="disableTokenHighlighting" type="checkbox" />
+ </span>
+ </section>
+ <section>
+ <label class="title" for="insertSignedOff">
+ Insert Signed-off-by Footer For Inline Edit Changes
+ </label>
+ <span class="value">
+ <input id="insertSignedOff" type="checkbox" />
+ </span>
+ </section>
+ <gr-button
+ aria-disabled="true"
+ disabled=""
+ id="savePrefs"
+ role="button"
+ tabindex="-1"
+ >
+ Save changes
+ </gr-button>
+ </fieldset>
+ <h2 id="DiffPreferences">Diff Preferences</h2>
+ <fieldset id="diffPreferences">
+ <gr-diff-preferences id="diffPrefs"> </gr-diff-preferences>
+ <gr-button
+ aria-disabled="true"
+ disabled=""
+ id="saveDiffPrefs"
+ role="button"
+ tabindex="-1"
+ >
+ Save changes
+ </gr-button>
+ </fieldset>
+ <gr-edit-preferences id="EditPreferences"> </gr-edit-preferences>
+ <gr-menu-editor id="Menu"> </gr-menu-editor>
+ <h2 id="ChangeTableColumns">Change Table Columns</h2>
+ <fieldset id="changeTableColumns">
+ <gr-change-table-editor> </gr-change-table-editor>
+ <gr-button
+ aria-disabled="true"
+ disabled=""
+ id="saveChangeTable"
+ role="button"
+ tabindex="-1"
+ >
+ Save changes
+ </gr-button>
+ </fieldset>
+ <h2 id="Notifications">Notifications</h2>
+ <fieldset id="watchedProjects">
+ <gr-watched-projects-editor id="watchedProjectsEditor">
+ </gr-watched-projects-editor>
+ <gr-button
+ aria-disabled="true"
+ disabled=""
+ id="_handleSaveWatchedProjects"
+ role="button"
+ tabindex="-1"
+ >
+ Save changes
+ </gr-button>
+ </fieldset>
+ <h2 id="EmailAddresses">Email Addresses</h2>
+ <fieldset id="email">
+ <gr-email-editor id="emailEditor"> </gr-email-editor>
+ <gr-button
+ aria-disabled="true"
+ disabled=""
+ role="button"
+ tabindex="-1"
+ >
+ Save changes
+ </gr-button>
+ </fieldset>
+ <fieldset id="newEmail">
+ <section>
+ <span class="title"> New email address </span>
+ <span class="value">
+ <iron-input class="newEmailInput">
+ <input
+ class="newEmailInput"
+ placeholder="email@example.com"
+ type="text"
+ />
+ </iron-input>
+ </span>
+ </section>
+ <section hidden="" id="verificationSentMessage">
+ <p>
+ A verification email was sent to <em>
+ </em>
+ . Please check your
+ inbox.
+ </p>
+ </section>
+ <gr-button
+ aria-disabled="true"
+ disabled=""
+ role="button"
+ tabindex="-1"
+ >
+ Send verification
+ </gr-button>
+ </fieldset>
+ <h2 id="Groups">Groups</h2>
+ <fieldset><gr-group-list id="groupList"> </gr-group-list></fieldset>
+ <h2 id="Identities">Identities</h2>
+ <fieldset>
+ <gr-identities id="identities"> </gr-identities>
+ </fieldset>
+ <h2 id="MailFilters">Mail Filters</h2>
+ <fieldset class="filters">
+ <p>
+ Gerrit emails include metadata about the change to support writing
+ mail filters.
+ </p>
+ <p>
+ Here are some example Gmail queries that can be used for filters
+ or for searching through archived messages. View the
+ <a
+ href="https://test.com/user-notify.html"
+ rel="nofollow"
+ target="_blank"
+ >
+ Gerrit documentation
+ </a>
+ for the complete set of footers.
+ </p>
+ <table>
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Query</th>
+ </tr>
+ <tr>
+ <td>Changes requesting my review</td>
+ <td>
+ <code class="queryExample">
+ "Gerrit-Reviewer: <em> Your Name </em> <
+ <em> your.email@example.com </em> >"
+ </code>
+ </td>
+ </tr>
+ <tr>
+ <td>Changes requesting my attention</td>
+ <td>
+ <code class="queryExample">
+ "Gerrit-Attention: <em> Your Name </em> <
+ <em> your.email@example.com </em> >"
+ </code>
+ </td>
+ </tr>
+ <tr>
+ <td>Changes from a specific owner</td>
+ <td>
+ <code class="queryExample">
+ "Gerrit-Owner: <em> Owner name </em> <
+ <em> owner.email@example.com </em> >"
+ </code>
+ </td>
+ </tr>
+ <tr>
+ <td>Changes targeting a specific branch</td>
+ <td>
+ <code class="queryExample">
+ "Gerrit-Branch: <em> branch-name </em> "
+ </code>
+ </td>
+ </tr>
+ <tr>
+ <td>Changes in a specific project</td>
+ <td>
+ <code class="queryExample">
+ "Gerrit-Project: <em> project-name </em> "
+ </code>
+ </td>
+ </tr>
+ <tr>
+ <td>Messages related to a specific Change ID</td>
+ <td>
+ <code class="queryExample">
+ "Gerrit-Change-Id: <em> Change ID </em> "
+ </code>
+ </td>
+ </tr>
+ <tr>
+ <td>Messages related to a specific change number</td>
+ <td>
+ <code class="queryExample">
+ "Gerrit-Change-Number: <em> change number </em> "
+ </code>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </fieldset>
+ <gr-endpoint-decorator name="settings-screen">
+ </gr-endpoint-decorator>
+ </div>
+ </div>`);
});
test('theme changing', async () => {
@@ -142,7 +551,7 @@ suite('gr-settings-view tests', () => {
assert.isTrue(window.localStorage.getItem('dark-theme') === 'true');
assert.isTrue(reloadStub.calledOnce);
- element._isDark = true;
+ element.isDark = true;
await flush();
MockInteractions.tap(themeToggle);
assert.isFalse(window.localStorage.getItem('dark-theme') === 'true');
@@ -259,16 +668,14 @@ suite('gr-settings-view tests', () => {
false
);
- assert.isFalse(element._prefsChanged);
- assert.isFalse(element._menuChanged);
+ assert.isFalse(element.prefsChanged);
const publishOnPush = valueOf('Publish comments on push', 'preferences')!
.firstElementChild!;
MockInteractions.tap(publishOnPush);
- assert.isTrue(element._prefsChanged);
- assert.isFalse(element._menuChanged);
+ assert.isTrue(element.prefsChanged);
stubRestApi('savePreferences').callsFake(prefs => {
assertMenusEqual(prefs.my, preferences.my);
@@ -277,9 +684,8 @@ suite('gr-settings-view tests', () => {
});
// Save the change.
- await element._handleSavePreferences();
- assert.isFalse(element._prefsChanged);
- assert.isFalse(element._menuChanged);
+ await element.handleSavePreferences();
+ assert.isFalse(element.prefsChanged);
});
test('publish comments on push', async () => {
@@ -289,8 +695,7 @@ suite('gr-settings-view tests', () => {
)!.firstElementChild!;
MockInteractions.tap(publishCommentsOnPush);
- assert.isFalse(element._menuChanged);
- assert.isTrue(element._prefsChanged);
+ assert.isTrue(element.prefsChanged);
stubRestApi('savePreferences').callsFake(prefs => {
assert.equal(prefs.publish_comments_on_push, true);
@@ -298,9 +703,8 @@ suite('gr-settings-view tests', () => {
});
// Save the change.
- await element._handleSavePreferences();
- assert.isFalse(element._prefsChanged);
- assert.isFalse(element._menuChanged);
+ await element.handleSavePreferences();
+ assert.isFalse(element.prefsChanged);
});
test('set new changes work-in-progress', async () => {
@@ -310,8 +714,7 @@ suite('gr-settings-view tests', () => {
)!.firstElementChild!;
MockInteractions.tap(newChangesWorkInProgress);
- assert.isFalse(element._menuChanged);
- assert.isTrue(element._prefsChanged);
+ assert.isTrue(element.prefsChanged);
stubRestApi('savePreferences').callsFake(prefs => {
assert.equal(prefs.work_in_progress_by_default, true);
@@ -319,71 +722,40 @@ suite('gr-settings-view tests', () => {
});
// Save the change.
- await element._handleSavePreferences();
- assert.isFalse(element._prefsChanged);
- assert.isFalse(element._menuChanged);
+ await element.handleSavePreferences();
+ assert.isFalse(element.prefsChanged);
});
- test('menu', async () => {
- assert.isFalse(element._menuChanged);
- assert.isFalse(element._prefsChanged);
-
- assertMenusEqual(element._localMenu, preferences.my);
-
- const menu = element.$.menu.firstElementChild!;
- let tableRows = queryAll(menu, 'tbody tr');
- // let tableRows = menu.root.querySelectorAll('tbody tr');
- assert.equal(tableRows.length, preferences.my.length);
-
- // Add a menu item:
- element.splice('_localMenu', 1, 0, {name: 'foo', url: 'bar', target: ''});
- flush();
-
- // tableRows = menu.root.querySelectorAll('tbody tr');
- tableRows = queryAll(menu, 'tbody tr');
- assert.equal(tableRows.length, preferences.my.length + 1);
-
- assert.isTrue(element._menuChanged);
- assert.isFalse(element._prefsChanged);
-
- stubRestApi('savePreferences').callsFake(prefs => {
- assertMenusEqual(prefs.my, element._localMenu);
- return Promise.resolve(createDefaultPreferences());
- });
-
- await element._handleSaveMenu();
- assert.isFalse(element._menuChanged);
- assert.isFalse(element._prefsChanged);
- assertMenusEqual(element.prefs.my, element._localMenu);
- });
-
- test('add email validation', () => {
- assert.isFalse(element._isNewEmailValid('invalid email'));
- assert.isTrue(element._isNewEmailValid('vaguely@valid.email'));
-
- assert.isFalse(
- element._computeAddEmailButtonEnabled('invalid email', true)
- );
- assert.isFalse(
- element._computeAddEmailButtonEnabled('vaguely@valid.email', true)
- );
- assert.isTrue(
- element._computeAddEmailButtonEnabled('vaguely@valid.email', false)
- );
+ test('add email validation', async () => {
+ assert.isFalse(element.isNewEmailValid('invalid email'));
+ assert.isTrue(element.isNewEmailValid('vaguely@valid.email'));
+
+ element.newEmail = 'invalid email';
+ element.addingEmail = true;
+ await element.updateComplete;
+ assert.isFalse(element.computeAddEmailButtonEnabled());
+ element.newEmail = 'vaguely@valid.email';
+ element.addingEmail = true;
+ await element.updateComplete;
+ assert.isFalse(element.computeAddEmailButtonEnabled());
+ element.newEmail = 'vaguely@valid.email';
+ element.addingEmail = false;
+ await element.updateComplete;
+ assert.isTrue(element.computeAddEmailButtonEnabled());
});
test('add email does not save invalid', () => {
const addEmailStub = stubAddAccountEmail(201);
- assert.isFalse(element._addingEmail);
- assert.isNotOk(element._lastSentVerificationEmail);
- element._newEmail = 'invalid email';
+ assert.isFalse(element.addingEmail);
+ assert.isNotOk(element.lastSentVerificationEmail);
+ element.newEmail = 'invalid email';
- element._handleAddEmailButton();
+ element.handleAddEmailButton();
- assert.isFalse(element._addingEmail);
+ assert.isFalse(element.addingEmail);
assert.isFalse(addEmailStub.called);
- assert.isNotOk(element._lastSentVerificationEmail);
+ assert.isNotOk(element.lastSentVerificationEmail);
assert.isFalse(addEmailStub.called);
});
@@ -391,95 +763,59 @@ suite('gr-settings-view tests', () => {
test('add email does save valid', async () => {
const addEmailStub = stubAddAccountEmail(201);
- assert.isFalse(element._addingEmail);
- assert.isNotOk(element._lastSentVerificationEmail);
- element._newEmail = 'valid@email.com';
+ assert.isFalse(element.addingEmail);
+ assert.isNotOk(element.lastSentVerificationEmail);
+ element.newEmail = 'valid@email.com';
- element._handleAddEmailButton();
+ element.handleAddEmailButton();
- assert.isTrue(element._addingEmail);
+ assert.isTrue(element.addingEmail);
assert.isTrue(addEmailStub.called);
assert.isTrue(addEmailStub.called);
await addEmailStub.lastCall.returnValue;
- assert.isOk(element._lastSentVerificationEmail);
+ assert.isOk(element.lastSentVerificationEmail);
});
test('add email does not set last-email if error', async () => {
const addEmailStub = stubAddAccountEmail(500);
- assert.isNotOk(element._lastSentVerificationEmail);
- element._newEmail = 'valid@email.com';
+ assert.isNotOk(element.lastSentVerificationEmail);
+ element.newEmail = 'valid@email.com';
- element._handleAddEmailButton();
+ element.handleAddEmailButton();
assert.isTrue(addEmailStub.called);
await addEmailStub.lastCall.returnValue;
- assert.isNotOk(element._lastSentVerificationEmail);
+ assert.isNotOk(element.lastSentVerificationEmail);
});
test('emails are loaded without emailToken', () => {
- const emailEditorLoadDataStub = sinon.stub(
- element.$.emailEditor,
- 'loadData'
- );
+ const emailEditorLoadDataStub = sinon.stub(element.emailEditor, 'loadData');
element.params = {
view: GerritView.SETTINGS,
} as AppElementSettingsParam;
- element.connectedCallback();
+ element.firstUpdated();
assert.isTrue(emailEditorLoadDataStub.calledOnce);
});
- test('_handleSaveChangeTable', () => {
+ test('handleSaveChangeTable', () => {
let newColumns = ['Owner', 'Project', 'Branch'];
- element._localChangeTableColumns = newColumns.slice(0);
- element._showNumber = false;
- element._handleSaveChangeTable();
+ element.localChangeTableColumns = newColumns.slice(0);
+ element.showNumber = false;
+ element.handleSaveChangeTable();
assert.deepEqual(element.prefs.change_table, newColumns);
assert.isNotOk(element.prefs.legacycid_in_change_table);
newColumns = ['Size'];
- element._localChangeTableColumns = newColumns;
- element._showNumber = true;
- element._handleSaveChangeTable();
+ element.localChangeTableColumns = newColumns;
+ element.showNumber = true;
+ element.handleSaveChangeTable();
assert.deepEqual(element.prefs.change_table, newColumns);
assert.isTrue(element.prefs.legacycid_in_change_table);
});
- test('reset menu item back to default', async () => {
- const originalMenu = {
- ...createDefaultPreferences(),
- my: [
- {url: '/first/url', name: 'first name', target: '_blank'},
- {url: '/second/url', name: 'second name', target: '_blank'},
- {url: '/third/url', name: 'third name', target: '_blank'},
- ] as TopMenuItemInfo[],
- };
-
- stubRestApi('getDefaultPreferences').returns(Promise.resolve(originalMenu));
-
- const updatedMenu = [
- {url: '/first/url', name: 'first name', target: '_blank'},
- {url: '/second/url', name: 'second name', target: '_blank'},
- {url: '/third/url', name: 'third name', target: '_blank'},
- {url: '/fourth/url', name: 'fourth name', target: '_blank'},
- ];
-
- element.set('_localMenu', updatedMenu);
-
- await element._handleResetMenuButton();
- assertMenusEqual(element._localMenu, originalMenu.my);
- });
-
- test('test that reset button is called', () => {
- const overlayOpen = sinon.stub(element, '_handleResetMenuButton');
-
- MockInteractions.tap(element.$.resetButton);
-
- assert.isTrue(overlayOpen.called);
- });
-
- test('_showHttpAuth', () => {
+ test('showHttpAuth', async () => {
const serverConfig: ServerInfo = {
...createServerInfo(),
auth: {
@@ -487,41 +823,48 @@ suite('gr-settings-view tests', () => {
} as AuthInfo,
};
- assert.isTrue(element._showHttpAuth(serverConfig));
+ element.serverConfig = serverConfig;
+ await element.updateComplete;
+ assert.isTrue(element.showHttpAuth());
- serverConfig.auth.git_basic_auth_policy = 'HTTP_LDAP';
- assert.isTrue(element._showHttpAuth(serverConfig));
+ element.serverConfig.auth.git_basic_auth_policy = 'HTTP_LDAP';
+ await element.updateComplete;
+ assert.isTrue(element.showHttpAuth());
- serverConfig.auth.git_basic_auth_policy = 'LDAP';
- assert.isFalse(element._showHttpAuth(serverConfig));
+ element.serverConfig.auth.git_basic_auth_policy = 'LDAP';
+ await element.updateComplete;
+ assert.isFalse(element.showHttpAuth());
- serverConfig.auth.git_basic_auth_policy = 'OAUTH';
- assert.isFalse(element._showHttpAuth(serverConfig));
+ element.serverConfig.auth.git_basic_auth_policy = 'OAUTH';
+ await element.updateComplete;
+ assert.isFalse(element.showHttpAuth());
- assert.isFalse(element._showHttpAuth(undefined));
+ element.serverConfig = undefined;
+ await element.updateComplete;
+ assert.isFalse(element.showHttpAuth());
});
- suite('_getFilterDocsLink', () => {
+ suite('getFilterDocsLink', () => {
test('with http: docs base URL', () => {
const base = 'http://example.com/';
- const result = element._getFilterDocsLink(base);
+ const result = element.getFilterDocsLink(base);
assert.equal(result, 'http://example.com/user-notify.html');
});
test('with http: docs base URL without slash', () => {
const base = 'http://example.com';
- const result = element._getFilterDocsLink(base);
+ const result = element.getFilterDocsLink(base);
assert.equal(result, 'http://example.com/user-notify.html');
});
test('with https: docs base URL', () => {
const base = 'https://example.com/';
- const result = element._getFilterDocsLink(base);
+ const result = element.getFilterDocsLink(base);
assert.equal(result, 'https://example.com/user-notify.html');
});
test('without docs base URL', () => {
- const result = element._getFilterDocsLink(null);
+ const result = element.getFilterDocsLink(null);
assert.equal(
result,
'https://gerrit-review.googlesource.com/' +
@@ -531,7 +874,7 @@ suite('gr-settings-view tests', () => {
test('ignores non HTTP links', () => {
const base = 'javascript://alert("evil");';
- const result = element._getFilterDocsLink(base);
+ const result = element.getFilterDocsLink(base);
assert.equal(
result,
'https://gerrit-review.googlesource.com/' +
@@ -548,7 +891,7 @@ suite('gr-settings-view tests', () => {
let emailEditorLoadDataStub: sinon.SinonStub;
setup(() => {
- emailEditorLoadDataStub = sinon.stub(element.$.emailEditor, 'loadData');
+ emailEditorLoadDataStub = sinon.stub(element.emailEditor, 'loadData');
confirmEmailStub = stubRestApi('confirmEmail').returns(
new Promise(resolve => {
resolveConfirm = resolve;
@@ -556,7 +899,7 @@ suite('gr-settings-view tests', () => {
);
element.params = {view: GerritView.SETTINGS, emailToken: 'foo'};
- element.connectedCallback();
+ element.firstUpdated();
});
test('it is used to confirm email via rest API', () => {
@@ -585,7 +928,7 @@ suite('gr-settings-view tests', () => {
);
assert.deepEqual(
(dispatchEventSpy.lastCall.args[0] as CustomEvent).detail,
- {message: 'bar'}
+ {message: 'bar', showDismiss: true}
);
});
});