diff options
Diffstat (limited to 'spec/factories/wiki_pages.rb')
-rw-r--r-- | spec/factories/wiki_pages.rb | 56 |
1 files changed, 52 insertions, 4 deletions
diff --git a/spec/factories/wiki_pages.rb b/spec/factories/wiki_pages.rb index 86571f062ba..8eb7a12a928 100644 --- a/spec/factories/wiki_pages.rb +++ b/spec/factories/wiki_pages.rb @@ -5,17 +5,22 @@ require 'ostruct' FactoryBot.define do factory :wiki_page do transient do + title { generate(:wiki_page_title) } + content { 'Content for wiki page' } + format { 'markdown' } + project { create(:project) } attrs do { - title: 'Title.with.dot', - content: 'Content for wiki page', - format: 'markdown' + title: title, + content: content, + format: format } end end page { OpenStruct.new(url_path: 'some-name') } - association :wiki, factory: :project_wiki, strategy: :build + wiki { build(:project_wiki, project: project) } + initialize_with { new(wiki, page) } before(:create) do |page, evaluator| @@ -25,5 +30,48 @@ FactoryBot.define do to_create do |page| page.create end + + trait :with_real_page do + project { create(:project, :repository) } + + page do + wiki.create_page(title, content) + page_title, page_dir = wiki.page_title_and_dir(title) + wiki.wiki.page(title: page_title, dir: page_dir, version: nil) + end + end end + + factory :wiki_page_meta, class: 'WikiPage::Meta' do + title { generate(:wiki_page_title) } + project { create(:project) } + + trait :for_wiki_page do + transient do + wiki_page { create(:wiki_page, project: project) } + end + + project { @overrides[:wiki_page]&.project || create(:project) } + title { wiki_page.title } + + initialize_with do + raise 'Metadata only available for valid pages' unless wiki_page.valid? + + WikiPage::Meta.find_or_create(wiki_page.slug, wiki_page) + end + end + end + + factory :wiki_page_slug, class: 'WikiPage::Slug' do + wiki_page_meta { create(:wiki_page_meta) } + slug { generate(:sluggified_title) } + canonical { false } + + trait :canonical do + canonical { true } + end + end + + sequence(:wiki_page_title) { |n| "Page #{n}" } + sequence(:sluggified_title) { |n| "slug-#{n}" } end |