diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-01 15:14:27 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-01 15:14:27 +0000 |
commit | afbaf78b0d819326741a01b093bdbc4702570417 (patch) | |
tree | a16a6f2a8fcc18e60f25ac72df6ab22cfe0eae79 /spec | |
parent | 38b3003b67db3f2eadfa81fd28b13d168f665766 (diff) | |
download | gitlab-ce-afbaf78b0d819326741a01b093bdbc4702570417.tar.gz |
Add latest changes from gitlab-org/gitlab@13-10-stable-ee
Diffstat (limited to 'spec')
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 |