Commit c65eace0151b524e7acb5ac52aafd8bd818e5dc0

Authored by Larissa Reis
1 parent e4777a8f

[media-panel-improvements] Test coverage

  Selenium tests for the new media panel. I also fixed the attach file
  step and a blog test.
features/blog.feature
... ... @@ -124,7 +124,7 @@ Feature: blog
124 124 Then I should not see "Delete cover image"
125 125  
126 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 128 Scenario: display cover image after uploading an image as the blog cover
129 129 Given the following blogs
130 130 | owner | name |
... ...
features/media_panel_upload_files.feature 0 → 100644
... ... @@ -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"
... ...
features/step_definitions/media_panel.rb 0 → 100644
... ... @@ -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 99 end
100 100  
101 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 103 with_scope(selector) do
103 104 attach_file(field, path)
104 105 end
... ... @@ -252,7 +253,7 @@ Then /^display "([^\"]*)"$/ do |element|
252 253 end
253 254  
254 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 257 end
257 258  
258 259 When /^(?:|I )follow exact "([^"]*)"(?: within "([^"]*)")?$/ do |link, selector|
... ...