diff options
author | Douwe Maan <douwe@gitlab.com> | 2019-04-12 13:25:18 +0000 |
---|---|---|
committer | GitLab Release Tools Bot <robert+release-tools@gitlab.com> | 2019-04-12 13:27:02 +0000 |
commit | 8728176f7427521654448b90e9590a063a12a2c5 (patch) | |
tree | 55da9724dd51cb7cc5a35b921a600c0a669cfd17 | |
parent | 2d66ee481c4b0ec58c06280e1acf20699c2fe643 (diff) | |
download | gitlab-ce-8728176f7427521654448b90e9590a063a12a2c5.tar.gz |
Merge branch 'id-undefined-pages-for-wiki-page' into 'master'
Fix grouping wiki pages by directory
See merge request gitlab-org/gitlab-ce!27294
(cherry picked from commit c61fd077a42b1498dc82cc5fb17a0efcc9d758d5)
0595bbff Fix grouping wiki pages by directory
-rw-r--r-- | app/models/wiki_page.rb | 4 | ||||
-rw-r--r-- | spec/models/wiki_page_spec.rb | 8 |
2 files changed, 8 insertions, 4 deletions
diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb index 909da4316d0..cd4c7895587 100644 --- a/app/models/wiki_page.rb +++ b/app/models/wiki_page.rb @@ -31,7 +31,9 @@ class WikiPage pages.each_with_object([]) do |page, grouped_pages| next grouped_pages << page unless page.directory.present? - directory = grouped_pages.find { |dir| dir.slug == page.directory } + directory = grouped_pages.find do |obj| + obj.is_a?(WikiDirectory) && obj.slug == page.directory + end next directory.pages << page if directory diff --git a/spec/models/wiki_page_spec.rb b/spec/models/wiki_page_spec.rb index cacdb0e0595..d5c85c11195 100644 --- a/spec/models/wiki_page_spec.rb +++ b/spec/models/wiki_page_spec.rb @@ -22,6 +22,7 @@ describe WikiPage do create_page('dir_1/dir_1_1/page_3', 'content') create_page('page_1', 'content') create_page('dir_1/page_2', 'content') + create_page('dir_2', 'page with dir name') create_page('dir_2/page_5', 'content') create_page('page_6', 'content') create_page('dir_2/page_4', 'content') @@ -29,6 +30,7 @@ describe WikiPage do let(:page_1) { wiki.find_page('page_1') } let(:page_6) { wiki.find_page('page_6') } + let(:page_dir_2) { wiki.find_page('dir_2') } let(:dir_1) do WikiDirectory.new('dir_1', [wiki.find_page('dir_1/page_2')]) @@ -44,7 +46,7 @@ describe WikiPage do context 'sort by title' do let(:grouped_entries) { described_class.group_by_directory(wiki.pages) } - let(:expected_grouped_entries) { [dir_1_1, dir_1, dir_2, page_1, page_6] } + let(:expected_grouped_entries) { [dir_1_1, dir_1, page_dir_2, dir_2, page_1, page_6] } it 'returns an array with pages and directories' do grouped_entries.each_with_index do |page_or_dir, i| @@ -59,7 +61,7 @@ describe WikiPage do context 'sort by created_at' do let(:grouped_entries) { described_class.group_by_directory(wiki.pages(sort: 'created_at')) } - let(:expected_grouped_entries) { [dir_1_1, page_1, dir_1, dir_2, page_6] } + let(:expected_grouped_entries) { [dir_1_1, page_1, dir_1, page_dir_2, dir_2, page_6] } it 'returns an array with pages and directories' do grouped_entries.each_with_index do |page_or_dir, i| @@ -73,7 +75,7 @@ describe WikiPage do end it 'returns an array with retained order with directories at the top' do - expected_order = ['dir_1/dir_1_1/page_3', 'dir_1/page_2', 'dir_2/page_4', 'dir_2/page_5', 'page_1', 'page_6'] + expected_order = ['dir_1/dir_1_1/page_3', 'dir_1/page_2', 'dir_2', 'dir_2/page_4', 'dir_2/page_5', 'page_1', 'page_6'] grouped_entries = described_class.group_by_directory(wiki.pages) |