summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-09-02 00:11:46 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-09-02 00:11:46 +0000
commit5b72415235c4a056380758c5d23bff3a738158e7 (patch)
tree47a04433210a8f3af8b0c1f3f0a5fcf8250dabc4 /spec
parent64667f74b1613f91fe7eb53cd6610f0693c3a45e (diff)
downloadgitlab-ce-5b72415235c4a056380758c5d23bff3a738158e7.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/fixtures/blockquote_fence_after.md24
-rw-r--r--spec/fixtures/blockquote_fence_before.md24
-rw-r--r--spec/frontend/google_tag_manager/index_spec.js16
-rw-r--r--spec/frontend/groups/components/visibility_level_dropdown_spec.js70
-rw-r--r--spec/lib/banzai/filter/blockquote_fence_filter_spec.rb12
-rw-r--r--spec/lib/banzai/pipeline/pre_process_pipeline_spec.rb17
-rw-r--r--spec/lib/gitlab/shell_spec.rb53
-rw-r--r--spec/services/issues/build_service_spec.rb2
-rw-r--r--spec/services/projects/create_service_spec.rb6
-rw-r--r--spec/support/rspec_order_todo.yml1
10 files changed, 133 insertions, 92 deletions
diff --git a/spec/fixtures/blockquote_fence_after.md b/spec/fixtures/blockquote_fence_after.md
index 555905bf07e..18500d94c7a 100644
--- a/spec/fixtures/blockquote_fence_after.md
+++ b/spec/fixtures/blockquote_fence_after.md
@@ -129,3 +129,27 @@ Double `>>>` inside HTML inside blockquote:
>
> Quote
+
+Requires a leading blank line
+>>>
+Not a quote
+>>>
+
+Requires a trailing blank line
+
+>>>
+Not a quote
+>>>
+Lorem
+
+Triple quoting is not our blockquote
+
+>>> foo
+>>> bar
+>>>
+> baz
+
+> boo
+>>> far
+>>>
+>>> faz
diff --git a/spec/fixtures/blockquote_fence_before.md b/spec/fixtures/blockquote_fence_before.md
index d52eec72896..895bff73404 100644
--- a/spec/fixtures/blockquote_fence_before.md
+++ b/spec/fixtures/blockquote_fence_before.md
@@ -129,3 +129,27 @@ Quote
Quote
>>>
+
+Requires a leading blank line
+>>>
+Not a quote
+>>>
+
+Requires a trailing blank line
+
+>>>
+Not a quote
+>>>
+Lorem
+
+Triple quoting is not our blockquote
+
+>>> foo
+>>> bar
+>>>
+> baz
+
+> boo
+>>> far
+>>>
+>>> faz
diff --git a/spec/frontend/google_tag_manager/index_spec.js b/spec/frontend/google_tag_manager/index_spec.js
index 9c4b23e3a70..ec9e1ef8e5f 100644
--- a/spec/frontend/google_tag_manager/index_spec.js
+++ b/spec/frontend/google_tag_manager/index_spec.js
@@ -8,7 +8,6 @@ import {
trackSaasTrialSubmit,
trackSaasTrialSkip,
trackSaasTrialGroup,
- trackSaasTrialProject,
trackSaasTrialGetStarted,
trackTrialAcceptTerms,
trackCheckout,
@@ -150,9 +149,6 @@ describe('~/google_tag_manager/index', () => {
createTestCase(trackSaasTrialGroup, {
forms: [{ cls: 'js-saas-trial-group', expectation: { event: 'saasTrialGroup' } }],
}),
- createTestCase(trackSaasTrialProject, {
- forms: [{ id: 'new_project', expectation: { event: 'saasTrialProject' } }],
- }),
createTestCase(trackProjectImport, {
links: [
{
@@ -481,11 +477,11 @@ describe('~/google_tag_manager/index', () => {
});
it('no ops', () => {
- setHTMLFixture(createHTML({ forms: [{ id: 'new_project' }] }));
+ setHTMLFixture(createHTML({ forms: [{ cls: 'js-saas-trial-group' }] }));
- trackSaasTrialProject();
+ trackSaasTrialGroup();
- triggerEvent('#new_project', 'submit');
+ triggerEvent('.js-saas-trial-group', 'submit');
expect(spy).not.toHaveBeenCalled();
expect(logError).not.toHaveBeenCalled();
@@ -506,11 +502,11 @@ describe('~/google_tag_manager/index', () => {
});
it('logs error', () => {
- setHTMLFixture(createHTML({ forms: [{ id: 'new_project' }] }));
+ setHTMLFixture(createHTML({ forms: [{ cls: 'js-saas-trial-group' }] }));
- trackSaasTrialProject();
+ trackSaasTrialGroup();
- triggerEvent('#new_project', 'submit');
+ triggerEvent('.js-saas-trial-group', 'submit');
expect(logError).toHaveBeenCalledWith(
'Unexpected error while pushing to dataLayer',
diff --git a/spec/frontend/groups/components/visibility_level_dropdown_spec.js b/spec/frontend/groups/components/visibility_level_dropdown_spec.js
deleted file mode 100644
index 49d0b182f7f..00000000000
--- a/spec/frontend/groups/components/visibility_level_dropdown_spec.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import { GlDropdown, GlDropdownItem } from '@gitlab/ui';
-import { shallowMount } from '@vue/test-utils';
-import Component from '~/groups/components/visibility_level_dropdown.vue';
-
-describe('Visibility Level Dropdown', () => {
- let wrapper;
-
- const options = [
- { level: 0, label: 'Private', description: 'Private description' },
- { level: 20, label: 'Public', description: 'Public description' },
- ];
- const defaultLevel = 0;
-
- const createComponent = (propsData) => {
- wrapper = shallowMount(Component, {
- propsData,
- });
- };
-
- beforeEach(() => {
- createComponent({
- visibilityLevelOptions: options,
- defaultLevel,
- });
- });
-
- afterEach(() => {
- wrapper.destroy();
- wrapper = null;
- });
-
- const hiddenInputValue = () =>
- wrapper.find("input[name='group[visibility_level]']").attributes('value');
- const dropdownText = () => wrapper.findComponent(GlDropdown).props('text');
- const findDropdownItems = () =>
- wrapper.findAllComponents(GlDropdownItem).wrappers.map((option) => ({
- text: option.text(),
- secondaryText: option.props('secondaryText'),
- }));
-
- describe('Default values', () => {
- it('sets the value of the hidden input to the default value', () => {
- expect(hiddenInputValue()).toBe(options[0].level.toString());
- });
-
- it('sets the text of the dropdown to the default value', () => {
- expect(dropdownText()).toBe(options[0].label);
- });
-
- it('shows all dropdown options', () => {
- expect(findDropdownItems()).toEqual(
- options.map(({ label, description }) => ({ text: label, secondaryText: description })),
- );
- });
- });
-
- describe('Selecting an option', () => {
- beforeEach(() => {
- wrapper.findAllComponents(GlDropdownItem).at(1).vm.$emit('click');
- });
-
- it('sets the value of the hidden input to the selected value', () => {
- expect(hiddenInputValue()).toBe(options[1].level.toString());
- });
-
- it('sets the text of the dropdown to the selected value', () => {
- expect(dropdownText()).toBe(options[1].label);
- });
- });
-});
diff --git a/spec/lib/banzai/filter/blockquote_fence_filter_spec.rb b/spec/lib/banzai/filter/blockquote_fence_filter_spec.rb
index 2d326bd77a6..36e8002b796 100644
--- a/spec/lib/banzai/filter/blockquote_fence_filter_spec.rb
+++ b/spec/lib/banzai/filter/blockquote_fence_filter_spec.rb
@@ -14,10 +14,22 @@ RSpec.describe Banzai::Filter::BlockquoteFenceFilter do
expect(output).to eq(expected)
end
+ it 'does not require newlines at start or end of string' do
+ expect(filter(">>>\ntest\n>>>")).to eq("\n> test\n")
+ end
+
it 'allows trailing whitespace on blockquote fence lines' do
expect(filter(">>> \ntest\n>>> ")).to eq("\n> test\n")
end
+ context 'when feature flag is turned off' do
+ it 'does not require a leading or trailing blank line' do
+ stub_feature_flags(markdown_corrected_blockquote: false)
+
+ expect(filter("Foo\n>>>\ntest\n>>>\nBar")).to eq("Foo\n\n> test\n\nBar")
+ end
+ end
+
context 'when incomplete blockquote fences with multiple blocks are present' do
it 'does not raise timeout error' do
test_string = ">>>#{"\n```\nfoo\n```" * 20}"
diff --git a/spec/lib/banzai/pipeline/pre_process_pipeline_spec.rb b/spec/lib/banzai/pipeline/pre_process_pipeline_spec.rb
index 5021ef3a79a..303d0fcb6c2 100644
--- a/spec/lib/banzai/pipeline/pre_process_pipeline_spec.rb
+++ b/spec/lib/banzai/pipeline/pre_process_pipeline_spec.rb
@@ -32,4 +32,21 @@ RSpec.describe Banzai::Pipeline::PreProcessPipeline do
expect(result[:output]).to eq('foo foo f...')
end
+
+ context 'when multiline blockquote' do
+ it 'data-sourcepos references correct line in source markdown' do
+ markdown = <<~MD
+ >>>
+ foo
+ >>>
+ MD
+
+ pipeline_output = described_class.call(markdown, {})[:output]
+ pipeline_output = Banzai::Pipeline::PlainMarkdownPipeline.call(pipeline_output, {})[:output]
+ sourcepos = pipeline_output.at('blockquote')['data-sourcepos']
+ source_line = sourcepos.split(':').first.to_i
+
+ expect(markdown.lines[source_line - 1]).to eq "foo\n"
+ end
+ end
end
diff --git a/spec/lib/gitlab/shell_spec.rb b/spec/lib/gitlab/shell_spec.rb
index 891b3639709..785429aa3b0 100644
--- a/spec/lib/gitlab/shell_spec.rb
+++ b/spec/lib/gitlab/shell_spec.rb
@@ -9,9 +9,13 @@ RSpec.describe Gitlab::Shell do
let(:repository) { project.repository }
let(:gitlab_shell) { described_class.new }
+ before do
+ described_class.instance_variable_set(:@secret_token, nil)
+ end
+
it { is_expected.to respond_to :remove_repository }
- describe 'memoized secret_token' do
+ describe '.secret_token' do
let(:secret_file) { 'tmp/tests/.secret_shell_test' }
let(:link_file) { 'tmp/tests/shell-secret-test/.gitlab_shell_secret' }
@@ -19,7 +23,6 @@ RSpec.describe Gitlab::Shell do
allow(Gitlab.config.gitlab_shell).to receive(:secret_file).and_return(secret_file)
allow(Gitlab.config.gitlab_shell).to receive(:path).and_return('tmp/tests/shell-secret-test')
FileUtils.mkdir('tmp/tests/shell-secret-test')
- described_class.ensure_secret_token!
end
after do
@@ -27,13 +30,47 @@ RSpec.describe Gitlab::Shell do
FileUtils.rm_rf(secret_file)
end
- it 'creates and links the secret token file' do
- secret_token = described_class.secret_token
+ shared_examples 'creates and links the secret token file' do
+ it 'creates and links the secret token file' do
+ secret_token = described_class.secret_token
+
+ expect(File.exist?(secret_file)).to be(true)
+ expect(File.read(secret_file).chomp).to eq(secret_token)
+ expect(File.symlink?(link_file)).to be(true)
+ expect(File.readlink(link_file)).to eq(secret_file)
+ end
+ end
+
+ describe 'memoized secret_token' do
+ before do
+ described_class.ensure_secret_token!
+ end
+
+ it_behaves_like 'creates and links the secret token file'
+ end
+
+ context 'when link_file is a broken symbolic link' do
+ before do
+ File.symlink('tmp/tests/non_existing_file', link_file)
+ described_class.ensure_secret_token!
+ end
+
+ it_behaves_like 'creates and links the secret token file'
+ end
+
+ context 'when secret_file exists' do
+ let(:secret_token) { 'secret-token' }
- expect(File.exist?(secret_file)).to be(true)
- expect(File.read(secret_file).chomp).to eq(secret_token)
- expect(File.symlink?(link_file)).to be(true)
- expect(File.readlink(link_file)).to eq(secret_file)
+ before do
+ File.write(secret_file, 'secret-token')
+ described_class.ensure_secret_token!
+ end
+
+ it_behaves_like 'creates and links the secret token file'
+
+ it 'reads the token from the existing file' do
+ expect(described_class.secret_token).to eq(secret_token)
+ end
end
end
diff --git a/spec/services/issues/build_service_spec.rb b/spec/services/issues/build_service_spec.rb
index 304e4bb3ebb..838e0675372 100644
--- a/spec/services/issues/build_service_spec.rb
+++ b/spec/services/issues/build_service_spec.rb
@@ -63,12 +63,14 @@ RSpec.describe Issues::BuildService do
it 'wraps the note in a blockquote' do
note_text = "This is a string\n"\
+ "\n"\
">>>\n"\
"with a blockquote\n"\
"> That has a quote\n"\
">>>\n"
note_result = " > This is a string\n"\
" > \n"\
+ " > \n"\
" > > with a blockquote\n"\
" > > > That has a quote\n"\
" > \n"
diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb
index e112c1e2497..edde2e0a247 100644
--- a/spec/services/projects/create_service_spec.rb
+++ b/spec/services/projects/create_service_spec.rb
@@ -417,10 +417,10 @@ RSpec.describe Projects::CreateService, '#execute' do
expect(imported_project.import_url).to eq('http://import-url')
end
- it 'tracks for the combined_registration experiment', :experiment do
- expect(experiment(:combined_registration)).to track(:import_project).on_next_instance
-
+ it 'tracks for imported project' do
imported_project
+
+ expect_snowplow_event(category: described_class.name, action: 'import_project', user: user)
end
describe 'import scheduling' do
diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml
index bcd83c431e4..f297734b4b7 100644
--- a/spec/support/rspec_order_todo.yml
+++ b/spec/support/rspec_order_todo.yml
@@ -216,7 +216,6 @@
- './ee/spec/elastic/migrate/20220512150000_pause_indexing_for_unsupported_es_versions_spec.rb'
- './ee/spec/elastic/migrate/20220613120500_migrate_commits_to_separate_index_spec.rb'
- './ee/spec/elastic/migrate/20220713103500_delete_commits_from_original_index_spec.rb'
-- './ee/spec/experiments/combined_registration_experiment_spec.rb'
- './ee/spec/factories/lfs_object_spec.rb'
- './ee/spec/features/account_recovery_regular_check_spec.rb'
- './ee/spec/features/admin/admin_audit_logs_spec.rb'