summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-04-01 15:14:27 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-04-01 15:14:27 +0000
commitafbaf78b0d819326741a01b093bdbc4702570417 (patch)
treea16a6f2a8fcc18e60f25ac72df6ab22cfe0eae79 /spec
parent38b3003b67db3f2eadfa81fd28b13d168f665766 (diff)
downloadgitlab-ce-afbaf78b0d819326741a01b093bdbc4702570417.tar.gz
Add latest changes from gitlab-org/gitlab@13-10-stable-ee
Diffstat (limited to 'spec')
-rw-r--r--spec/fixtures/api/schemas/public_api/v4/packages/composer/index_v2.json14
-rw-r--r--spec/frontend/__helpers__/test_constants.js3
-rw-r--r--spec/frontend/emoji/components/utils_spec.js56
-rw-r--r--spec/frontend/vue_shared/components/content_viewer/viewers/image_viewer_spec.js18
-rw-r--r--spec/helpers/commits_helper_spec.rb10
-rw-r--r--spec/presenters/packages/composer/packages_presenter_spec.rb17
-rw-r--r--spec/support/shared_examples/requests/api/composer_packages_shared_examples.rb24
7 files changed, 129 insertions, 13 deletions
diff --git a/spec/fixtures/api/schemas/public_api/v4/packages/composer/index_v2.json b/spec/fixtures/api/schemas/public_api/v4/packages/composer/index_v2.json
new file mode 100644
index 00000000000..6b77b758bfd
--- /dev/null
+++ b/spec/fixtures/api/schemas/public_api/v4/packages/composer/index_v2.json
@@ -0,0 +1,14 @@
+{
+ "type": "object",
+ "required": ["packages", "metadata-url"],
+ "properties": {
+ "packages": {
+ "type": "array",
+ "items": { "type": "integer" }
+ },
+ "metadata-url": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+}
diff --git a/spec/frontend/__helpers__/test_constants.js b/spec/frontend/__helpers__/test_constants.js
index 69b78f556aa..628b9b054d3 100644
--- a/spec/frontend/__helpers__/test_constants.js
+++ b/spec/frontend/__helpers__/test_constants.js
@@ -6,6 +6,8 @@ const DUMMY_IMAGE_URL = `${FIXTURES_PATH}/static/images/one_white_pixel.png`;
const GREEN_BOX_IMAGE_URL = `${FIXTURES_PATH}/static/images/green_box.png`;
const RED_BOX_IMAGE_URL = `${FIXTURES_PATH}/static/images/red_box.png`;
+const DUMMY_IMAGE_BLOB_PATH = 'SpongeBlob.png';
+
// NOTE: module.exports is needed so that this file can be used
// by environment.js
//
@@ -16,4 +18,5 @@ module.exports = {
DUMMY_IMAGE_URL,
GREEN_BOX_IMAGE_URL,
RED_BOX_IMAGE_URL,
+ DUMMY_IMAGE_BLOB_PATH,
};
diff --git a/spec/frontend/emoji/components/utils_spec.js b/spec/frontend/emoji/components/utils_spec.js
new file mode 100644
index 00000000000..36521eb1051
--- /dev/null
+++ b/spec/frontend/emoji/components/utils_spec.js
@@ -0,0 +1,56 @@
+import Cookies from 'js-cookie';
+import { getFrequentlyUsedEmojis, addToFrequentlyUsed } from '~/emoji/components/utils';
+
+jest.mock('js-cookie');
+
+describe('getFrequentlyUsedEmojis', () => {
+ it('it returns null when no saved emojis set', () => {
+ jest.spyOn(Cookies, 'get').mockReturnValue(null);
+
+ expect(getFrequentlyUsedEmojis()).toBe(null);
+ });
+
+ it('it returns frequently used emojis object', () => {
+ jest.spyOn(Cookies, 'get').mockReturnValue('thumbsup,thumbsdown');
+
+ expect(getFrequentlyUsedEmojis()).toEqual({
+ frequently_used: {
+ emojis: [['thumbsup', 'thumbsdown']],
+ top: 0,
+ height: 71,
+ },
+ });
+ });
+});
+
+describe('addToFrequentlyUsed', () => {
+ it('sets cookie value', () => {
+ jest.spyOn(Cookies, 'get').mockReturnValue(null);
+
+ addToFrequentlyUsed('thumbsup');
+
+ expect(Cookies.set).toHaveBeenCalledWith('frequently_used_emojis', 'thumbsup', {
+ expires: 365,
+ });
+ });
+
+ it('sets cookie value to include previously set cookie value', () => {
+ jest.spyOn(Cookies, 'get').mockReturnValue('thumbsdown');
+
+ addToFrequentlyUsed('thumbsup');
+
+ expect(Cookies.set).toHaveBeenCalledWith('frequently_used_emojis', 'thumbsdown,thumbsup', {
+ expires: 365,
+ });
+ });
+
+ it('sets cookie value with uniq values', () => {
+ jest.spyOn(Cookies, 'get').mockReturnValue('thumbsup');
+
+ addToFrequentlyUsed('thumbsup');
+
+ expect(Cookies.set).toHaveBeenCalledWith('frequently_used_emojis', 'thumbsup', {
+ expires: 365,
+ });
+ });
+});
diff --git a/spec/frontend/vue_shared/components/content_viewer/viewers/image_viewer_spec.js b/spec/frontend/vue_shared/components/content_viewer/viewers/image_viewer_spec.js
index af3b63ad7e5..974d06a6ed4 100644
--- a/spec/frontend/vue_shared/components/content_viewer/viewers/image_viewer_spec.js
+++ b/spec/frontend/vue_shared/components/content_viewer/viewers/image_viewer_spec.js
@@ -1,12 +1,12 @@
-import { mount } from '@vue/test-utils';
-import { GREEN_BOX_IMAGE_URL } from 'spec/test_constants';
+import { shallowMount } from '@vue/test-utils';
+import { GREEN_BOX_IMAGE_URL, DUMMY_IMAGE_BLOB_PATH } from 'spec/test_constants';
import ImageViewer from '~/vue_shared/components/content_viewer/viewers/image_viewer.vue';
describe('Image Viewer', () => {
let wrapper;
it('renders image preview', () => {
- wrapper = mount(ImageViewer, {
+ wrapper = shallowMount(ImageViewer, {
propsData: { path: GREEN_BOX_IMAGE_URL, fileSize: 1024 },
});
@@ -22,7 +22,7 @@ describe('Image Viewer', () => {
`(
'shows file size as "$humanizedFileSize", if fileSize=$fileSize and renderInfo=$renderInfo',
({ fileSize, renderInfo, elementExists, humanizedFileSize }) => {
- wrapper = mount(ImageViewer, {
+ wrapper = shallowMount(ImageViewer, {
propsData: { path: GREEN_BOX_IMAGE_URL, fileSize, renderInfo },
});
@@ -36,11 +36,19 @@ describe('Image Viewer', () => {
describe('file path', () => {
it('should output a valid URL path for the image', () => {
- wrapper = mount(ImageViewer, {
+ wrapper = shallowMount(ImageViewer, {
propsData: { path: '/url/hello#1.jpg' },
});
expect(wrapper.find('img').attributes('src')).toBe('/url/hello%231.jpg');
});
+ it('outputs path without transformations when outputting a Blob', () => {
+ const file = new File([], DUMMY_IMAGE_BLOB_PATH);
+ const path = window.URL.createObjectURL(file);
+ wrapper = shallowMount(ImageViewer, {
+ propsData: { path },
+ });
+ expect(wrapper.find('img').attributes('src')).toBe(path);
+ });
});
});
diff --git a/spec/helpers/commits_helper_spec.rb b/spec/helpers/commits_helper_spec.rb
index 397751b07af..2a8e2e04947 100644
--- a/spec/helpers/commits_helper_spec.rb
+++ b/spec/helpers/commits_helper_spec.rb
@@ -257,5 +257,15 @@ RSpec.describe CommitsHelper do
{ id: forked_project.id.to_s, name: forked_project.full_path, refsUrl: refs_project_path(forked_project) }
])
end
+
+ context 'pick_into_project is disabled' do
+ before do
+ stub_feature_flags(pick_into_project: false)
+ end
+
+ it 'does not calculate target projects' do
+ expect(helper.cherry_pick_projects_data(project)).to eq([])
+ end
+ end
end
end
diff --git a/spec/presenters/packages/composer/packages_presenter_spec.rb b/spec/presenters/packages/composer/packages_presenter_spec.rb
index c4217b6e37c..d0e3b68fc9f 100644
--- a/spec/presenters/packages/composer/packages_presenter_spec.rb
+++ b/spec/presenters/packages/composer/packages_presenter_spec.rb
@@ -15,7 +15,8 @@ RSpec.describe ::Packages::Composer::PackagesPresenter do
let(:branch) { project.repository.find_branch('master') }
let(:packages) { [package1, package2] }
- let(:presenter) { described_class.new(group, packages) }
+ let(:is_v2) { false }
+ let(:presenter) { described_class.new(group, packages, is_v2) }
describe '#package_versions' do
subject { presenter.package_versions }
@@ -79,5 +80,19 @@ RSpec.describe ::Packages::Composer::PackagesPresenter do
it 'returns the provider json' do
expect(subject).to match(expected_json)
end
+
+ context 'with a client version 2' do
+ let(:is_v2) { true }
+ let(:expected_json) do
+ {
+ 'packages' => [],
+ 'metadata-url' => "prefix/api/v4/group/#{group.id}/-/packages/composer/p2/%package%.json"
+ }
+ end
+
+ it 'returns the provider json' do
+ expect(subject).to match(expected_json)
+ end
+ end
end
end
diff --git a/spec/support/shared_examples/requests/api/composer_packages_shared_examples.rb b/spec/support/shared_examples/requests/api/composer_packages_shared_examples.rb
index 4b5299cebec..b86c0529338 100644
--- a/spec/support/shared_examples/requests/api/composer_packages_shared_examples.rb
+++ b/spec/support/shared_examples/requests/api/composer_packages_shared_examples.rb
@@ -7,20 +7,30 @@ RSpec.shared_context 'Composer user type' do |user_type, add_member|
end
end
+RSpec.shared_examples 'Composer package index with version' do |schema_path|
+ it 'returns the package index' do
+ subject
+
+ expect(response).to have_gitlab_http_status(status)
+
+ if status == :success
+ expect(response).to match_response_schema(schema_path)
+ expect(json_response).to eq presenter.root
+ end
+ end
+end
+
RSpec.shared_examples 'Composer package index' do |user_type, status, add_member, include_package|
include_context 'Composer user type', user_type, add_member do
let(:expected_packages) { include_package == :include_package ? [package] : [] }
let(:presenter) { ::Packages::Composer::PackagesPresenter.new(group, expected_packages ) }
- it 'returns the package index' do
- subject
+ it_behaves_like 'Composer package index with version', 'public_api/v4/packages/composer/index'
- expect(response).to have_gitlab_http_status(status)
+ context 'with version 2' do
+ let(:headers) { super().merge('User-Agent' => 'Composer/2.0.9 (Darwin; 19.6.0; PHP 7.4.8; cURL 7.71.1)') }
- if status == :success
- expect(response).to match_response_schema('public_api/v4/packages/composer/index')
- expect(json_response).to eq presenter.root
- end
+ it_behaves_like 'Composer package index with version', 'public_api/v4/packages/composer/index_v2'
end
end
end