summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClement Ho <clemmakesapps@gmail.com>2018-06-20 21:49:03 +0000
committerClement Ho <clemmakesapps@gmail.com>2018-06-20 21:49:03 +0000
commite40aa397700f997b320d9e6299ab3b15b75c77a8 (patch)
treecf1747f7fbca1de5f3afb6af248ee633a4485743
parentd67590bcce65453eecbf9e85a2de51daf8987422 (diff)
parent8af62a64c4e7cae9d62e13e1c026948f02675bfa (diff)
downloadgitlab-ce-e40aa397700f997b320d9e6299ab3b15b75c77a8.tar.gz
Merge branch 'sh-fallback-to-first-tab-signin' into 'master'
Fall back to the first sign-in tab if the local storage value is bad See merge request gitlab-org/gitlab-ce!20050
-rw-r--r--app/assets/javascripts/pages/sessions/new/signin_tabs_memoizer.js5
-rw-r--r--spec/javascripts/signin_tabs_memoizer_spec.js15
2 files changed, 20 insertions, 0 deletions
diff --git a/app/assets/javascripts/pages/sessions/new/signin_tabs_memoizer.js b/app/assets/javascripts/pages/sessions/new/signin_tabs_memoizer.js
index d321892d2d2..1e7c29aefaa 100644
--- a/app/assets/javascripts/pages/sessions/new/signin_tabs_memoizer.js
+++ b/app/assets/javascripts/pages/sessions/new/signin_tabs_memoizer.js
@@ -37,6 +37,11 @@ export default class SigninTabsMemoizer {
const tab = document.querySelector(`${this.tabSelector} a[href="${anchorName}"]`);
if (tab) {
tab.click();
+ } else {
+ const firstTab = document.querySelector(`${this.tabSelector} a`);
+ if (firstTab) {
+ firstTab.click();
+ }
}
}
}
diff --git a/spec/javascripts/signin_tabs_memoizer_spec.js b/spec/javascripts/signin_tabs_memoizer_spec.js
index 423432c9e5d..9d3905fa1d8 100644
--- a/spec/javascripts/signin_tabs_memoizer_spec.js
+++ b/spec/javascripts/signin_tabs_memoizer_spec.js
@@ -45,6 +45,21 @@ import SigninTabsMemoizer from '~/pages/sessions/new/signin_tabs_memoizer';
expect(fakeTab.click).toHaveBeenCalled();
});
+ it('clicks the first tab if value in local storage is bad', () => {
+ createMemoizer().saveData('#bogus');
+ const fakeTab = {
+ click: () => {},
+ };
+ spyOn(document, 'querySelector').and.callFake(selector => (selector === `${tabSelector} a[href="#bogus"]` ? null : fakeTab));
+ spyOn(fakeTab, 'click');
+
+ memo.bootstrap();
+
+ // verify that triggers click on stored selector and fallback
+ expect(document.querySelector.calls.allArgs()).toEqual([['ul.new-session-tabs a[href="#bogus"]'], ['ul.new-session-tabs a']]);
+ expect(fakeTab.click).toHaveBeenCalled();
+ });
+
it('saves last selected tab on change', () => {
createMemoizer();