summaryrefslogtreecommitdiff
path: root/features/steps/project/wiki.rb
blob: aa00818c6021506a427d4f08f980c1eec5f291bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
class Spinach::Features::ProjectWiki < Spinach::FeatureSteps
  include SharedAuthentication
  include SharedProject
  include SharedNote
  include SharedPaths

  step 'I click on the Cancel button' do
    within(:css, ".form-actions") do
      click_on "Cancel"
    end
  end

  step 'I should be redirected back to the Edit Home Wiki page' do
    current_path.should == project_wiki_path(project, :home)
  end

  step 'I create the Wiki Home page' do
    fill_in "wiki_content", with: '[link test](test)'
    click_on "Create page"
  end

  step 'I should see the newly created wiki page' do
    page.should have_content "Home"
    page.should have_content "link test"

    click_link "link test"
    page.should have_content "Editing"
  end

  step 'I have an existing Wiki page' do
    wiki.create_page("existing", "content", :markdown, "first commit")
    @page = wiki.find_page("existing")
  end

  step 'I browse to that Wiki page' do
    visit project_wiki_path(project, @page)
  end

  step 'I click on the Edit button' do
    click_on "Edit"
  end

  step 'I change the content' do
    fill_in "Content", with: 'Updated Wiki Content'
    click_on "Save changes"
  end

  step 'I should see the updated content' do
    page.should have_content "Updated Wiki Content"
  end

  step 'I should be redirected back to that Wiki page' do
    current_path.should == project_wiki_path(project, @page)
  end

  step 'That page has two revisions' do
    @page.update("new content", :markdown, "second commit")
  end

  step 'I click the History button' do
    click_on "History"
  end

  step 'I should see both revisions' do
    page.should have_content current_user.name
    page.should have_content "first commit"
    page.should have_content "second commit"
  end

  step 'I click on the "Delete this page" button' do
    click_on "Delete this page"
  end

  step 'The page should be deleted' do
    page.should have_content "Page was successfully deleted"
  end

  step 'I click on the "Pages" button' do
    click_on "Pages"
  end

  step 'I should see the existing page in the pages list' do
    page.should have_content current_user.name
    page.should have_content @page.title
  end

  step 'I have an existing Wiki page with images linked on page' do
    wiki.create_page("pictures", "Look at this [image](image.jpg)\n\n ![image](image.jpg)", :markdown, "first commit")
    @wiki_page = wiki.find_page("pictures")
  end

  step 'I browse to wiki page with images' do
    visit project_wiki_path(project, @wiki_page)
  end

  step 'I click on existing image link' do
    file = Gollum::File.new(wiki.wiki)
    Gollum::Wiki.any_instance.stub(:file).with("image.jpg", "master", true).and_return(file)
    Gollum::File.any_instance.stub(:mime_type).and_return("image/jpeg")
    page.should have_link('image', href: "image.jpg")
    click_on "image"
  end

  step 'I should see the image from wiki repo' do
    current_path.should match('wikis/image.jpg')
    page.should_not have_xpath('/html') # Page should render the image which means there is no html involved
    Gollum::Wiki.any_instance.unstub(:file)
    Gollum::File.any_instance.unstub(:mime_type)
  end

  step 'Image should be shown on the page' do
    page.should have_xpath("//img[@src=\"image.jpg\"]")
  end

  step 'I click on image link' do
    page.should have_link('image', href: "image.jpg")
    click_on "image"
  end

  step 'I should see the new wiki page form' do
    current_path.should match('wikis/image.jpg')
    page.should have_content('New Wiki Page')
    page.should have_content('Editing - image.jpg')
  end

  def wiki
    @project_wiki = ProjectWiki.new(project, current_user)
  end
end