Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-10-27 12:07:24 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-10-27 12:07:24 +0300
commit563240e444eab70551083c6114fc0726df412e52 (patch)
treed470cd1c7e7d5eda4160e1c1b7988abe6a108ba6 /spec/frontend
parent2af65f9153baf358bfc6acdd8de9652b39264497 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend')
-rw-r--r--spec/frontend/__helpers__/emoji.js4
-rw-r--r--spec/frontend/awards_handler_spec.js31
-rw-r--r--spec/frontend/behaviors/gl_emoji_spec.js12
-rw-r--r--spec/frontend/behaviors/load_startup_css_spec.js48
-rw-r--r--spec/frontend/emoji/index_spec.js69
-rw-r--r--spec/frontend/fixtures/startup_css.rb89
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="&quot;x=&quot;y&quot; onload=&quot;alert(document.location.href)&quot;" data-unicode-version="x"><img class="emoji" title=":&quot;x=&quot;y&quot; onload=&quot;alert(document.location.href)&quot;:" alt=":&quot;x=&quot;y&quot; onload=&quot;alert(document.location.href)&quot;:" src="/-/emojis/2/grey_question.png" align="absmiddle"></gl-emoji>',
+ '<gl-emoji data-name="&quot;x=&quot;y&quot; onload=&quot;alert(document.location.href)&quot;" data-unicode-version="x"><img class="emoji" title=":&quot;x=&quot;y&quot; onload=&quot;alert(document.location.href)&quot;:" alt=":&quot;x=&quot;y&quot; onload=&quot;alert(document.location.href)&quot;:" 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