diff options
Diffstat (limited to 'spec/frontend')
-rw-r--r-- | spec/frontend/fixtures/static/oauth_remember_me.html | 21 | ||||
-rw-r--r-- | spec/frontend/oauth_remember_me_spec.js | 36 | ||||
-rw-r--r-- | spec/frontend/pages/sessions/new/preserve_url_fragment_spec.js | 90 | ||||
-rw-r--r-- | spec/frontend/repository/components/commit_info_spec.js | 21 | ||||
-rw-r--r-- | spec/frontend/tracking/internal_events_spec.js | 15 |
5 files changed, 93 insertions, 90 deletions
diff --git a/spec/frontend/fixtures/static/oauth_remember_me.html b/spec/frontend/fixtures/static/oauth_remember_me.html deleted file mode 100644 index d7519dd695f..00000000000 --- a/spec/frontend/fixtures/static/oauth_remember_me.html +++ /dev/null @@ -1,21 +0,0 @@ -<div class="js-oauth-login"> - <input id="remember_me_omniauth" type="checkbox" /> - - <form method="post" action="http://example.com/"> - <button class="twitter" type="submit"> - <span>Twitter</span> - </button> - </form> - - <form method="post" action="http://example.com/"> - <button class="github" type="submit"> - <span>GitHub</span> - </button> - </form> - - <form method="post" action="http://example.com/?redirect_fragment=L1"> - <button class="facebook" type="submit"> - <span>Facebook</span> - </button> - </form> -</div> diff --git a/spec/frontend/oauth_remember_me_spec.js b/spec/frontend/oauth_remember_me_spec.js deleted file mode 100644 index 4fea216302f..00000000000 --- a/spec/frontend/oauth_remember_me_spec.js +++ /dev/null @@ -1,36 +0,0 @@ -import $ from 'jquery'; -import htmlOauthRememberMe from 'test_fixtures_static/oauth_remember_me.html'; -import { setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures'; -import OAuthRememberMe from '~/pages/sessions/new/oauth_remember_me'; - -describe('OAuthRememberMe', () => { - const findFormAction = (selector) => { - return $(`.js-oauth-login ${selector}`).parent('form').attr('action'); - }; - - beforeEach(() => { - setHTMLFixture(htmlOauthRememberMe); - - new OAuthRememberMe({ container: $('.js-oauth-login') }).bindEvents(); - }); - - afterEach(() => { - resetHTMLFixture(); - }); - - it('adds and removes the "remember_me" query parameter from all OAuth login buttons', () => { - $('.js-oauth-login #remember_me_omniauth').click(); - - expect(findFormAction('.twitter')).toBe('http://example.com/?remember_me=1'); - expect(findFormAction('.github')).toBe('http://example.com/?remember_me=1'); - expect(findFormAction('.facebook')).toBe( - 'http://example.com/?redirect_fragment=L1&remember_me=1', - ); - - $('.js-oauth-login #remember_me_omniauth').click(); - - expect(findFormAction('.twitter')).toBe('http://example.com/'); - expect(findFormAction('.github')).toBe('http://example.com/'); - expect(findFormAction('.facebook')).toBe('http://example.com/?redirect_fragment=L1'); - }); -}); diff --git a/spec/frontend/pages/sessions/new/preserve_url_fragment_spec.js b/spec/frontend/pages/sessions/new/preserve_url_fragment_spec.js index 7607381a981..60cf5dc65a2 100644 --- a/spec/frontend/pages/sessions/new/preserve_url_fragment_spec.js +++ b/spec/frontend/pages/sessions/new/preserve_url_fragment_spec.js @@ -1,13 +1,12 @@ -import $ from 'jquery'; import htmlSessionsNew from 'test_fixtures/sessions/new.html'; import { setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures'; -import preserveUrlFragment from '~/pages/sessions/new/preserve_url_fragment'; +import { + appendUrlFragment, + appendRedirectQuery, + toggleRememberMeQuery, +} from '~/pages/sessions/new/preserve_url_fragment'; describe('preserve_url_fragment', () => { - const findFormAction = (selector) => { - return $(`.js-oauth-login ${selector}`).parent('form').attr('action'); - }; - beforeEach(() => { setHTMLFixture(htmlSessionsNew); }); @@ -16,41 +15,74 @@ describe('preserve_url_fragment', () => { resetHTMLFixture(); }); - it('adds the url fragment to the login form actions', () => { - preserveUrlFragment('#L65'); + describe('non-OAuth login forms', () => { + describe('appendUrlFragment', () => { + const findFormAction = () => document.querySelector('.js-non-oauth-login form').action; - expect($('#new_user').attr('action')).toBe('http://test.host/users/sign_in#L65'); - }); + it('adds the url fragment to the login form actions', () => { + appendUrlFragment('#L65'); - it('does not add an empty url fragment to the login form actions', () => { - preserveUrlFragment(); + expect(findFormAction()).toBe('http://test.host/users/sign_in#L65'); + }); - expect($('#new_user').attr('action')).toBe('http://test.host/users/sign_in'); + it('does not add an empty url fragment to the login form actions', () => { + appendUrlFragment(); + + expect(findFormAction()).toBe('http://test.host/users/sign_in'); + }); + }); }); - it('does not add an empty query parameter to OmniAuth login buttons', () => { - preserveUrlFragment(); + describe('OAuth login forms', () => { + const findFormAction = (selector) => + document.querySelector(`.js-oauth-login #oauth-login-${selector}`).parentElement.action; - expect(findFormAction('#oauth-login-auth0')).toBe('http://test.host/users/auth/auth0'); - }); + describe('appendRedirectQuery', () => { + it('does not add an empty query parameter to the login form actions', () => { + appendRedirectQuery(); + + expect(findFormAction('auth0')).toBe('http://test.host/users/auth/auth0'); + }); + + describe('adds "redirect_fragment" query parameter to the login form actions', () => { + it('when "remember_me" is not present', () => { + appendRedirectQuery('#L65'); - describe('adds "redirect_fragment" query parameter to OmniAuth login buttons', () => { - it('when "remember_me" is not present', () => { - preserveUrlFragment('#L65'); + expect(findFormAction('auth0')).toBe( + 'http://test.host/users/auth/auth0?redirect_fragment=L65', + ); + }); - expect(findFormAction('#oauth-login-auth0')).toBe( - 'http://test.host/users/auth/auth0?redirect_fragment=L65', - ); + it('when "remember_me" is present', () => { + document + .querySelectorAll('form') + .forEach((form) => form.setAttribute('action', `${form.action}?remember_me=1`)); + + appendRedirectQuery('#L65'); + + expect(findFormAction('auth0')).toBe( + 'http://test.host/users/auth/auth0?remember_me=1&redirect_fragment=L65', + ); + }); + }); }); - it('when "remember-me" is present', () => { - $('.js-oauth-login form').attr('action', (i, href) => `${href}?remember_me=1`); + describe('toggleRememberMeQuery', () => { + const rememberMe = () => document.querySelector('#js-remember-me-omniauth'); + + it('toggles "remember_me" query parameter', () => { + toggleRememberMeQuery(); + + expect(findFormAction('auth0')).toBe('http://test.host/users/auth/auth0'); + + rememberMe().click(); + + expect(findFormAction('auth0')).toBe('http://test.host/users/auth/auth0?remember_me=1'); - preserveUrlFragment('#L65'); + rememberMe().click(); - expect(findFormAction('#oauth-login-auth0')).toBe( - 'http://test.host/users/auth/auth0?remember_me=1&redirect_fragment=L65', - ); + expect(findFormAction('auth0')).toBe('http://test.host/users/auth/auth0'); + }); }); }); }); diff --git a/spec/frontend/repository/components/commit_info_spec.js b/spec/frontend/repository/components/commit_info_spec.js index 4e570346d97..f868bc0623e 100644 --- a/spec/frontend/repository/components/commit_info_spec.js +++ b/spec/frontend/repository/components/commit_info_spec.js @@ -16,14 +16,15 @@ const commit = { const findTextExpander = () => wrapper.findComponent(GlButton); const findUserLink = () => wrapper.findByText(commit.author.name); +const findCommitterWrapper = () => wrapper.findByTestId('committer'); const findUserAvatarLink = () => wrapper.findComponent(UserAvatarLink); const findAuthorName = () => wrapper.findByText(`${commit.authorName} authored`); const findCommitRowDescription = () => wrapper.find('pre'); const findTitleHtml = () => wrapper.findByText(commit.titleHtml); -const createComponent = async ({ commitMock = {}, prevBlameLink } = {}) => { +const createComponent = async ({ commitMock = {}, prevBlameLink, span = 3 } = {}) => { wrapper = shallowMountExtended(CommitInfo, { - propsData: { commit: { ...commit, ...commitMock }, prevBlameLink }, + propsData: { commit: { ...commit, ...commitMock }, prevBlameLink, span }, }); await nextTick(); @@ -46,6 +47,22 @@ describe('Repository last commit component', () => { expect(findAuthorName().exists()).toBe(true); }); + it('truncates author name when commit spans less than 3 lines', () => { + createComponent({ span: 2 }); + + expect(findCommitterWrapper().classes()).toEqual([ + 'committer', + 'gl-flex-basis-full', + 'gl-display-inline-flex', + ]); + expect(findUserLink().classes()).toEqual([ + 'commit-author-link', + 'js-user-link', + 'gl-display-inline-block', + 'gl-text-truncate', + ]); + }); + it('does not render description expander when description is null', () => { createComponent(); diff --git a/spec/frontend/tracking/internal_events_spec.js b/spec/frontend/tracking/internal_events_spec.js index 295b08f4b1c..194d33ae6b9 100644 --- a/spec/frontend/tracking/internal_events_spec.js +++ b/spec/frontend/tracking/internal_events_spec.js @@ -4,6 +4,7 @@ import InternalEvents from '~/tracking/internal_events'; import { LOAD_INTERNAL_EVENTS_SELECTOR } from '~/tracking/constants'; import * as utils from '~/tracking/utils'; import { Tracker } from '~/tracking/tracker'; +import Tracking from '~/tracking'; jest.mock('~/api', () => ({ trackInternalEvent: jest.fn(), @@ -20,13 +21,23 @@ const event = 'TestEvent'; describe('InternalEvents', () => { describe('trackEvent', () => { + const category = 'TestCategory'; + it('trackEvent calls API.trackInternalEvent with correct arguments', () => { - InternalEvents.trackEvent(event); + InternalEvents.trackEvent(event, category); expect(API.trackInternalEvent).toHaveBeenCalledTimes(1); expect(API.trackInternalEvent).toHaveBeenCalledWith(event); }); + it('trackEvent calls Tracking.event with correct arguments including category', () => { + jest.spyOn(Tracking, 'event').mockImplementation(() => {}); + + InternalEvents.trackEvent(event, category); + + expect(Tracking.event).toHaveBeenCalledWith(category, event, expect.any(Object)); + }); + it('trackEvent calls trackBrowserSDK with correct arguments', () => { jest.spyOn(InternalEvents, 'trackBrowserSDK').mockImplementation(() => {}); @@ -63,7 +74,7 @@ describe('InternalEvents', () => { await wrapper.findByTestId('button').trigger('click'); expect(trackEventSpy).toHaveBeenCalledTimes(1); - expect(trackEventSpy).toHaveBeenCalledWith(event); + expect(trackEventSpy).toHaveBeenCalledWith(event, undefined); }); }); |