diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-27 12:07:24 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-10-27 12:07:24 +0300 |
commit | 563240e444eab70551083c6114fc0726df412e52 (patch) | |
tree | d470cd1c7e7d5eda4160e1c1b7988abe6a108ba6 /spec/frontend | |
parent | 2af65f9153baf358bfc6acdd8de9652b39264497 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend')
-rw-r--r-- | spec/frontend/__helpers__/emoji.js | 4 | ||||
-rw-r--r-- | spec/frontend/awards_handler_spec.js | 31 | ||||
-rw-r--r-- | spec/frontend/behaviors/gl_emoji_spec.js | 12 | ||||
-rw-r--r-- | spec/frontend/behaviors/load_startup_css_spec.js | 48 | ||||
-rw-r--r-- | spec/frontend/emoji/index_spec.js | 69 | ||||
-rw-r--r-- | spec/frontend/fixtures/startup_css.rb | 89 |
6 files changed, 53 insertions, 200 deletions
diff --git a/spec/frontend/__helpers__/emoji.js b/spec/frontend/__helpers__/emoji.js index 6c9291bdc8f..ef86eba1d1a 100644 --- a/spec/frontend/__helpers__/emoji.js +++ b/spec/frontend/__helpers__/emoji.js @@ -95,10 +95,10 @@ export const emojiFixtureMap = { export const mockEmojiData = Object.keys(emojiFixtureMap).reduce((acc, k) => { const { moji: e, unicodeVersion: u, category: c, description: d } = emojiFixtureMap[k]; - acc[k] = { name: k, e, u, c, d }; + acc.push({ n: k, e, u, c, d }); return acc; -}, {}); +}, []); export function clearEmojiMock() { localStorage.clear(); diff --git a/spec/frontend/awards_handler_spec.js b/spec/frontend/awards_handler_spec.js index c2b7906d0d6..c2a878e661d 100644 --- a/spec/frontend/awards_handler_spec.js +++ b/spec/frontend/awards_handler_spec.js @@ -13,62 +13,71 @@ let awardsHandler = null; describe('AwardsHandler', () => { useFakeRequestAnimationFrame(); - const emojiData = { - '8ball': { + const emojiData = [ + { + n: '8ball', c: 'activity', e: '🎱', d: 'billiards', u: '6.0', }, - grinning: { + { + n: 'grinning', c: 'people', e: '😀', d: 'grinning face', u: '6.1', }, - angel: { + { + n: 'angel', c: 'people', e: '👼', d: 'baby angel', u: '6.0', }, - anger: { + { + n: 'anger', c: 'symbols', e: '💢', d: 'anger symbol', u: '6.0', }, - alien: { + { + n: 'alien', c: 'people', e: '👽', d: 'extraterrestrial alien', u: '6.0', }, - sunglasses: { + { + n: 'sunglasses', c: 'people', e: '😎', d: 'smiling face with sunglasses', u: '6.0', }, - grey_question: { + { + n: 'grey_question', c: 'symbols', e: '❔', d: 'white question mark ornament', u: '6.0', }, - thumbsup: { + { + n: 'thumbsup', c: 'people', e: '👍', d: 'thumbs up sign', u: '6.0', }, - thumbsdown: { + { + n: 'thumbsdown', c: 'people', e: '👎', d: 'thumbs down sign', u: '6.0', }, - }; + ]; const openAndWaitForEmojiMenu = (sel = '.js-add-award') => { $(sel).eq(0).click(); diff --git a/spec/frontend/behaviors/gl_emoji_spec.js b/spec/frontend/behaviors/gl_emoji_spec.js index c7f4fce0e4c..ef40179c23b 100644 --- a/spec/frontend/behaviors/gl_emoji_spec.js +++ b/spec/frontend/behaviors/gl_emoji_spec.js @@ -15,20 +15,22 @@ jest.mock('~/lib/graphql', () => { }); describe('gl_emoji', () => { - const emojiData = { - grey_question: { + const emojiData = [ + { + n: 'grey_question', c: 'symbols', e: '❔', d: 'white question mark ornament', u: '6.0', }, - bomb: { + { + n: 'bomb', c: 'objects', e: '💣', d: 'bomb', u: '6.0', }, - }; + ]; beforeAll(() => { jest.spyOn(EmojiUnicodeSupport, 'default').mockReturnValue(true); @@ -119,7 +121,7 @@ describe('gl_emoji', () => { await waitForPromises(); expect(glEmojiElement.outerHTML).toBe( - '<gl-emoji data-name=""x="y" onload="alert(document.location.href)"" data-unicode-version="x"><img class="emoji" title=":"x="y" onload="alert(document.location.href)":" alt=":"x="y" onload="alert(document.location.href)":" src="/-/emojis/2/grey_question.png" align="absmiddle"></gl-emoji>', + '<gl-emoji data-name=""x="y" onload="alert(document.location.href)"" data-unicode-version="x"><img class="emoji" title=":"x="y" onload="alert(document.location.href)":" alt=":"x="y" onload="alert(document.location.href)":" src="/-/emojis/3/grey_question.png" align="absmiddle"></gl-emoji>', ); }); diff --git a/spec/frontend/behaviors/load_startup_css_spec.js b/spec/frontend/behaviors/load_startup_css_spec.js deleted file mode 100644 index e9e4c06732f..00000000000 --- a/spec/frontend/behaviors/load_startup_css_spec.js +++ /dev/null @@ -1,48 +0,0 @@ -import { setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures'; -import { loadStartupCSS } from '~/behaviors/load_startup_css'; - -describe('behaviors/load_startup_css', () => { - let loadListener; - - const setupListeners = () => { - document - .querySelectorAll('link') - .forEach((x) => x.addEventListener('load', () => loadListener(x))); - }; - - beforeEach(() => { - loadListener = jest.fn(); - - setHTMLFixture(` - <meta charset="utf-8" /> - <link media="print" src="./lorem-print.css" /> - <link media="print" src="./ipsum-print.css" /> - <link media="all" src="./dolar-all.css" /> - `); - - setupListeners(); - - loadStartupCSS(); - }); - - afterEach(() => { - resetHTMLFixture(); - }); - - it('does nothing at first', () => { - expect(loadListener).not.toHaveBeenCalled(); - }); - - describe('on window load', () => { - beforeEach(() => { - window.dispatchEvent(new Event('load')); - }); - - it('dispatches load to the print links', () => { - expect(loadListener.mock.calls.map(([el]) => el.getAttribute('src'))).toEqual([ - './lorem-print.css', - './ipsum-print.css', - ]); - }); - }); -}); diff --git a/spec/frontend/emoji/index_spec.js b/spec/frontend/emoji/index_spec.js index 1a12bd303f1..a4affdfb7ce 100644 --- a/spec/frontend/emoji/index_spec.js +++ b/spec/frontend/emoji/index_spec.js @@ -1,6 +1,5 @@ import { emojiFixtureMap, - mockEmojiData, initEmojiMock, validEmoji, invalidEmoji, @@ -14,7 +13,7 @@ import { getEmojiInfo, sortEmoji, initEmojiMap, - getAllEmoji, + getEmojiMap, emojiFallbackImageSrc, loadCustomEmojiWithNames, } from '~/emoji'; @@ -90,7 +89,7 @@ describe('emoji', () => { it('should contain valid emoji', async () => { await initEmojiMap(); - const allEmoji = Object.keys(getAllEmoji()); + const allEmoji = Object.keys(getEmojiMap()); Object.keys(validEmoji).forEach((key) => { expect(allEmoji.includes(key)).toBe(true); }); @@ -99,34 +98,11 @@ describe('emoji', () => { it('should not contain invalid emoji', async () => { await initEmojiMap(); - const allEmoji = Object.keys(getAllEmoji()); + const allEmoji = Object.keys(getEmojiMap()); Object.keys(invalidEmoji).forEach((key) => { expect(allEmoji.includes(key)).toBe(false); }); }); - - it('fixes broken pride emoji', async () => { - clearEmojiMock(); - await initEmojiMock({ - gay_pride_flag: { - c: 'flags', - // Without a zero-width joiner - e: '🏳🌈', - name: 'gay_pride_flag', - u: '6.0', - }, - }); - - expect(getAllEmoji()).toEqual({ - gay_pride_flag: { - c: 'flags', - // With a zero-width joiner - e: '🏳️🌈', - name: 'gay_pride_flag', - u: '6.0', - }, - }); - }); }); describe('glEmojiTag', () => { @@ -448,11 +424,11 @@ describe('emoji', () => { describe('getEmojiInfo', () => { it.each(['atom', 'five', 'black_heart'])("should return a correct emoji for '%s'", (name) => { - expect(getEmojiInfo(name)).toEqual(mockEmojiData[name]); + expect(getEmojiInfo(name)).toEqual(getEmojiMap()[name]); }); it('should return fallback emoji by default', () => { - expect(getEmojiInfo('atjs')).toEqual(mockEmojiData.grey_question); + expect(getEmojiInfo('atjs')).toEqual(getEmojiMap().grey_question); }); it('should return null when fallback is false', () => { @@ -461,7 +437,7 @@ describe('emoji', () => { describe('when query is undefined', () => { it('should return fallback emoji by default', () => { - expect(getEmojiInfo()).toEqual(mockEmojiData.grey_question); + expect(getEmojiInfo()).toEqual(getEmojiMap().grey_question); }); it('should return null when fallback is false', () => { @@ -489,9 +465,9 @@ describe('emoji', () => { } return { - emoji: mockEmojiData[name], + emoji: getEmojiMap()[name], field: 'd', - fieldValue: mockEmojiData[name].d, + fieldValue: getEmojiMap()[name].d, score, }; }) @@ -542,7 +518,7 @@ describe('emoji', () => { const { field, score, fieldValue, name } = item; return { - emoji: mockEmojiData[name], + emoji: getEmojiMap()[name], field, fieldValue, score, @@ -669,9 +645,9 @@ describe('emoji', () => { const { field, score, name } = item; return { - emoji: mockEmojiData[name], + emoji: getEmojiMap()[name], field, - fieldValue: mockEmojiData[name][field], + fieldValue: getEmojiMap()[name][field], score, }; }); @@ -737,7 +713,7 @@ describe('emoji', () => { it.each` emoji | src - ${'thumbsup'} | ${'/-/emojis/2/thumbsup.png'} + ${'thumbsup'} | ${'/-/emojis/3/thumbsup.png'} ${'parrot'} | ${'parrot.gif'} `('returns $src for emoji with name $emoji', ({ emoji, src }) => { expect(emojiFallbackImageSrc(emoji)).toBe(src); @@ -757,7 +733,7 @@ describe('emoji', () => { it('returns empty object', async () => { const result = await loadCustomEmojiWithNames(); - expect(result).toEqual({}); + expect(result).toEqual({ emojis: {}, names: [] }); }); }); @@ -769,7 +745,7 @@ describe('emoji', () => { it('returns empty object', async () => { const result = await loadCustomEmojiWithNames(); - expect(result).toEqual({}); + expect(result).toEqual({ emojis: {}, names: [] }); }); }); @@ -778,14 +754,17 @@ describe('emoji', () => { const result = await loadCustomEmojiWithNames(); expect(result).toEqual({ - parrot: { - c: 'custom', - d: 'parrot', - e: undefined, - name: 'parrot', - src: 'parrot.gif', - u: 'custom', + emojis: { + parrot: { + c: 'custom', + d: 'parrot', + e: undefined, + name: 'parrot', + src: 'parrot.gif', + u: 'custom', + }, }, + names: ['parrot'], }); }); }); diff --git a/spec/frontend/fixtures/startup_css.rb b/spec/frontend/fixtures/startup_css.rb deleted file mode 100644 index 83e02470321..00000000000 --- a/spec/frontend/fixtures/startup_css.rb +++ /dev/null @@ -1,89 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'Startup CSS fixtures', type: :controller do - include JavaScriptFixturesHelpers - - let(:use_full_html) { true } - - render_views - - shared_examples 'startup css project fixtures' do |type| - let(:user) { create(:user, :admin) } - let(:project) { create(:project, :public, :repository, description: 'Code and stuff', creator: user) } - - before do - # We want vNext badge to be included and com/canary don't remove/hide any other elements. - # This is why we're turning com and canary on by default for now. - allow(Gitlab).to receive(:canary?).and_return(true) - sign_in(user) - end - - it "startup_css/project-#{type}.html" do - get :show, params: { - namespace_id: project.namespace.to_param, - id: project - } - - expect(response).to be_successful - end - - it "startup_css/project-#{type}-signed-out.html" do - sign_out(user) - - get :show, params: { - namespace_id: project.namespace.to_param, - id: project - } - - expect(response).to be_successful - end - - # This ensures that the correct css is generated for super sidebar - it "startup_css/project-#{type}-super-sidebar.html" do - user.update!(use_new_navigation: true) - - get :show, params: { - namespace_id: project.namespace.to_param, - id: project - } - - expect(response).to be_successful - end - end - - describe ProjectsController, '(Startup CSS fixtures)', :saas, type: :controller do - it_behaves_like 'startup css project fixtures', 'general' - end - - describe ProjectsController, '(Startup CSS fixtures)', :saas, type: :controller do - before do - user.update!(theme_id: 11) - end - - it_behaves_like 'startup css project fixtures', 'dark' - end - - describe SessionsController, '(Startup CSS fixtures)', type: :controller do - include DeviseHelpers - - before do - set_devise_mapping(context: request) - end - - it 'startup_css/sign-in.html' do - get :new - - expect(response).to be_successful - end - - it 'startup_css/sign-in-old.html' do - stub_feature_flags(restyle_login_page: false) - - get :new - - expect(response).to be_successful - end - end -end |