Commit c65eace0151b524e7acb5ac52aafd8bd818e5dc0
1 parent
e4777a8f
Exists in
master
and in
29 other branches
[media-panel-improvements] Test coverage
Selenium tests for the new media panel. I also fixed the attach file step and a blog test.
Showing
4 changed files
with
271 additions
and
2 deletions
Show diff stats
features/blog.feature
@@ -124,7 +124,7 @@ Feature: blog | @@ -124,7 +124,7 @@ Feature: blog | ||
124 | Then I should not see "Delete cover image" | 124 | Then I should not see "Delete cover image" |
125 | 125 | ||
126 | # the step for attaching a file on the input only works with capybara 1.1.2, but it requires rails 1.9.3 | 126 | # the step for attaching a file on the input only works with capybara 1.1.2, but it requires rails 1.9.3 |
127 | - @selenium-fixme | 127 | + @selenium |
128 | Scenario: display cover image after uploading an image as the blog cover | 128 | Scenario: display cover image after uploading an image as the blog cover |
129 | Given the following blogs | 129 | Given the following blogs |
130 | | owner | name | | 130 | | owner | name | |
@@ -0,0 +1,238 @@ | @@ -0,0 +1,238 @@ | ||
1 | +Feature: uploads items on media panel | ||
2 | + As a noosfero user | ||
3 | + I want to uploads items when creating or editing articles | ||
4 | + | ||
5 | + Background: | ||
6 | + Given the following users | ||
7 | + | login | name | | ||
8 | + | joaosilva | Joao Silva | | ||
9 | + And feature "media_panel" is enabled on environment | ||
10 | + And I am logged in as "joaosilva" | ||
11 | + And I am on /myprofile/joaosilva/cms/new?type=TinyMceArticle | ||
12 | + | ||
13 | + Scenario: see media panel collapsed | ||
14 | + Then I should see "Insert media" | ||
15 | + And I should not see an element ".show-media-panel" | ||
16 | + | ||
17 | + @selenium | ||
18 | + Scenario: expand media panel | ||
19 | + When I follow "Show/Hide" | ||
20 | + Then I should see an element ".show-media-panel" | ||
21 | + | ||
22 | + @selenium | ||
23 | + Scenario: upload file showing percentage and name | ||
24 | + When I follow "Show/Hide" | ||
25 | + And I attach the file "public/images/rails.png" to "file" | ||
26 | + Then I should see "100%" | ||
27 | + And I should see "rails.png" | ||
28 | + | ||
29 | + @selenium | ||
30 | + Scenario: upload multiple files | ||
31 | + When I follow "Show/Hide" | ||
32 | + And I attach the file "public/images/rails.png" to "file" | ||
33 | + And I attach the file "public/503.jpg" to "file" | ||
34 | + Then I should see "rails.png" within "#file-1" | ||
35 | + And I should see "503.jpg" within "#file-2" | ||
36 | + | ||
37 | + @selenium | ||
38 | + Scenario: show error when upload fails | ||
39 | + When I follow "Show/Hide" | ||
40 | + And I attach the file "public/images/rails.png" to "file" | ||
41 | + # uploads the same file twice to induce error (unique name validation) | ||
42 | + And I attach the file "public/images/rails.png" to "file" | ||
43 | + Then I should see "rails.png" within "#file-1" | ||
44 | + And I should see "100%" within "#file-1" | ||
45 | + But I should see "Validation failed: Slug The title (article name) is already being used by another article, please use another title." within "#file-2" | ||
46 | + And The page should contain "div.error-message" | ||
47 | + | ||
48 | + @selenium | ||
49 | + Scenario: select destination folder | ||
50 | + When I follow "Show/Hide" | ||
51 | + And I attach the file "public/images/rails.png" to "file" | ||
52 | + And I select "joaosilva" from "parent_id" within "#media-upload-form" | ||
53 | + And I attach the file "public/503.jpg" to "file" | ||
54 | + And I go to joaosilva's cms | ||
55 | + Then I should not see "rails.png" | ||
56 | + But I should see "503.jpg" | ||
57 | + When I follow "Gallery" | ||
58 | + Then I should see "rails.png" | ||
59 | + But I should not see "503.jpg" | ||
60 | + | ||
61 | + @selenium | ||
62 | + Scenario: create new folder with parent | ||
63 | + Given I follow "Show/Hide" | ||
64 | + And I should see "joaosilva" within "#media-upload-form" | ||
65 | + And I should see "joaosilva/Gallery" within "#media-upload-form" | ||
66 | + And I should see "joaosilva" within "#published-media" | ||
67 | + And I should see "joaosilva/Gallery" within "#published-media" | ||
68 | + | ||
69 | + When I follow "New folder" | ||
70 | + And I select "joaosilva" from "parent_id" within "#new-folder-dialog" | ||
71 | + And I fill in "Name" with "Main folder" within "#new-folder-dialog" | ||
72 | + And I press "Create" | ||
73 | + Then I should see "joaosilva" within "#media-upload-form" | ||
74 | + And I should see "joaosilva/Gallery" within "#media-upload-form" | ||
75 | + And I should see "joaosilva/Main folder" within "#media-upload-form" | ||
76 | + And "joaosilva/Main folder" should be selected for "parent_id" within "#media-upload-form" | ||
77 | + And I should see "joaosilva" within "#published-media" | ||
78 | + And I should see "joaosilva/Gallery" within "#published-media" | ||
79 | + And I should see "joaosilva/Main folder" within "#published-media" | ||
80 | + | ||
81 | + When I follow "New folder" | ||
82 | + And I select "joaosilva/Gallery" from "parent_id" within "#new-folder-dialog" | ||
83 | + And I fill in "Name" with "Gallery folder" within "#new-folder-dialog" | ||
84 | + And I press "Create" | ||
85 | + Then I should see "joaosilva" within "#media-upload-form" | ||
86 | + And I should see "joaosilva/Gallery" within "#media-upload-form" | ||
87 | + And I should see "joaosilva/Main folder" within "#media-upload-form" | ||
88 | + And I should see "joaosilva/Gallery/Gallery folder" within "#media-upload-form" | ||
89 | + And "joaosilva/Gallery/Gallery folder" should be selected for "parent_id" within "#media-upload-form" | ||
90 | + And I should see "joaosilva" within "#published-media" | ||
91 | + And I should see "joaosilva/Gallery" within "#published-media" | ||
92 | + And I should see "joaosilva/Main folder" within "#published-media" | ||
93 | + And I should see "joaosilva/Gallery/Gallery folder" within "#published-media" | ||
94 | + | ||
95 | + @selenium | ||
96 | + Scenario: select type when create new folder | ||
97 | + When I follow "Show/Hide" | ||
98 | + And I follow "New folder" | ||
99 | + And I choose "Folder" within "#new-folder-dialog" | ||
100 | + And I fill in "Name" with "Main new folder" within "#new-folder-dialog" | ||
101 | + And I press "Create" | ||
102 | + Then I should see "joaosilva/Gallery/Main new folder" within "#parent_id" | ||
103 | + When I follow "New folder" | ||
104 | + And I choose "Gallery" within "#new-folder-dialog" | ||
105 | + And I fill in "Name" with "Gallery new folder" within "#new-folder-dialog" | ||
106 | + And I press "Create" | ||
107 | + And I go to joaosilva's cms | ||
108 | + And I follow "Gallery" | ||
109 | + Then I should see "Folder" within "tr[title='Main new folder'] td.article-mime" | ||
110 | + And I should see "Gallery" within "tr[title='Gallery new folder'] td.article-mime" | ||
111 | + | ||
112 | + @selenium | ||
113 | + Scenario: hide and show upload list | ||
114 | + When I follow "Show/Hide" | ||
115 | + And I attach the file "public/images/rails.png" to "file" | ||
116 | + And I attach the file "public/503.jpg" to "file" | ||
117 | + And I follow "Hide all uploads" | ||
118 | + Then I should not see "503.jpg" | ||
119 | + And I should not see "rails.png" | ||
120 | + When I follow "Show all uploads" | ||
121 | + Then I should see "503.jpg" | ||
122 | + And I should see "rails.png" | ||
123 | + | ||
124 | + @selenium | ||
125 | + Scenario: update recent media after file upload | ||
126 | + Given the following files | ||
127 | + | owner | file | mime | | ||
128 | + | joaosilva | other-pic.jpg | image/jpeg | | ||
129 | + When I go to /myprofile/joaosilva/cms/new?type=TinyMceArticle | ||
130 | + And I follow "Show/Hide" | ||
131 | + And I select "Recent media" from "parent_id" within "#published-media" | ||
132 | + Then I should see div with title "other-pic.jpg" within ".items" | ||
133 | + When I select "joaosilva" from "parent_id" within "#media-upload-form" | ||
134 | + And I attach the file "public/503.jpg" to "file" | ||
135 | + Then I should see div with title "503.jpg" within ".items" | ||
136 | + And I should see div with title "other-pic.jpg" within ".items" | ||
137 | + When I select "joaosilva/Gallery" from "parent_id" within "#media-upload-form" | ||
138 | + And I attach the file "public/images/rails.png" to "file" | ||
139 | + And I attach the file "public/robots.txt" to "file" | ||
140 | + Then I should see div with title "rails.png" within ".items" | ||
141 | + And I should see div with title "503.jpg" within ".items" | ||
142 | + And I should see div with title "other-pic.jpg" within ".items" | ||
143 | + And I should see "robots.txt" link | ||
144 | + | ||
145 | + @selenium | ||
146 | + Scenario: select folder to show items | ||
147 | + Given the following galleries | ||
148 | + | owner | name | | ||
149 | + | joaosilva | other-gallery | | ||
150 | + And the following files | ||
151 | + | owner | file | mime | parent | | ||
152 | + | joaosilva | rails.png | image/png | other-gallery | | ||
153 | + | joaosilva | other-pic.jpg | image/jpeg | gallery | | ||
154 | + When I go to /myprofile/joaosilva/cms/new?type=TinyMceArticle | ||
155 | + And I follow "Show/Hide" | ||
156 | + And I select "joaosilva/Gallery" from "parent_id" within "#published-media" | ||
157 | + Then I should see div with title "other-pic.jpg" within ".items" | ||
158 | + And I should not see div with title "rails.png" within ".items" | ||
159 | + When I select "joaosilva/other-gallery" from "parent_id" within "#published-media" | ||
160 | + Then I should see div with title "rails.png" within ".items" | ||
161 | + And I should not see div with title "other-pic.jpg" within ".items" | ||
162 | + | ||
163 | + @selenium | ||
164 | + Scenario: update selected folder content when upload file to same folder | ||
165 | + Given the following galleries | ||
166 | + | owner | name | | ||
167 | + | joaosilva | other-gallery | | ||
168 | + And the following files | ||
169 | + | owner | file | mime | parent | | ||
170 | + | joaosilva | other-pic.jpg | image/jpeg | gallery | | ||
171 | + When I go to /myprofile/joaosilva/cms/new?type=TinyMceArticle | ||
172 | + And I follow "Show/Hide" | ||
173 | + And I select "joaosilva/Gallery" from "parent_id" within "#published-media" | ||
174 | + And I select "joaosilva/Gallery" from "parent_id" within "#media-upload-form" | ||
175 | + And I attach the file "public/503.jpg" to "file" | ||
176 | + Then I should see div with title "other-pic.jpg" within ".items" | ||
177 | + And I should see div with title "503.jpg" within ".items" | ||
178 | + | ||
179 | + When I select "joaosilva/other-gallery" from "parent_id" within "#media-upload-form" | ||
180 | + And I attach the file "public/robots.txt" to "file" | ||
181 | + Then I should see div with title "other-pic.jpg" within ".items" | ||
182 | + And I should see div with title "503.jpg" within ".items" | ||
183 | + And I should not see "robots.txt" within ".items" | ||
184 | + | ||
185 | + @selenium | ||
186 | + Scenario: filter media with search | ||
187 | + Given the following galleries | ||
188 | + | owner | name | | ||
189 | + | joaosilva | other-gallery | | ||
190 | + And the following files | ||
191 | + | owner | file | mime | parent | | ||
192 | + | joaosilva | rails.png | image/png | other-gallery | | ||
193 | + When I go to /myprofile/joaosilva/cms/new?type=TinyMceArticle | ||
194 | + And I follow "Show/Hide" | ||
195 | + And I select "Recent media" from "parent_id" within "#published-media" | ||
196 | + And I fill in "Search" with "rails" within "#published-media" | ||
197 | + Then I should see div with title "rails.png" within ".items" | ||
198 | + When I select "joaosilva/Gallery" from "parent_id" within "#published-media" | ||
199 | + And I fill in "Search" with "rails" within "#published-media" | ||
200 | + Then I should not see div with title "rails.png" within ".items" | ||
201 | + When I select "joaosilva/other-gallery" from "parent_id" within "#published-media" | ||
202 | + And I fill in "Search" with "rails" within "#published-media" | ||
203 | + Then I should see div with title "rails.png" within ".items" | ||
204 | + | ||
205 | + @selenium | ||
206 | + Scenario: separete images from non-images | ||
207 | + When I follow "Show/Hide" | ||
208 | + Then I should not see "Images" | ||
209 | + And I should not see "Files" | ||
210 | + When I attach the file "public/robots.txt" to "file" | ||
211 | + And I attach the file "public/images/rails.png" to "file" | ||
212 | + Then I should see "Files" | ||
213 | + And I should see "robots.txt" within ".generics" | ||
214 | + But I should not see "rails.png" within ".generics" | ||
215 | + And I should see "Images" | ||
216 | + And I should see div with title "rails.png" within ".images" | ||
217 | + But I should not see div with title "robots.txt" within ".images" | ||
218 | + | ||
219 | + @selenium | ||
220 | + Scenario: view all media button if there are too many uploads | ||
221 | + Given the following galleries | ||
222 | + | owner | name | | ||
223 | + | joaosilva | other-gallery | | ||
224 | + | joaosilva | my-gallery | | ||
225 | + And the following files | ||
226 | + | owner | file | mime | parent | | ||
227 | + | joaosilva | rails.png | image/png | other-gallery | | ||
228 | + | joaosilva | other-pic.jpg | image/jpeg | other-gallery | | ||
229 | + | joaosilva | rails.png | image/png | my-gallery | | ||
230 | + | joaosilva | other-pic.jpg | image/jpeg | my-gallery | | ||
231 | + | joaosilva | rails.png | image/png | gallery | | ||
232 | + | joaosilva | other-pic.jpg | image/jpeg | gallery | | ||
233 | + When I go to /myprofile/joaosilva/cms/new?type=TinyMceArticle | ||
234 | + And I follow "Show/Hide" | ||
235 | + And I should not see "View all" | ||
236 | + And I attach the file "public/503.jpg" to "file" | ||
237 | + Then I should see "View all" link | ||
238 | + And I should see div with title "503.jpg" within ".images" |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +Then /^I should (not )?see an element "([^"]*)"$/ do |negate, selector| | ||
2 | + expectation = negate ? :should_not : :should | ||
3 | + page.html.send(expectation, have_css(selector)) | ||
4 | +end | ||
5 | + | ||
6 | +Then /^"([^"]*)" should be selected for "([^"]*)"(?: within "([^"]*)")?$/ do |value, field, selector| | ||
7 | + with_scope(selector) do | ||
8 | + field_labeled(field).find(:xpath, ".//option[@selected = 'selected'][text() = '#{value}']").should be_present | ||
9 | + end | ||
10 | +end | ||
11 | + | ||
12 | +Then /^(?:|I )should see div with title "([^"]*)"(?: within "([^"]*)")?$/ do |name, selector| | ||
13 | + with_scope(selector) do | ||
14 | + if page.respond_to? :should | ||
15 | + page.should have_xpath(".//div[@title='#{name}']") | ||
16 | + else | ||
17 | + assert page.has_xpath?(".//div[@title='#{name}']") | ||
18 | + end | ||
19 | + end | ||
20 | +end | ||
21 | + | ||
22 | +Then /^(?:|I )should not see div with title "([^"]*)"(?: within "([^"]*)")?$/ do |name, selector| | ||
23 | + with_scope(selector) do | ||
24 | + if page.respond_to? :should | ||
25 | + page.should have_no_xpath(".//div[@title='#{name}']") | ||
26 | + else | ||
27 | + assert page.has_no_xpath?(".//div[@title='#{name}']") | ||
28 | + end | ||
29 | + end | ||
30 | +end |
features/step_definitions/web_steps.rb
@@ -99,6 +99,7 @@ When /^(?:|I )choose "([^"]*)"(?: within "([^"]*)")?$/ do |field, selector| | @@ -99,6 +99,7 @@ When /^(?:|I )choose "([^"]*)"(?: within "([^"]*)")?$/ do |field, selector| | ||
99 | end | 99 | end |
100 | 100 | ||
101 | When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"(?: within "([^"]*)")?$/ do |path, field, selector| | 101 | When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"(?: within "([^"]*)")?$/ do |path, field, selector| |
102 | + path = File.expand_path(path).gsub('/', File::ALT_SEPARATOR || File::SEPARATOR) | ||
102 | with_scope(selector) do | 103 | with_scope(selector) do |
103 | attach_file(field, path) | 104 | attach_file(field, path) |
104 | end | 105 | end |
@@ -252,7 +253,7 @@ Then /^display "([^\"]*)"$/ do |element| | @@ -252,7 +253,7 @@ Then /^display "([^\"]*)"$/ do |element| | ||
252 | end | 253 | end |
253 | 254 | ||
254 | Then /^there should be a div with class "([^"]*)"$/ do |klass| | 255 | Then /^there should be a div with class "([^"]*)"$/ do |klass| |
255 | - should have_selector('div', :class => klass) | 256 | + should have_selector("div.#{klass}") |
256 | end | 257 | end |
257 | 258 | ||
258 | When /^(?:|I )follow exact "([^"]*)"(?: within "([^"]*)")?$/ do |link, selector| | 259 | When /^(?:|I )follow exact "([^"]*)"(?: within "([^"]*)")?$/ do |link, selector| |