|
31 | 31 | require "spec_helper" |
32 | 32 |
|
33 | 33 | RSpec.describe MenuItems::WikiMenuItem do |
34 | | - before do |
35 | | - @project = create(:project, enabled_module_names: %w[activity]) |
36 | | - @current = create(:user, login: "user1", mail: "user1@users.com") |
| 34 | + let(:project) { create(:project, :with_internal_wiki, enabled_module_names: ["activity"]) } |
| 35 | + let(:user) { create(:user) } |
37 | 36 |
|
38 | | - allow(User).to receive(:current).and_return(@current) |
| 37 | + before do |
| 38 | + allow(User).to receive(:current).and_return(user) |
39 | 39 | end |
40 | 40 |
|
41 | | - it "creates a default wiki menu item when enabling the wiki" do |
42 | | - expect(MenuItems::WikiMenuItem.all).not_to be_any |
| 41 | + it "creates a default wiki menu item when an internal wiki is added" do |
| 42 | + expect(described_class.count).to eq(0) |
43 | 43 |
|
44 | | - @project.enabled_modules << EnabledModule.new(name: "wiki") |
45 | | - @project.reload |
| 44 | + expect { project }.to change(described_class, :count).by(1) |
46 | 45 |
|
47 | | - wiki_item = @project.wiki.wiki_menu_items.first |
| 46 | + wiki_item = project.wiki.wiki_menu_items&.first |
48 | 47 | expect(wiki_item.name).to eql "wiki" |
49 | 48 | expect(wiki_item.title).to eql "Wiki" |
50 | 49 | expect(wiki_item.slug).to eql "wiki" |
51 | 50 | expect(wiki_item.options[:index_page]).to be true |
52 | 51 | expect(wiki_item.options[:new_wiki_page]).to be true |
53 | 52 | end |
54 | 53 |
|
55 | | - it "changes title when a wikipage is renamed" do |
56 | | - wikipage = create(:wiki_page, title: "Oldtitle") |
| 54 | + it "changes title when a wiki_page is renamed" do |
| 55 | + wiki_page = create(:wiki_page, title: "Oldtitle") |
57 | 56 |
|
58 | | - menu_item_1 = create(:wiki_menu_item, navigatable_id: wikipage.wiki.id, |
59 | | - title: "Item 1", |
60 | | - name: wikipage.slug) |
| 57 | + menu_item = create(:wiki_menu_item, navigatable_id: wiki_page.wiki.id, title: "Item 1", name: wiki_page.slug) |
61 | 58 |
|
62 | | - wikipage.title = "Newtitle" |
63 | | - wikipage.save! |
| 59 | + wiki_page.update!(title: "Newtitle") |
64 | 60 |
|
65 | | - menu_item_1.reload |
66 | | - expect(menu_item_1.title).to eq(wikipage.title) |
| 61 | + expect(menu_item.reload.title).to eq(wiki_page.title) |
67 | 62 | end |
68 | 63 |
|
69 | 64 | it "does not allow duplicate sibling entries" do |
70 | | - wikipage = create(:wiki_page, title: "Parent Page") |
| 65 | + wiki_page = create(:wiki_page, title: "Parent Page") |
71 | 66 |
|
72 | 67 | parent = create( |
73 | | - :wiki_menu_item, navigatable_id: wikipage.wiki.id, title: "Item 1", name: wikipage.slug |
| 68 | + :wiki_menu_item, navigatable_id: wiki_page.wiki.id, title: "Item 1", name: wiki_page.slug |
74 | 69 | ) |
75 | | - child_1 = parent.children.create name: "child-1", title: "Child 1" |
76 | | - |
| 70 | + parent.children.create name: "child-1", title: "Child 1" |
77 | 71 | child_2 = parent.children.build name: "child-1", title: "Child 2" |
78 | 72 |
|
79 | 73 | expect { child_2.save! }.to raise_error /Name has already been taken/ |
80 | 74 | end |
81 | 75 |
|
82 | 76 | describe "it should destroy" do |
83 | | - before do |
84 | | - @project.enabled_modules << EnabledModule.new(name: "wiki") |
85 | | - @project.reload |
86 | | - |
87 | | - @menu_item_1 = create(:wiki_menu_item, wiki: @project.wiki, |
88 | | - name: "Item 1", |
89 | | - title: "Item 1") |
90 | | - |
91 | | - @menu_item_2 = create(:wiki_menu_item, wiki: @project.wiki, |
92 | | - name: "Item 2", |
93 | | - parent_id: @menu_item_1.id, |
94 | | - title: "Item 2") |
95 | | - end |
| 77 | + let!(:first_menu_item) { create(:wiki_menu_item, wiki: project.wiki) } |
| 78 | + let!(:second_menu_item) { create(:wiki_menu_item, wiki: project.wiki, parent: first_menu_item) } |
96 | 79 |
|
97 | 80 | it "all children when deleting the parent" do |
98 | | - @menu_item_1.destroy |
| 81 | + first_menu_item.destroy |
99 | 82 |
|
100 | | - expect { MenuItems::WikiMenuItem.find(@menu_item_1.id) }.to raise_error(ActiveRecord::RecordNotFound) |
101 | | - expect { MenuItems::WikiMenuItem.find(@menu_item_2.id) }.to raise_error(ActiveRecord::RecordNotFound) |
| 83 | + expect { described_class.find(first_menu_item.id) }.to raise_error(ActiveRecord::RecordNotFound) |
| 84 | + expect { described_class.find(second_menu_item.id) }.to raise_error(ActiveRecord::RecordNotFound) |
102 | 85 | end |
103 | 86 |
|
104 | 87 | describe "all items when destroying" do |
105 | 88 | it "the associated project" do |
106 | | - @project.destroy |
107 | | - expect(MenuItems::WikiMenuItem.all).not_to be_any |
| 89 | + expect { project.destroy }.to change(described_class, :count).to(0) |
108 | 90 | end |
109 | 91 |
|
110 | 92 | it "the associated wiki" do |
111 | | - @project.wiki.destroy |
112 | | - expect(MenuItems::WikiMenuItem.all).not_to be_any |
| 93 | + expect { project.wiki.destroy }.to change(described_class, :count).to(0) |
113 | 94 | end |
114 | 95 | end |
115 | 96 | end |
|
0 commit comments