From 996c6bf06f602ada62e3f754c121c17051072892 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 27 Feb 2020 03:08:49 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- spec/frontend/lib/utils/text_utility_spec.js | 23 ++++++++++++++-- .../components/release_block_header_spec.js | 4 +-- .../releases/components/release_block_spec.js | 6 ++-- spec/graphql/resolvers/issues_resolver_spec.rb | 32 ++++++++++++++++++---- spec/models/project_spec.rb | 12 ++++---- 5 files changed, 58 insertions(+), 19 deletions(-) (limited to 'spec') diff --git a/spec/frontend/lib/utils/text_utility_spec.js b/spec/frontend/lib/utils/text_utility_spec.js index 803b3629524..dc8f6c64136 100644 --- a/spec/frontend/lib/utils/text_utility_spec.js +++ b/spec/frontend/lib/utils/text_utility_spec.js @@ -94,8 +94,27 @@ describe('text_utility', () => { }); describe('convertToCamelCase', () => { - it('converts snake_case string to camelCase string', () => { - expect(textUtils.convertToCamelCase('snake_case')).toBe('snakeCase'); + it.each` + txt | result + ${'a_snake_cased_string'} | ${'aSnakeCasedString'} + ${'_leading_underscore'} | ${'_leadingUnderscore'} + ${'__leading_underscores'} | ${'__leadingUnderscores'} + ${'trailing_underscore_'} | ${'trailingUnderscore_'} + ${'trailing_underscores__'} | ${'trailingUnderscores__'} + `('converts string "$txt" to "$result"', ({ txt, result }) => { + expect(textUtils.convertToCamelCase(txt)).toBe(result); + }); + + it.each` + txt + ${'__withoutMiddleUnderscores__'} + ${''} + ${'with spaces'} + ${'with\nnew\r\nlines'} + ${'_'} + ${'___'} + `('does not modify string "$txt"', ({ txt }) => { + expect(textUtils.convertToCamelCase(txt)).toBe(txt); }); }); diff --git a/spec/frontend/releases/components/release_block_header_spec.js b/spec/frontend/releases/components/release_block_header_spec.js index 78adad13f69..44f6f63fa79 100644 --- a/spec/frontend/releases/components/release_block_header_spec.js +++ b/spec/frontend/releases/components/release_block_header_spec.js @@ -37,13 +37,13 @@ describe('Release block header', () => { const link = findHeaderLink(); expect(link.text()).toBe(release.name); - expect(link.attributes('href')).toBe(release.Links.self); + expect(link.attributes('href')).toBe(release._links.self); }); }); describe('when _links.self is missing', () => { beforeEach(() => { - factory({ Links: { self: null } }); + factory({ _links: { self: null } }); }); it('renders the title as text', () => { diff --git a/spec/frontend/releases/components/release_block_spec.js b/spec/frontend/releases/components/release_block_spec.js index 5d365b77560..ff88e3193bc 100644 --- a/spec/frontend/releases/components/release_block_spec.js +++ b/spec/frontend/releases/components/release_block_spec.js @@ -63,7 +63,7 @@ describe('Release block', () => { it('renders an edit button that links to the "Edit release" page', () => { expect(editButton().exists()).toBe(true); - expect(editButton().attributes('href')).toBe(release.Links.editUrl); + expect(editButton().attributes('href')).toBe(release._links.editUrl); }); it('renders release name', () => { @@ -150,8 +150,8 @@ describe('Release block', () => { }); }); - it("does not render an edit button if release.Links.editUrl isn't a string", () => { - delete release.Links; + it("does not render an edit button if release._links.editUrl isn't a string", () => { + delete release._links; return factory(release).then(() => { expect(editButton().exists()).toBe(false); diff --git a/spec/graphql/resolvers/issues_resolver_spec.rb b/spec/graphql/resolvers/issues_resolver_spec.rb index 3fbb7280465..7cfef9b4cc7 100644 --- a/spec/graphql/resolvers/issues_resolver_spec.rb +++ b/spec/graphql/resolvers/issues_resolver_spec.rb @@ -8,11 +8,13 @@ describe Resolvers::IssuesResolver do let(:current_user) { create(:user) } context "with a project" do - let_it_be(:project) { create(:project) } - let_it_be(:issue1) { create(:issue, project: project, state: :opened, created_at: 3.hours.ago, updated_at: 3.hours.ago) } - let_it_be(:issue2) { create(:issue, project: project, state: :closed, title: 'foo', created_at: 1.hour.ago, updated_at: 1.hour.ago, closed_at: 1.hour.ago) } - let_it_be(:label1) { create(:label, project: project) } - let_it_be(:label2) { create(:label, project: project) } + let_it_be(:project) { create(:project) } + let_it_be(:milestone) { create(:milestone, project: project) } + let_it_be(:assignee) { create(:user) } + let_it_be(:issue1) { create(:issue, project: project, state: :opened, created_at: 3.hours.ago, updated_at: 3.hours.ago, milestone: milestone) } + let_it_be(:issue2) { create(:issue, project: project, state: :closed, title: 'foo', created_at: 1.hour.ago, updated_at: 1.hour.ago, closed_at: 1.hour.ago, assignees: [assignee]) } + let_it_be(:label1) { create(:label, project: project) } + let_it_be(:label2) { create(:label, project: project) } before do project.add_developer(current_user) @@ -31,6 +33,26 @@ describe Resolvers::IssuesResolver do expect(resolve_issues(state: 'closed')).to contain_exactly(issue2) end + it 'filters by milestone' do + expect(resolve_issues(milestone_title: milestone.title)).to contain_exactly(issue1) + end + + it 'filters by assignee_username' do + expect(resolve_issues(assignee_username: assignee.username)).to contain_exactly(issue2) + end + + it 'filters by assignee_id' do + expect(resolve_issues(assignee_id: assignee.id)).to contain_exactly(issue2) + end + + it 'filters by any assignee' do + expect(resolve_issues(assignee_id: IssuableFinder::FILTER_ANY)).to contain_exactly(issue2) + end + + it 'filters by no assignee' do + expect(resolve_issues(assignee_id: IssuableFinder::FILTER_NONE)).to contain_exactly(issue1) + end + it 'filters by labels' do expect(resolve_issues(label_name: [label1.title])).to contain_exactly(issue1, issue2) expect(resolve_issues(label_name: [label1.title, label2.title])).to contain_exactly(issue2) diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 6c90a1b5614..9b1c724f0c2 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -1791,21 +1791,19 @@ describe Project do let(:project) { create(:project, :repository) } let(:repo) { double(:repo, exists?: true) } let(:wiki) { double(:wiki, exists?: true) } - let(:design) { double(:wiki, exists?: false) } it 'expires the caches of the repository and wiki' do + # In EE, there are design repositories as well + allow(Repository).to receive(:new).and_call_original + allow(Repository).to receive(:new) - .with('foo', project) + .with('foo', project, shard: project.repository_storage) .and_return(repo) allow(Repository).to receive(:new) - .with('foo.wiki', project) + .with('foo.wiki', project, shard: project.repository_storage, repo_type: Gitlab::GlRepository::WIKI) .and_return(wiki) - allow(Repository).to receive(:new) - .with('foo.design', project) - .and_return(design) - expect(repo).to receive(:before_delete) expect(wiki).to receive(:before_delete) -- cgit v1.2.3