| ... | @@ -20,12 +20,16 @@ describe WikiPage do |
... | @@ -20,12 +20,16 @@ describe WikiPage do |
|
|
context 'when there are pages' do
|
|
context 'when there are pages' do
|
|
|
before do
|
|
before do
|
|
|
create_page('dir_1/dir_1_1/page_3', 'content')
|
|
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_1/page_2', 'content')
|
|
|
create_page('dir_2/page_5', 'content')
|
|
create_page('dir_2/page_5', 'content')
|
|
|
|
create_page('page_6', 'content')
|
|
|
create_page('dir_2/page_4', 'content')
|
|
create_page('dir_2/page_4', 'content')
|
|
|
create_page('page_1', 'content')
|
|
|
|
|
end
|
|
end
|
|
|
|
|
|
|
let(:page_1) { wiki.find_page('page_1') }
|
|
let(:page_1) { wiki.find_page('page_1') }
|
|
|
|
let(:page_6) { wiki.find_page('page_6') }
|
|
|
|
|
|
|
let(:dir_1) do
|
|
let(:dir_1) do
|
|
|
WikiDirectory.new('dir_1', [wiki.find_page('dir_1/page_2')])
|
|
WikiDirectory.new('dir_1', [wiki.find_page('dir_1/page_2')])
|
|
|
end
|
|
end
|
| ... | @@ -38,11 +42,26 @@ describe WikiPage do |
... | @@ -38,11 +42,26 @@ describe WikiPage do |
|
|
WikiDirectory.new('dir_2', pages)
|
|
WikiDirectory.new('dir_2', pages)
|
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
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] }
|
|
|
|
|
|
|
it 'returns an array with pages and directories' do
|
|
it 'returns an array with pages and directories' do
|
|
|
expected_grouped_entries = [page_1, dir_1, dir_1_1, dir_2]
|
|
grouped_entries.each_with_index do |page_or_dir, i|
|
|
|
|
expected_page_or_dir = expected_grouped_entries[i]
|
|
|
|
expected_slugs = get_slugs(expected_page_or_dir)
|
|
|
|
slugs = get_slugs(page_or_dir)
|
|
|
|
|
|
|
|
grouped_entries = described_class.group_by_directory(wiki.pages)
|
|
expect(slugs).to match_array(expected_slugs)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
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] }
|
|
|
|
|
|
|
|
|
it 'returns an array with pages and directories' do
|
|
|
grouped_entries.each_with_index do |page_or_dir, i|
|
|
grouped_entries.each_with_index do |page_or_dir, i|
|
|
|
expected_page_or_dir = expected_grouped_entries[i]
|
|
expected_page_or_dir = expected_grouped_entries[i]
|
|
|
expected_slugs = get_slugs(expected_page_or_dir)
|
|
expected_slugs = get_slugs(expected_page_or_dir)
|
| ... | @@ -51,12 +70,10 @@ describe WikiPage do |
... | @@ -51,12 +70,10 @@ describe WikiPage do |
|
|
expect(slugs).to match_array(expected_slugs)
|
|
expect(slugs).to match_array(expected_slugs)
|
|
|
end
|
|
end
|
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
it 'returns an array sorted by alphabetical position' do
|
|
it 'returns an array with retained order with directories at the top' do
|
|
|
# Directories and pages within directories are sorted alphabetically.
|
|
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']
|
|
|
# Pages at root come before everything.
|
|
|
|
|
expected_order = ['page_1', 'dir_1/page_2', 'dir_1/dir_1_1/page_3',
|
|
|
|
|
'dir_2/page_4', 'dir_2/page_5']
|
|
|
|
|
|
|
|
|
|
grouped_entries = described_class.group_by_directory(wiki.pages)
|
|
grouped_entries = described_class.group_by_directory(wiki.pages)
|
|
|
|
|
|
| ... | |
... | |
| ... | | ... | |