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:
-rw-r--r--app/assets/javascripts/api.js7
-rw-r--r--app/assets/javascripts/helpers/startup_css_helper.js2
-rw-r--r--app/assets/javascripts/invite_members/components/invite_members_modal.vue36
-rw-r--r--app/assets/javascripts/invite_members/init_invite_members_modal.js1
-rw-r--r--app/assets/javascripts/pages/projects/show/index.js5
-rw-r--r--app/views/admin/identities/_identity.html.haml2
-rw-r--r--app/views/groups/_invite_members_modal.html.haml5
-rw-r--r--app/views/groups/_invite_members_side_nav_link.html.haml2
-rw-r--r--app/views/layouts/nav/sidebar/_project.html.haml2
-rw-r--r--app/views/projects/_home_panel.html.haml2
-rw-r--r--app/views/projects/_invite_members_modal.html.haml7
-rw-r--r--app/views/projects/_invite_members_side_nav_link.html.haml3
-rw-r--r--app/views/projects/blob/_breadcrumb.html.haml4
-rw-r--r--app/views/projects/no_repo.html.haml2
-rw-r--r--app/views/search/results/_wiki_blob.html.haml7
-rw-r--r--changelogs/unreleased/260340-wiki-render-like-issues.yml5
-rw-r--r--changelogs/unreleased/277457-saml-admin.yml5
-rw-r--r--changelogs/unreleased/281571-fix-blob-header-button-styles.yml5
-rw-r--r--doc/ci/examples/README.md3
-rw-r--r--lib/bulk_imports/clients/graphql.rb26
-rw-r--r--locale/gitlab.pot23
-rw-r--r--package.json2
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb2
-rw-r--r--spec/features/projects/navbar_spec.rb19
-rw-r--r--spec/frontend/helpers/startup_css_helper_spec.js20
-rw-r--r--spec/frontend/invite_members/components/invite_members_modal_spec.js12
-rw-r--r--spec/support/services/issuable_import_csv_service_shared_examples.rb8
-rw-r--r--yarn.lock8
28 files changed, 182 insertions, 43 deletions
diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js
index a887c22af2e..38be2442dfb 100644
--- a/app/assets/javascripts/api.js
+++ b/app/assets/javascripts/api.js
@@ -22,6 +22,7 @@ const Api = {
projectLabelsPath: '/:namespace_path/:project_path/-/labels',
projectFileSchemaPath: '/:namespace_path/:project_path/-/schema/:ref/:filename',
projectUsersPath: '/api/:version/projects/:id/users',
+ projectMembersPath: '/api/:version/projects/:id/members',
projectMergeRequestsPath: '/api/:version/projects/:id/merge_requests',
projectMergeRequestPath: '/api/:version/projects/:id/merge_requests/:mrid',
projectMergeRequestChangesPath: '/api/:version/projects/:id/merge_requests/:mrid/changes',
@@ -214,6 +215,12 @@ const Api = {
.then(({ data }) => data);
},
+ inviteProjectMembers(id, data) {
+ const url = Api.buildUrl(this.projectMembersPath).replace(':id', encodeURIComponent(id));
+
+ return axios.post(url, data);
+ },
+
// Return single project
project(projectPath) {
const url = Api.buildUrl(Api.projectPath).replace(':id', encodeURIComponent(projectPath));
diff --git a/app/assets/javascripts/helpers/startup_css_helper.js b/app/assets/javascripts/helpers/startup_css_helper.js
index 8e25e1421c0..8351cbf04bf 100644
--- a/app/assets/javascripts/helpers/startup_css_helper.js
+++ b/app/assets/javascripts/helpers/startup_css_helper.js
@@ -32,7 +32,7 @@ const handleStartupEvents = () => {
action();
-*/
export const waitForCSSLoaded = (action = () => {}) => {
- if (!gon.features.startupCss || allLinksLoaded()) {
+ if (!gon?.features?.startupCss || allLinksLoaded()) {
return new Promise(resolve => {
action();
resolve();
diff --git a/app/assets/javascripts/invite_members/components/invite_members_modal.vue b/app/assets/javascripts/invite_members/components/invite_members_modal.vue
index b47b22c4d44..b55ef77ae5d 100644
--- a/app/assets/javascripts/invite_members/components/invite_members_modal.vue
+++ b/app/assets/javascripts/invite_members/components/invite_members_modal.vue
@@ -10,7 +10,7 @@ import {
GlFormInput,
} from '@gitlab/ui';
import eventHub from '../event_hub';
-import { s__, sprintf } from '~/locale';
+import { s__, __, sprintf } from '~/locale';
import Api from '~/api';
import MembersTokenSelect from '~/invite_members/components/members_token_select.vue';
@@ -28,11 +28,15 @@ export default {
MembersTokenSelect,
},
props: {
- groupId: {
+ id: {
type: String,
required: true,
},
- groupName: {
+ isProject: {
+ type: Boolean,
+ required: true,
+ },
+ name: {
type: String,
required: true,
},
@@ -59,9 +63,16 @@ export default {
};
},
computed: {
+ inviteToName() {
+ return this.name.toUpperCase();
+ },
+ inviteToType() {
+ return this.isProject ? __('project') : __('group');
+ },
introText() {
- return sprintf(s__("InviteMembersModal|You're inviting members to the %{group_name} group"), {
- group_name: this.groupName,
+ return sprintf(s__("InviteMembersModal|You're inviting members to the %{name} %{type}"), {
+ name: this.inviteToName,
+ type: this.inviteToType,
});
},
toastOptions() {
@@ -110,13 +121,14 @@ export default {
this.selectedAccessLevel = item;
},
submitForm(formData) {
- return Api.inviteGroupMember(this.groupId, formData)
- .then(() => {
- this.showToastMessageSuccess();
- })
- .catch(error => {
- this.showToastMessageError(error);
- });
+ if (this.isProject) {
+ return Api.inviteProjectMembers(this.id, formData)
+ .then(this.showToastMessageSuccess)
+ .catch(this.showToastMessageError);
+ }
+ return Api.inviteGroupMember(this.id, formData)
+ .then(this.showToastMessageSuccess)
+ .catch(this.showToastMessageError);
},
showToastMessageSuccess() {
this.$toast.show(this.$options.labels.toastMessageSuccessful, this.toastOptions);
diff --git a/app/assets/javascripts/invite_members/init_invite_members_modal.js b/app/assets/javascripts/invite_members/init_invite_members_modal.js
index 92aa3187fc3..db957ecacfd 100644
--- a/app/assets/javascripts/invite_members/init_invite_members_modal.js
+++ b/app/assets/javascripts/invite_members/init_invite_members_modal.js
@@ -18,7 +18,6 @@ export default function initInviteMembersModal() {
props: {
...el.dataset,
accessLevels: JSON.parse(el.dataset.accessLevels),
- groupName: el.dataset.groupName.toUpperCase(),
},
}),
});
diff --git a/app/assets/javascripts/pages/projects/show/index.js b/app/assets/javascripts/pages/projects/show/index.js
index dd8141d34c7..413b2d01621 100644
--- a/app/assets/javascripts/pages/projects/show/index.js
+++ b/app/assets/javascripts/pages/projects/show/index.js
@@ -10,6 +10,8 @@ import leaveByUrl from '~/namespaces/leave_by_url';
import Star from '../../../star';
import notificationsDropdown from '../../../notifications_dropdown';
import { showLearnGitLabProjectPopover } from '~/onboarding_issues';
+import initInviteMembersTrigger from '~/invite_members/init_invite_members_trigger';
+import initInviteMembersModal from '~/invite_members/init_invite_members_modal';
initReadMore();
new Star(); // eslint-disable-line no-new
@@ -42,3 +44,6 @@ showLearnGitLabProjectPopover();
notificationsDropdown();
new ShortcutsNavigation(); // eslint-disable-line no-new
+
+initInviteMembersTrigger();
+initInviteMembersModal();
diff --git a/app/views/admin/identities/_identity.html.haml b/app/views/admin/identities/_identity.html.haml
index a0eff3f1d0b..d852e4a2463 100644
--- a/app/views/admin/identities/_identity.html.haml
+++ b/app/views/admin/identities/_identity.html.haml
@@ -1,6 +1,6 @@
%tr
%td
- #{Gitlab::Auth::OAuth::Provider.label_for(identity.provider)} (#{identity.provider}) #{identity.saml_provider_id.present? ? "ID: #{identity.saml_provider_id}" : ""}
+ #{Gitlab::Auth::OAuth::Provider.label_for(identity.provider)} (#{identity.provider}) #{identity.saml_provider_id.present? ? "for #{link_to identity.saml_provider.group.path, identity.saml_provider.group} ID: #{identity.saml_provider_id}".html_safe : ""}
%td
= identity.extern_uid
%td
diff --git a/app/views/groups/_invite_members_modal.html.haml b/app/views/groups/_invite_members_modal.html.haml
index 51f41d58029..3aae81cef8d 100644
--- a/app/views/groups/_invite_members_modal.html.haml
+++ b/app/views/groups/_invite_members_modal.html.haml
@@ -1,6 +1,7 @@
- if invite_members_allowed?(group)
- .js-invite-members-modal{ data: { group_id: group.id,
- group_name: group.name,
+ .js-invite-members-modal{ data: { id: group.id,
+ name: group.name,
+ is_project: false,
access_levels: GroupMember.access_level_roles.to_json,
default_access_level: Gitlab::Access::GUEST,
help_link: help_page_url('user/permissions') } }
diff --git a/app/views/groups/_invite_members_side_nav_link.html.haml b/app/views/groups/_invite_members_side_nav_link.html.haml
index 1c90eaee992..4f1c06d9fe3 100644
--- a/app/views/groups/_invite_members_side_nav_link.html.haml
+++ b/app/views/groups/_invite_members_side_nav_link.html.haml
@@ -1,3 +1,3 @@
- if invite_members_allowed?(group) && body_data_page == 'groups:show'
%li
- .js-invite-members-trigger{ data: { icon: 'plus', display_text: 'Invite team members' } }
+ .js-invite-members-trigger{ data: { icon: 'plus', display_text: _('Invite team members') } }
diff --git a/app/views/layouts/nav/sidebar/_project.html.haml b/app/views/layouts/nav/sidebar/_project.html.haml
index bff8c861f1f..5ff774d5d9c 100644
--- a/app/views/layouts/nav/sidebar/_project.html.haml
+++ b/app/views/layouts/nav/sidebar/_project.html.haml
@@ -380,6 +380,8 @@
%strong.fly-out-top-item-name
= _('Members')
+ = render_if_exists 'projects/invite_members_side_nav_link', project: @project
+
- if project_nav_tab? :settings
= nav_link(path: sidebar_settings_paths) do
= link_to edit_project_path(@project) do
diff --git a/app/views/projects/_home_panel.html.haml b/app/views/projects/_home_panel.html.haml
index 0c33cefc65a..569255ec2e5 100644
--- a/app/views/projects/_home_panel.html.haml
+++ b/app/views/projects/_home_panel.html.haml
@@ -3,6 +3,8 @@
- max_project_topic_length = 15
- emails_disabled = @project.emails_disabled?
+= render_if_exists 'projects/invite_members_modal', project: @project
+
.project-home-panel.js-show-on-project-root.gl-my-5{ class: [("empty-project" if empty_repo)] }
.row.gl-mb-3
.home-panel-title-row.col-md-12.col-lg-6.d-flex
diff --git a/app/views/projects/_invite_members_modal.html.haml b/app/views/projects/_invite_members_modal.html.haml
new file mode 100644
index 00000000000..ad95f39bbfa
--- /dev/null
+++ b/app/views/projects/_invite_members_modal.html.haml
@@ -0,0 +1,7 @@
+- if invite_members_allowed?(project.group)
+ .js-invite-members-modal{ data: { id: project.id,
+ name: project.name,
+ is_project: true,
+ access_levels: GroupMember.access_level_roles.to_json,
+ default_access_level: Gitlab::Access::GUEST,
+ help_link: help_page_url('user/permissions') } }
diff --git a/app/views/projects/_invite_members_side_nav_link.html.haml b/app/views/projects/_invite_members_side_nav_link.html.haml
new file mode 100644
index 00000000000..15e0b75cf57
--- /dev/null
+++ b/app/views/projects/_invite_members_side_nav_link.html.haml
@@ -0,0 +1,3 @@
+- if invite_members_allowed?(project.group) && body_data_page == 'projects:show'
+ %li
+ .js-invite-members-trigger{ data: { icon: 'plus', display_text: _('Invite team members') } }
diff --git a/app/views/projects/blob/_breadcrumb.html.haml b/app/views/projects/blob/_breadcrumb.html.haml
index 84f292a2bae..710417f90e3 100644
--- a/app/views/projects/blob/_breadcrumb.html.haml
+++ b/app/views/projects/blob/_breadcrumb.html.haml
@@ -23,13 +23,13 @@
- if blob.readable_text?
- if blame
= link_to 'Normal view', project_blob_path(@project, @id),
- class: 'btn'
+ class: 'gl-button btn'
- else
= link_to 'Blame', project_blame_path(@project, @id),
class: 'gl-button btn js-blob-blame-link' unless blob.empty?
= link_to 'History', project_commits_path(@project, @id),
- class: 'btn'
+ class: 'gl-button btn'
= link_to 'Permalink', project_blob_path(@project,
tree_join(@commit.sha, @path)), class: 'gl-button btn js-data-file-blob-permalink-url'
diff --git a/app/views/projects/no_repo.html.haml b/app/views/projects/no_repo.html.haml
index 8631f03cc1b..65c4232b240 100644
--- a/app/views/projects/no_repo.html.haml
+++ b/app/views/projects/no_repo.html.haml
@@ -12,6 +12,8 @@
#{ _('This means you can not push code until you create an empty repository or import existing one.') }
%hr
+= render_if_exists 'projects/invite_members_modal', project: @project
+
.no-repo-actions
= link_to project_repository_path(@project), method: :post, class: 'btn btn-primary' do
#{ _('Create empty repository') }
diff --git a/app/views/search/results/_wiki_blob.html.haml b/app/views/search/results/_wiki_blob.html.haml
index 3040917dd6e..55161ce333b 100644
--- a/app/views/search/results/_wiki_blob.html.haml
+++ b/app/views/search/results/_wiki_blob.html.haml
@@ -1,4 +1,9 @@
- project = wiki_blob.project
- wiki_blob_link = project_wiki_path(project, wiki_blob.basename)
-= render partial: 'search/results/blob_data', locals: { blob: wiki_blob, project: project, path: wiki_blob.path, blob_link: wiki_blob_link }
+%div{ class: 'search-result-row gl-pb-3! gl-mt-5 gl-mb-0!' }
+ %span.gl-display-flex.gl-align-items-center
+ = link_to wiki_blob_link, data: { track_event: 'click_text', track_label: "wiki_title", track_property: 'search_result' }, class: 'gl-w-full' do
+ %span.term.str-truncated.gl-font-weight-bold= ::Gitlab::Git::Wiki::GollumSlug.canonicalize_filename(wiki_blob.path)
+ .description.term.col-sm-10.gl-px-0
+ = simple_search_highlight_and_truncate(wiki_blob.data, @search_term)
diff --git a/changelogs/unreleased/260340-wiki-render-like-issues.yml b/changelogs/unreleased/260340-wiki-render-like-issues.yml
new file mode 100644
index 00000000000..60be57b65d7
--- /dev/null
+++ b/changelogs/unreleased/260340-wiki-render-like-issues.yml
@@ -0,0 +1,5 @@
+---
+title: Improve the look of wikis in search results
+merge_request: 47470
+author:
+type: changed
diff --git a/changelogs/unreleased/277457-saml-admin.yml b/changelogs/unreleased/277457-saml-admin.yml
new file mode 100644
index 00000000000..701c522482a
--- /dev/null
+++ b/changelogs/unreleased/277457-saml-admin.yml
@@ -0,0 +1,5 @@
+---
+title: Add group name and link in admin identities
+merge_request: 47563
+author:
+type: added
diff --git a/changelogs/unreleased/281571-fix-blob-header-button-styles.yml b/changelogs/unreleased/281571-fix-blob-header-button-styles.yml
new file mode 100644
index 00000000000..3b65985a33d
--- /dev/null
+++ b/changelogs/unreleased/281571-fix-blob-header-button-styles.yml
@@ -0,0 +1,5 @@
+---
+title: Update button styles in blob header
+merge_request: 47571
+author:
+type: other
diff --git a/doc/ci/examples/README.md b/doc/ci/examples/README.md
index 34e3b276d3e..1abb33005ca 100644
--- a/doc/ci/examples/README.md
+++ b/doc/ci/examples/README.md
@@ -15,7 +15,7 @@ Examples are available in several forms. As a collection of:
- `.gitlab-ci.yml` [template files](#cicd-templates) maintained in GitLab, for many
common frameworks and programming languages.
-- Repositories with [example projects](https://gitlab.com/gitlab-examples) for various languages. You can fork and adjust them to your own needs. Projects include demonstrations of [multi-project pipelines](https://gitlab.com/gitlab-examples/multi-project-pipelines) and using [Review Apps with a static site served by NGINX](https://gitlab.com/gitlab-examples/review-apps-nginx/).
+- Repositories with [example projects](https://gitlab.com/gitlab-examples) for various languages. You can fork and adjust them to your own needs. Projects include an example of using [Review Apps with a static site served by NGINX](https://gitlab.com/gitlab-examples/review-apps-nginx/).
- Examples and [other resources](#other-resources) listed below.
## CI/CD examples
@@ -42,6 +42,7 @@ The following table lists examples with step-by-step tutorials that are containe
| Scala on Heroku | [Test and deploy a Scala application to Heroku](test-scala-application.md). |
| Parallel testing Ruby & JS | [GitLab CI/CD parallel jobs testing for Ruby & JavaScript projects](https://docs.knapsackpro.com/2019/how-to-run-parallel-jobs-for-rspec-tests-on-gitlab-ci-pipeline-and-speed-up-ruby-javascript-testing). |
| Secrets management with Vault | [Authenticating and Reading Secrets With Hashicorp Vault](authenticating-with-hashicorp-vault/index.md). |
+| Multi project pipeline | [Build, test deploy using multi project pipeline](https://gitlab.com/gitlab-examples/upstream-project). |
### Contributing examples
diff --git a/lib/bulk_imports/clients/graphql.rb b/lib/bulk_imports/clients/graphql.rb
index 89698cb53ef..b067431aeae 100644
--- a/lib/bulk_imports/clients/graphql.rb
+++ b/lib/bulk_imports/clients/graphql.rb
@@ -3,6 +3,24 @@
module BulkImports
module Clients
class Graphql
+ class HTTP < Graphlient::Adapters::HTTP::Adapter
+ def execute(document:, operation_name: nil, variables: {}, context: {})
+ response = ::Gitlab::HTTP.post(
+ url,
+ headers: headers,
+ follow_redirects: false,
+ body: {
+ query: document.to_query_string,
+ operationName: operation_name,
+ variables: variables
+ }.to_json
+ )
+
+ ::Gitlab::Json.parse(response.body)
+ end
+ end
+ private_constant :HTTP
+
attr_reader :client
delegate :query, :parse, :execute, to: :client
@@ -12,19 +30,19 @@ module BulkImports
@token = token
@client = Graphlient::Client.new(
@url,
- request_headers
+ options(http: HTTP)
)
end
- def request_headers
- return {} unless @token
+ def options(extra = {})
+ return extra unless @token
{
headers: {
'Content-Type' => 'application/json',
'Authorization' => "Bearer #{@token}"
}
- }
+ }.merge(extra)
end
end
end
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 7bd054a42c4..6a973a7647f 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -10842,6 +10842,9 @@ msgstr ""
msgid "Error occurred. User was not unlocked"
msgstr ""
+msgid "Error parsing CSV file. Please make sure it has"
+msgstr ""
+
msgid "Error rendering markdown preview"
msgstr ""
@@ -10920,6 +10923,9 @@ msgstr ""
msgid "Errors"
msgstr ""
+msgid "Errors found on line %{line_number}: %{error_lines}. Please check if these lines have a requirement title."
+msgstr ""
+
msgid "Errors:"
msgstr ""
@@ -14163,6 +14169,9 @@ msgstr ""
msgid "ImportProjects|Update of imported projects with realtime changes failed"
msgstr ""
+msgid "Imported requirements"
+msgstr ""
+
msgid "Improve Issue Boards"
msgstr ""
@@ -14813,6 +14822,9 @@ msgstr ""
msgid "Invite member"
msgstr ""
+msgid "Invite team members"
+msgstr ""
+
msgid "Invite teammates (optional)"
msgstr ""
@@ -14879,7 +14891,7 @@ msgstr ""
msgid "InviteMembersModal|Some of the members could not be added"
msgstr ""
-msgid "InviteMembersModal|You're inviting members to the %{group_name} group"
+msgid "InviteMembersModal|You're inviting members to the %{name} %{type}"
msgstr ""
msgid "InviteMembers|Invite team members"
@@ -31211,6 +31223,9 @@ msgstr ""
msgid "Your CSV export of %{written_count} from project %{project_name} (%{project_url}) has been added to this email as an attachment."
msgstr ""
+msgid "Your CSV import for project"
+msgstr ""
+
msgid "Your Commit Email will be used for web based operations, such as edits and merges."
msgstr ""
@@ -31976,6 +31991,9 @@ msgstr ""
msgid "has already been taken"
msgstr ""
+msgid "has been completed."
+msgstr ""
+
msgid "help"
msgstr ""
@@ -32812,6 +32830,9 @@ msgstr ""
msgid "teammate%{number}@company.com"
msgstr ""
+msgid "the correct format."
+msgstr ""
+
msgid "the following issue(s)"
msgstr ""
diff --git a/package.json b/package.json
index c531f9e4f89..f9a0c721f12 100644
--- a/package.json
+++ b/package.json
@@ -162,7 +162,7 @@
},
"devDependencies": {
"@babel/plugin-transform-modules-commonjs": "^7.10.1",
- "@gitlab/eslint-plugin": "4.0.0",
+ "@gitlab/eslint-plugin": "4.1.0",
"@testing-library/dom": "^7.16.2",
"@vue/test-utils": "1.0.0-beta.30",
"acorn": "^6.3.0",
diff --git a/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb
index c23d375e5f8..2f2f40cba3b 100644
--- a/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb
+++ b/qa/qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb
@@ -3,7 +3,7 @@
module QA
RSpec.describe 'Manage', :smoke do
describe 'Project creation' do
- it 'user creates a new project', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/429', quarantine: { issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/280585', type: :investigating, only: { subdomain: :staging } } do
+ it 'user creates a new project', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/429' do
Flow::Login.sign_in
created_project = Resource::Project.fabricate_via_browser_ui! do |project|
diff --git a/spec/features/projects/navbar_spec.rb b/spec/features/projects/navbar_spec.rb
index 4ff3827b240..25791b393bc 100644
--- a/spec/features/projects/navbar_spec.rb
+++ b/spec/features/projects/navbar_spec.rb
@@ -67,4 +67,23 @@ RSpec.describe 'Project navbar' do
it_behaves_like 'verified navigation bar'
end
+
+ context 'when invite team members is not available' do
+ it 'does not display the js-invite-members-trigger' do
+ visit project_path(project)
+
+ expect(page).not_to have_selector('.js-invite-members-trigger')
+ end
+ end
+
+ context 'when invite team members is available' do
+ it 'includes the div for js-invite-members-trigger' do
+ stub_feature_flags(invite_members_group_modal: true)
+ allow_any_instance_of(InviteMembersHelper).to receive(:invite_members_allowed?).and_return(true)
+
+ visit project_path(project)
+
+ expect(page).to have_selector('.js-invite-members-trigger')
+ end
+ end
end
diff --git a/spec/frontend/helpers/startup_css_helper_spec.js b/spec/frontend/helpers/startup_css_helper_spec.js
index 1a88e80344e..2d560c43fa5 100644
--- a/spec/frontend/helpers/startup_css_helper_spec.js
+++ b/spec/frontend/helpers/startup_css_helper_spec.js
@@ -19,6 +19,26 @@ describe('waitForCSSLoaded', () => {
});
});
+ describe('when gon features is not provided', () => {
+ let originalGon;
+
+ beforeEach(() => {
+ originalGon = window.gon;
+ window.gon = null;
+ });
+
+ afterEach(() => {
+ window.gon = originalGon;
+ });
+
+ it('should invoke the action right away', async () => {
+ const events = waitForCSSLoaded(mockedCallback);
+ await events;
+
+ expect(mockedCallback).toHaveBeenCalledTimes(1);
+ });
+ });
+
describe('with startup css disabled', () => {
gon.features = {
startupCss: false,
diff --git a/spec/frontend/invite_members/components/invite_members_modal_spec.js b/spec/frontend/invite_members/components/invite_members_modal_spec.js
index 18c3699adc3..4ac2a28105c 100644
--- a/spec/frontend/invite_members/components/invite_members_modal_spec.js
+++ b/spec/frontend/invite_members/components/invite_members_modal_spec.js
@@ -3,8 +3,9 @@ import { GlDropdown, GlDropdownItem, GlDatepicker, GlSprintf, GlLink } from '@gi
import Api from '~/api';
import InviteMembersModal from '~/invite_members/components/invite_members_modal.vue';
-const groupId = '1';
-const groupName = 'testgroup';
+const id = '1';
+const name = 'testgroup';
+const isProject = false;
const accessLevels = { Guest: 10, Reporter: 20, Developer: 30, Maintainer: 40, Owner: 50 };
const defaultAccessLevel = '10';
const helpLink = 'https://example.com';
@@ -12,8 +13,9 @@ const helpLink = 'https://example.com';
const createComponent = (data = {}) => {
return shallowMount(InviteMembersModal, {
propsData: {
- groupId,
- groupName,
+ id,
+ name,
+ isProject,
accessLevels,
defaultAccessLevel,
helpLink,
@@ -113,7 +115,7 @@ describe('InviteMembersModal', () => {
});
it('calls Api inviteGroupMember with the correct params', () => {
- expect(Api.inviteGroupMember).toHaveBeenCalledWith(groupId, postData);
+ expect(Api.inviteGroupMember).toHaveBeenCalledWith(id, postData);
});
});
diff --git a/spec/support/services/issuable_import_csv_service_shared_examples.rb b/spec/support/services/issuable_import_csv_service_shared_examples.rb
index f2d84628106..20ac2ff5c7c 100644
--- a/spec/support/services/issuable_import_csv_service_shared_examples.rb
+++ b/spec/support/services/issuable_import_csv_service_shared_examples.rb
@@ -19,12 +19,10 @@ RSpec.shared_examples 'issuable import csv service' do |issuable_type|
end
shared_examples_for 'importer with email notification' do
- if issuable_type == 'issue'
- it 'notifies user of import result' do
- expect(Notify).to receive_message_chain(email_method, :deliver_later)
+ it 'notifies user of import result' do
+ expect(Notify).to receive_message_chain(email_method, :deliver_later)
- subject
- end
+ subject
end
end
diff --git a/yarn.lock b/yarn.lock
index 8690c4f36b1..d3861c0d69b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -845,10 +845,10 @@
resolved "https://registry.yarnpkg.com/@gitlab/at.js/-/at.js-1.5.5.tgz#5f6bfe6baaef360daa9b038fa78798d7a6a916b4"
integrity sha512-282Dn3SPVsUHVDhMsXgfnv+Rzog0uxecjttxGRQvxh25es1+xvkGQFsvJfkSKJ3X1kHVkSjKf+Tt5Rra+Jhp9g==
-"@gitlab/eslint-plugin@4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@gitlab/eslint-plugin/-/eslint-plugin-4.0.0.tgz#7beba53dea74f458d92040a8b2652e4fd60a6cc7"
- integrity sha512-Gba9HXwWOLAN+O2H8WmGNPZFQ410wiGFmhgDQ5Sx4ic/N1ymtwNen2pnsaWcw8KK/1vAB/rHNUhH4Xu/l/mfMg==
+"@gitlab/eslint-plugin@4.1.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@gitlab/eslint-plugin/-/eslint-plugin-4.1.0.tgz#b59b53b9cd984dc692cd094cca4fbe45e466c8b7"
+ integrity sha512-NjY8XqT9lPKxBiKeaIXAGPGuxLMmbns/W5YF/cqxfWMnMOCCGBPZjwwnPY5wzAeKocT014LCnA7k0ztIUN7DoQ==
dependencies:
babel-eslint "^10.0.3"
eslint-config-airbnb-base "^14.0.0"