Commit f511eb49d511870262f90636db6c26ee36196b1e
Exists in
master
and in
28 other branches
Merge branch 'master' into stable
Showing
477 changed files
with
33932 additions
and
5764 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 477 files displayed.
AUTHORS
... | ... | @@ -13,16 +13,30 @@ Alessandro Palmeira + Caio Salgado <alessandro.palmeira@gmail.com> |
13 | 13 | Alessandro Palmeira + Caio Salgado <caio.csalgado@gmail.com> |
14 | 14 | Alessandro Palmeira + Caio Salgado + Diego Araújo + João M. M. da Silva <diegoamc90@gmail.com> |
15 | 15 | Alessandro Palmeira + Carlos Morais <alessandro.palmeira@gmail.com> |
16 | +Alessandro Palmeira + Daniel Alves <alessandro.palmeira@gmail.com> | |
17 | +Alessandro Palmeira + Daniel Alves + Diego Araújo <diegoamc90@gmail.com> | |
18 | +Alessandro Palmeira + Daniel Alves + Diego Araújo + Guilherme Rojas <danpaulalves@gmail.com> | |
19 | +Alessandro Palmeira + Diego Araujo <alessandro.palmeira@gmail.com> | |
16 | 20 | Alessandro Palmeira + Diego Araújo <alessandro.palmeira@gmail.com> |
21 | +Alessandro Palmeira + Diego Araujo + Daniela Feitosa <alessandro.palmeira@gmail.com> | |
22 | +Alessandro Palmeira + Diego Araujo <diegoamc90@gmail.com> | |
17 | 23 | Alessandro Palmeira + Diego Araújo <diegoamc90@gmail.com> |
24 | +Alessandro Palmeira + Diego Araujo + Eduardo Morais <alessandro.palmeira@gmail.com> | |
25 | +Alessandro Palmeira + Diego Araújo + João M. M. da Silva <alessandro.palmeira@gmail.com> | |
26 | +Alessandro Palmeira + Diego Araújo + João M. M. da Silva <diegoamc90@gmail.com> | |
27 | +Alessandro Palmeira + Diego Araujo + João M. M. da Silva + Paulo Meirelles <alessandro.palmeira@gmail.com> | |
18 | 28 | Alessandro Palmeira + Diego Araújo + Pedro Leal <diegoamc90@gmail.com> |
19 | 29 | Alessandro Palmeira + Diego Araújo + Pedro Leal + João M. M. da Silva <diegoamc90@gmail.com> |
20 | 30 | Alessandro Palmeira + Diego Araujo + Rafael Manzo <alessandro.palmeira@gmail.com> |
31 | +Alessandro Palmeira + Eduardo Morais <alessandro.palmeira@gmail.com> | |
32 | +Alessandro Palmeira + Guilherme Rojas <alessandro.palmeira@gmail.com> | |
21 | 33 | Alessandro Palmeira + Jefferson Fernandes <alessandro.palmeira@gmail.com> |
22 | 34 | Alessandro Palmeira + João M. M. da Silva <alessandro.palmeira@gmail.com> |
35 | +Alessandro Palmeira + Joao M. M. da Silva + Diego Araujo <alessandro.palmeira@gmail.com> | |
23 | 36 | Alessandro Palmeira + João M. M. da Silva + Renan Teruo <alessandro.palmeira@gmail.com> |
24 | 37 | Alessandro Palmeira + João M. M. Silva <alessandro.palmeira@gmail.com> |
25 | 38 | Alessandro Palmeira + Paulo Meirelles <alessandro.palmeira@gmail.com> |
39 | +Alessandro Palmeira + Paulo Meirelles + João M. M. da Silva <alessandro.palmeira@gmail.com> | |
26 | 40 | Alessandro Palmeira + Rafael Manzo <alessandro.palmeira@gmail.com> |
27 | 41 | Antonio Terceiro + Carlos Morais <terceiro@colivre.coop.br> |
28 | 42 | Antonio Terceiro + Paulo Meirelles <terceiro@colivre.coop.br> |
... | ... | @@ -32,6 +46,7 @@ Braulio Bhavamitra <brauliobo@gmail.com> |
32 | 46 | Bráulio Bhavamitra <brauliobo@gmail.com> |
33 | 47 | Caio <caio.csalgado@gmail.com> |
34 | 48 | Caio + Diego + Pedro + João <caio.csalgado@gmail.com> |
49 | +Caio Formiga <caio.formiga@gmail.com> | |
35 | 50 | Caio, Pedro <caio.csalgado@gmail.com> |
36 | 51 | Caio Salgado + Alessandro Palmeira <caio.csalgado@gmail.com> |
37 | 52 | Caio Salgado <caio.csalgado@gmail.com> |
... | ... | @@ -57,26 +72,42 @@ Carlos Morais + Diego Araújo <diegoamc90@gmail.com> |
57 | 72 | Carlos Morais + Eduardo Morais <carlos88morais@gmail.com> |
58 | 73 | Carlos Morais + Paulo Meirelles <carlos88morais@gmail.com> |
59 | 74 | Carlos Morais + Pedro Leal <carlos88morais@gmail.com> |
75 | +Daniel Alves + Diego Araújo <danpaulalves@gmail.com> | |
76 | +Daniel Alves + Diego Araújo <diegoamc90@gmail.com> | |
77 | +Daniel Alves + Diego Araújo + Guilherme Rojas <danpaulalves@gmail.com> | |
78 | +Daniel Alves + Diego Araújo + Guilherme Rojas <diegoamc90@gmail.com> | |
79 | +Daniel Alves + Diego Araújo + Guilherme Rojas <guilhermehrojas@gmail.com> | |
80 | +Daniel Alves + Guilherme Rojas <danpaulalves@gmail.com> | |
81 | +Daniel Alves + Rafael Manzo <rr.manzo@gmail.com> | |
60 | 82 | Daniela Soares Feitosa <danielafeitosa@colivre.coop.br> |
61 | 83 | Daniel Cunha <daniel@colivre.coop.br> |
62 | 84 | diegoamc <diegoamc90@gmail.com> |
63 | 85 | Diego Araújo + Alessandro Palmeira <diegoamc90@gmail.com> |
86 | +Diego Araújo + Alessandro Palmeira + João M. M. da Silva <diegoamc90@gmail.com> | |
87 | +Diego Araújo + Alessandro Palmeira + Rafael Manzo <rr.manzo@gmail.com> | |
64 | 88 | Diego Araujo + Caio Salgado <diegoamc90@gmail.com> |
89 | +Diego Araújo + Daniel Alves + Rafael Manzo <rr.manzo@gmail.com> | |
65 | 90 | Diego Araújo <diegoamc90@gmail.com> |
91 | +Diego Araújo + Eduardo Morais + Paulo Meirelles <diegoamc90@gmail.com> | |
92 | +Diego Araújo + Guilherme Rojas <diegoamc90@gmail.com> | |
66 | 93 | Diego Araújo + Jefferson Fernandes <diegoamc90@gmail.com> |
67 | 94 | Diego Araujo + Jefferson Fernandes <jeffs.fernandes@gmail.com> |
68 | 95 | Diego Araújo + João Machini <diegoamc90@gmail.com> |
69 | 96 | Diego Araújo + João Machini <digoamc90@gmail.com> |
97 | +Diego Araújo + João M. M. da Silva + Alessandro Palmeira <jaodsilv@linux.ime.usp.br> | |
70 | 98 | Diego Araújo + João M. M. da Silva <diegoamc90@gmail.com> |
71 | 99 | Diego Araújo + João M. M. da Silva + João Machini <diegoamc90@gmail.com> |
72 | 100 | Diego Araújo + João M. M. da Silva + Pedro Leal <diegoamc90@gmail.com> |
73 | 101 | Diego Araújo + Paulo Meirelles <diegoamc90@gmail.com> |
74 | 102 | Diego Araújo + Pedro Leal <diegoamc90@gmail.com> |
103 | +Diego Araujo + Rafael Manzo <diegoamc90@gmail.com> | |
75 | 104 | Diego Araújo + Rafael Manzo <diegoamc90@gmail.com> |
76 | 105 | Diego Araújo + Renan Teruo + Alessandro Palmeira <diegoamc90@gmail.com> |
77 | 106 | Diego Araújo + Renan Teruo <diegoamc90@gmail.com> |
107 | +Diego Araujo + Rodrigo Souto + Rafael Manzo <rr.manzo@gmail.com> | |
78 | 108 | Diego + Jefferson <diegoamc90@gmail.com> |
79 | 109 | Diego Martinez <diegoamc90@gmail.com> |
110 | +Diego Martinez <diego@diego-K55A.(none)> | |
80 | 111 | Diego + Renan <renanteruoc@gmail.com> |
81 | 112 | Fernanda Lopes <nanda.listas+psl@gmail.com> |
82 | 113 | Grazieno Pellegrino <grazieno@gmail.com> |
... | ... | @@ -89,6 +120,7 @@ João da Silva <jaodsilv@linux.ime.usp.br> |
89 | 120 | João Marco Maciel da Silva + Rafael Manzo + Renan Teruo <jaodsilv@linux.ime.usp.br> |
90 | 121 | João M. M. da Silva + Alessandro Palmeira + Diego Araújo + Caio Salgado <jaodsilv@linux.ime.usp.br> |
91 | 122 | João M. M. da Silva + Alessandro Palmeira + Diego Araújo <jaodsilv@linux.ime.usp.br> |
123 | +Joao M. M. da Silva + Alessandro Palmeira <jaodsilv@linux.ime.usp.br> | |
92 | 124 | João M. M. da Silva + Alessandro Palmeira <jaodsilv@linux.ime.usp.br> |
93 | 125 | João M. M. da Silva + Alessandro Palmeira + João Machini <jaodsilv@linux.ime.usp.br> |
94 | 126 | João M. M. da Silva + Caio Salgado + Alessandro Palmeira <jaodsilv@linux.ime.usp.br> |
... | ... | @@ -124,17 +156,25 @@ Luis David Aguilar Carlos <ludwig9003@gmail.com> |
124 | 156 | Martín Olivera <molivera@solar.org.ar> |
125 | 157 | Moises Machado <moises@colivre.coop.br> |
126 | 158 | Nanda Lopes <nanda.listas+psl@gmail.com> |
159 | +Paulo Meirelles + Alessandro Palmeira + João M. M. da Silva <paulo@softwarelivre.org> | |
127 | 160 | Paulo Meirelles + Alessandro Palmeira <paulo@softwarelivre.org> |
128 | 161 | Paulo Meirelles + Carlos Morais <paulo@softwarelivre.org> |
129 | 162 | Paulo Meirelles + Diego Araújo <paulo@softwarelivre.org> |
130 | 163 | Paulo Meirelles + João M. M. da Silva <paulo@softwarelivre.org> |
131 | 164 | Paulo Meirelles <paulo@softwarelivre.org> |
165 | +Paulo Meirelles + Rafael Manzo <paulo@softwarelivre.org> | |
132 | 166 | Rafael Gomes <rafaelgomes@techfree.com.br> |
167 | +Rafael Manzo + Alessandro Palmeira <rr.manzo@gmail.com> | |
168 | +Rafael Manzo + Daniel Alves <danpaulalves@gmail.com> | |
169 | +Rafael Manzo + Diego Araújo <rr.manzo@gmail.com> | |
133 | 170 | Rafael Manzo + João M. M. Silva <rr.manzo@gmail.com> |
171 | +Rafael Manzo + Paulo Meirelles <rr.manzo@gmail.com> | |
134 | 172 | Rafael Martins <rmmartins@gmail.com> |
135 | 173 | Rafael Reggiani Manzo + Caio Salgado + Jefferson Fernandes <rr.manzo@gmail.com> |
136 | 174 | Rafael Reggiani Manzo + Diego Araujo <diegoamc90@gmail.com> |
137 | 175 | Rafael Reggiani Manzo + Diego Araujo <rr.manzo@gmail.com> |
176 | +Rafael Reggiani Manzo + Diego Araújo <rr.manzo@gmail.com> | |
177 | +Rafael Reggiani Manzo + João M. M. da Silva <rr.manzo@gmail.com> | |
138 | 178 | Rafael Reggiani Manzo <rr.manzo@gmail.com> |
139 | 179 | Raphaël Rousseau <raph@r4f.org> |
140 | 180 | Raquel Lira <raquel.lira@gmail.com> |
... | ... | @@ -146,8 +186,10 @@ Renan Teruo + Paulo Meirelles <renanteruoc@gmail.com> |
146 | 186 | Renan Teruo + Rafael Manzo <renanteruoc@gmail.com> |
147 | 187 | Rodrigo Souto <rodrigo@colivre.coop.br> |
148 | 188 | Ronny Kursawe <kursawe.ronny@googlemail.com> |
189 | +root <root@debian.sdr.serpro> | |
149 | 190 | Samuel R. C. Vale <srcvale@holoscopio.com> |
150 | 191 | Valessio Brito <valessio@gmail.com> |
192 | +vfcosta <vfcosta@gmail.com> | |
151 | 193 | Visita <visita@debian.(none)> |
152 | 194 | Yann Lugrin <yann.lugrin@liquid-concept.ch> |
153 | 195 | ... | ... |
Gemfile
1 | -source :rubygems | |
2 | -gem 'cucumber', '0.4.0' | |
3 | -gem 'webrat', '0.5.1' | |
4 | -gem 'rspec', '1.2.9' | |
5 | -gem 'rspec-rails', '1.2.9' | |
6 | -gem 'Selenium', '>= 1.1.14' | |
7 | -gem 'selenium-client', '>= 1.2.17' | |
8 | -gem 'database_cleaner' | |
1 | +source "https://rubygems.org" | |
2 | + | |
9 | 3 | gem 'exception_notification', '1.0.20090728' |
10 | 4 | gem 'system_timer' |
11 | 5 | |
6 | +group :test do | |
7 | + gem 'rspec', '1.2.9' | |
8 | + gem 'rspec-rails', '1.2.9' | |
9 | +end | |
10 | + | |
11 | +group :cucumber do | |
12 | + gem 'rake', '0.8.7' | |
13 | + gem 'cucumber-rails', '0.3.2' | |
14 | + gem 'capybara', '1.1.1' | |
15 | + gem 'cucumber', '1.1.0' | |
16 | + gem 'database_cleaner' | |
17 | +end | |
18 | + | |
12 | 19 | def program(name) |
13 | 20 | unless system("which #{name} > /dev/null") |
14 | 21 | puts "W: Program #{name} is needed, but was not found in your PATH" | ... | ... |
Gemfile.lock
1 | 1 | GEM |
2 | - remote: http://rubygems.org/ | |
2 | + remote: https://rubygems.org/ | |
3 | 3 | specs: |
4 | - Selenium (1.1.14) | |
5 | - builder (3.0.0) | |
6 | - cucumber (0.4.0) | |
4 | + builder (3.1.4) | |
5 | + capybara (1.1.1) | |
6 | + mime-types (>= 1.16) | |
7 | + nokogiri (>= 1.3.3) | |
8 | + rack (>= 1.0.0) | |
9 | + rack-test (>= 0.5.4) | |
10 | + selenium-webdriver (~> 2.0) | |
11 | + xpath (~> 0.1.4) | |
12 | + childprocess (0.3.6) | |
13 | + ffi (~> 1.0, >= 1.0.6) | |
14 | + cucumber (1.1.0) | |
7 | 15 | builder (>= 2.1.2) |
8 | 16 | diff-lcs (>= 1.1.2) |
9 | - polyglot (>= 0.2.9) | |
10 | - term-ansicolor (>= 1.0.3) | |
11 | - treetop (>= 1.4.2) | |
12 | - database_cleaner (0.7.0) | |
17 | + gherkin (~> 2.5.0) | |
18 | + json (>= 1.4.6) | |
19 | + term-ansicolor (>= 1.0.6) | |
20 | + cucumber-rails (0.3.2) | |
21 | + cucumber (>= 0.8.0) | |
22 | + database_cleaner (0.9.1) | |
13 | 23 | diff-lcs (1.1.3) |
14 | 24 | exception_notification (1.0.20090728) |
15 | - nokogiri (1.5.0) | |
16 | - polyglot (0.3.3) | |
17 | - rack (1.3.5) | |
25 | + ffi (1.2.0) | |
26 | + gherkin (2.5.4) | |
27 | + json (>= 1.4.6) | |
28 | + json (1.7.5) | |
29 | + libwebsocket (0.1.6.1) | |
30 | + websocket | |
31 | + mime-types (1.19) | |
32 | + multi_json (1.3.7) | |
33 | + nokogiri (1.5.5) | |
34 | + rack (1.1.0) | |
35 | + rack-test (0.6.2) | |
36 | + rack (>= 1.0) | |
37 | + rake (0.8.7) | |
18 | 38 | rspec (1.2.9) |
19 | 39 | rspec-rails (1.2.9) |
20 | 40 | rack (>= 1.0.0) |
21 | 41 | rspec (>= 1.2.9) |
22 | - selenium-client (1.2.18) | |
42 | + rubyzip (0.9.9) | |
43 | + selenium-webdriver (2.26.0) | |
44 | + childprocess (>= 0.2.5) | |
45 | + libwebsocket (~> 0.1.3) | |
46 | + multi_json (~> 1.0) | |
47 | + rubyzip | |
23 | 48 | system_timer (1.2.4) |
24 | 49 | term-ansicolor (1.0.7) |
25 | - treetop (1.4.10) | |
26 | - polyglot | |
27 | - polyglot (>= 0.3.1) | |
28 | - webrat (0.5.1) | |
29 | - nokogiri (>= 1.2.0) | |
30 | - rack (>= 1.0) | |
50 | + websocket (1.0.4) | |
51 | + xpath (0.1.4) | |
52 | + nokogiri (~> 1.3) | |
31 | 53 | |
32 | 54 | PLATFORMS |
33 | 55 | ruby |
34 | 56 | |
35 | 57 | DEPENDENCIES |
36 | - Selenium (>= 1.1.14) | |
37 | - cucumber (= 0.4.0) | |
58 | + capybara (= 1.1.1) | |
59 | + cucumber (= 1.1.0) | |
60 | + cucumber-rails (= 0.3.2) | |
38 | 61 | database_cleaner |
39 | 62 | exception_notification (= 1.0.20090728) |
63 | + rake (= 0.8.7) | |
40 | 64 | rspec (= 1.2.9) |
41 | 65 | rspec-rails (= 1.2.9) |
42 | - selenium-client (>= 1.2.17) | |
43 | 66 | system_timer |
44 | - webrat (= 0.5.1) | ... | ... |
INSTALL.varnish
... | ... | @@ -45,6 +45,10 @@ Install the RPAF apache module (or skip this step if not using apache): |
45 | 45 | On manual installations, change "/etc/noosfero/*" to |
46 | 46 | "{Rails.root}/etc/noosfero/*" |
47 | 47 | |
48 | +NOTE: it is very important that the *.vcl files are included in that order, | |
49 | +i.e. *first* include "varnish-noosfero.vcl", and *after* | |
50 | +"noosfero-accept-language.cvl". | |
51 | + | |
48 | 52 | 4c) Restart Varnish |
49 | 53 | |
50 | 54 | # invoke-rc.d varnish restart | ... | ... |
RELEASING
... | ... | @@ -31,6 +31,7 @@ To prepare a release of noosfero, you must follow the steps below: |
31 | 31 | sha1 of the package (with sha1sum and paste the SHA1 hash as comment in the |
32 | 32 | attachment form) |
33 | 33 | * Download the attached and verify the MD5 hash |
34 | +* Push the new version tag (with git push --tags) | |
34 | 35 | * Update an eventual demonstration version that you run. |
35 | 36 | * Write an announcement e-mail to the relevant mailing lists pointing to the |
36 | 37 | release notes, and maybe to the demonstration version. | ... | ... |
app/controllers/admin/environment_design_controller.rb
... | ... | @@ -3,7 +3,8 @@ class EnvironmentDesignController < BoxOrganizerController |
3 | 3 | protect 'edit_environment_design', :environment |
4 | 4 | |
5 | 5 | def available_blocks |
6 | - @available_blocks ||= [ ArticleBlock, LoginBlock, EnvironmentStatisticsBlock, RecentDocumentsBlock, EnterprisesBlock, CommunitiesBlock, PeopleBlock, SellersSearchBlock, LinkListBlock, FeedReaderBlock, SlideshowBlock, HighlightsBlock, FeaturedProductsBlock, CategoriesBlock, RawHTMLBlock ] | |
6 | + @available_blocks ||= [ ArticleBlock, LoginBlock, EnvironmentStatisticsBlock, RecentDocumentsBlock, EnterprisesBlock, CommunitiesBlock, PeopleBlock, SellersSearchBlock, LinkListBlock, FeedReaderBlock, SlideshowBlock, HighlightsBlock, FeaturedProductsBlock, CategoriesBlock, RawHTMLBlock, TagsBlock ] | |
7 | + @available_blocks += plugins.dispatch(:extra_blocks, :type => Environment) | |
7 | 8 | end |
8 | 9 | |
9 | 10 | end | ... | ... |
app/controllers/box_organizer_controller.rb
... | ... | @@ -68,8 +68,8 @@ class BoxOrganizerController < ApplicationController |
68 | 68 | raise ArgumentError.new("Type %s is not allowed. Go away." % type) |
69 | 69 | end |
70 | 70 | else |
71 | - @center_block_types = Box.acceptable_center_blocks & available_blocks | |
72 | - @side_block_types = Box.acceptable_side_blocks & available_blocks | |
71 | + @center_block_types = (Box.acceptable_center_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => boxes_holder.class, :position => 1) | |
72 | + @side_block_types = (Box.acceptable_side_blocks & available_blocks) + plugins.dispatch(:extra_blocks, :type => boxes_holder.class, :position => [2,3]) | |
73 | 73 | @boxes = boxes_holder.boxes |
74 | 74 | render :action => 'add_block', :layout => false |
75 | 75 | end | ... | ... |
app/controllers/my_profile/profile_design_controller.rb
... | ... | @@ -7,17 +7,25 @@ class ProfileDesignController < BoxOrganizerController |
7 | 7 | def available_blocks |
8 | 8 | blocks = [ ArticleBlock, TagsBlock, RecentDocumentsBlock, ProfileInfoBlock, LinkListBlock, MyNetworkBlock, FeedReaderBlock, ProfileImageBlock, LocationBlock, SlideshowBlock, ProfileSearchBlock, HighlightsBlock ] |
9 | 9 | |
10 | + blocks += plugins.dispatch(:extra_blocks) | |
11 | + | |
10 | 12 | # blocks exclusive for organizations |
11 | 13 | if profile.has_members? |
12 | 14 | blocks << MembersBlock |
13 | 15 | end |
14 | 16 | |
15 | - # blocks exclusive to person | |
17 | + # blocks exclusive to people | |
16 | 18 | if profile.person? |
17 | 19 | blocks << FriendsBlock |
18 | 20 | blocks << FavoriteEnterprisesBlock |
19 | 21 | blocks << CommunitiesBlock |
20 | 22 | blocks << EnterprisesBlock |
23 | + blocks += plugins.dispatch(:extra_blocks, :type => Person) | |
24 | + end | |
25 | + | |
26 | + # blocks exclusive to communities | |
27 | + if profile.community? | |
28 | + blocks += plugins.dispatch(:extra_blocks, :type => Community) | |
21 | 29 | end |
22 | 30 | |
23 | 31 | # blocks exclusive for enterprises |
... | ... | @@ -26,6 +34,7 @@ class ProfileDesignController < BoxOrganizerController |
26 | 34 | blocks << HighlightsBlock |
27 | 35 | blocks << FeaturedProductsBlock |
28 | 36 | blocks << FansBlock |
37 | + blocks += plugins.dispatch(:extra_blocks, :type => Enterprise) | |
29 | 38 | end |
30 | 39 | |
31 | 40 | # product block exclusive for enterprises in environments that permits it |
... | ... | @@ -33,7 +42,7 @@ class ProfileDesignController < BoxOrganizerController |
33 | 42 | blocks << ProductsBlock |
34 | 43 | end |
35 | 44 | |
36 | - # block exclusive to profile has blog | |
45 | + # block exclusive to profiles that have blog | |
37 | 46 | if profile.has_blog? |
38 | 47 | blocks << BlogArchivesBlock |
39 | 48 | end | ... | ... |
app/helpers/application_helper.rb
... | ... | @@ -30,6 +30,12 @@ module ApplicationHelper |
30 | 30 | |
31 | 31 | include AccountHelper |
32 | 32 | |
33 | + include BlogHelper | |
34 | + | |
35 | + include ContentViewerHelper | |
36 | + | |
37 | + include LayoutHelper | |
38 | + | |
33 | 39 | def locale |
34 | 40 | (@page && !@page.language.blank?) ? @page.language : FastGettext.locale |
35 | 41 | end |
... | ... | @@ -260,7 +266,10 @@ module ApplicationHelper |
260 | 266 | end |
261 | 267 | |
262 | 268 | def button_bar(options = {}, &block) |
263 | - concat(content_tag('div', capture(&block) + tag('br', :style => 'clear: left;'), { :class => 'button-bar' }.merge(options))) | |
269 | + options[:class].nil? ? | |
270 | + options[:class]='button-bar' : | |
271 | + options[:class]+=' button-bar' | |
272 | + concat(content_tag('div', capture(&block) + tag('br', :style => 'clear: left;'), options)) | |
264 | 273 | end |
265 | 274 | |
266 | 275 | VIEW_EXTENSIONS = %w[.rhtml .html.erb] |
... | ... | @@ -352,10 +361,6 @@ module ApplicationHelper |
352 | 361 | end |
353 | 362 | end |
354 | 363 | |
355 | - def theme_stylesheet_path | |
356 | - theme_path + '/style.css' | |
357 | - end | |
358 | - | |
359 | 364 | def current_theme |
360 | 365 | @current_theme ||= |
361 | 366 | begin |
... | ... | @@ -874,14 +879,6 @@ module ApplicationHelper |
874 | 879 | content_tag('div', labelled_check_box(_('Public'), 'profile_data[fields_privacy]['+name+']', 'public', profile.public_fields.include?(name)), :class => 'field-privacy-selector') |
875 | 880 | end |
876 | 881 | |
877 | - def template_stylesheet_path | |
878 | - if profile.nil? | |
879 | - "/designs/templates/#{environment.layout_template}/stylesheets/style.css" | |
880 | - else | |
881 | - "/designs/templates/#{profile.layout_template}/stylesheets/style.css" | |
882 | - end | |
883 | - end | |
884 | - | |
885 | 882 | def login_url |
886 | 883 | options = Noosfero.url_options.merge({ :controller => 'account', :action => 'login' }) |
887 | 884 | url_for(options) |
... | ... | @@ -920,18 +917,6 @@ module ApplicationHelper |
920 | 917 | end |
921 | 918 | end |
922 | 919 | |
923 | - def icon_theme_stylesheet_path | |
924 | - icon_themes = [] | |
925 | - theme_icon_themes = theme_option(:icon_theme) || [] | |
926 | - for icon_theme in theme_icon_themes do | |
927 | - theme_path = "/designs/icons/#{icon_theme}/style.css" | |
928 | - if File.exists?(File.join(RAILS_ROOT, 'public', theme_path)) | |
929 | - icon_themes << theme_path | |
930 | - end | |
931 | - end | |
932 | - icon_themes | |
933 | - end | |
934 | - | |
935 | 920 | def page_title |
936 | 921 | (@page ? @page.title + ' - ' : '') + |
937 | 922 | (profile ? profile.short_name + ' - ' : '') + |
... | ... | @@ -943,40 +928,11 @@ module ApplicationHelper |
943 | 928 | (@category ? " - #{@category.full_name}" : '') |
944 | 929 | end |
945 | 930 | |
946 | - def noosfero_javascript | |
947 | - render :file => 'layouts/_javascript' | |
948 | - end | |
949 | - | |
950 | - def noosfero_stylesheets | |
951 | - [ | |
952 | - 'application', | |
953 | - 'search', | |
954 | - 'thickbox', | |
955 | - 'lightbox', | |
956 | - 'colorpicker', | |
957 | - 'colorbox', | |
958 | - pngfix_stylesheet_path, | |
959 | - ] + | |
960 | - tokeninput_stylesheets | |
961 | - end | |
962 | - | |
963 | 931 | # DEPRECATED. Do not use this· |
964 | 932 | def import_controller_stylesheets(options = {}) |
965 | 933 | stylesheet_import( "controller_"+ @controller.controller_name(), options ) |
966 | 934 | end |
967 | 935 | |
968 | - def pngfix_stylesheet_path | |
969 | - 'iepngfix/iepngfix.css' | |
970 | - end | |
971 | - | |
972 | - def tokeninput_stylesheets | |
973 | - ['token-input', 'token-input-facebook', 'token-input-mac', 'token-input-facet'] | |
974 | - end | |
975 | - | |
976 | - def noosfero_layout_features | |
977 | - render :file => 'shared/noosfero_layout_features' | |
978 | - end | |
979 | - | |
980 | 936 | def link_to_email(email) |
981 | 937 | javascript_tag('var array = ' + email.split('@').to_json + '; document.write("<a href=\'mailto:" + array.join("@") + "\'>" + array.join("@") + "</a>")'.html_safe) |
982 | 938 | end |
... | ... | @@ -995,6 +951,36 @@ module ApplicationHelper |
995 | 951 | content |
996 | 952 | end |
997 | 953 | |
954 | + # Please, use link_to by default! | |
955 | + # This method was created to work around to inexplicable | |
956 | + # chain of problems when display_short_format was called | |
957 | + # from Article model for an ArticleBlock. | |
958 | + def reference_to_article(text, article, anchor=nil) | |
959 | + if article.profile.domains.empty? | |
960 | + href = "/#{article.url[:profile]}/" | |
961 | + else | |
962 | + href = "http://#{article.profile.domains.first.name}/" | |
963 | + end | |
964 | + href += article.url[:page].join('/') | |
965 | + href += '#' + anchor if anchor | |
966 | + content_tag('a', text, :href => href) | |
967 | + end | |
968 | + | |
969 | + def display_short_format(article, options={}) | |
970 | + options[:comments_link] ||= true | |
971 | + options[:read_more_link] ||= true | |
972 | + html = content_tag('div', | |
973 | + article.lead + | |
974 | + content_tag('div', | |
975 | + (options[:comments_link] ? link_to_comments(article) : '') + | |
976 | + (options[:read_more_link] ? reference_to_article( _('Read more'), article) : ''), | |
977 | + :class => 'read-more' | |
978 | + ), | |
979 | + :class => 'short-post' | |
980 | + ) | |
981 | + html | |
982 | + end | |
983 | + | |
998 | 984 | def colorpicker_field(object_name, method, options = {}) |
999 | 985 | text_field(object_name, method, options.merge(:class => 'colorpicker_field')) |
1000 | 986 | end |
... | ... | @@ -1019,10 +1005,6 @@ module ApplicationHelper |
1019 | 1005 | theme_option(:jquery_theme) || 'smoothness_mod' |
1020 | 1006 | end |
1021 | 1007 | |
1022 | - def jquery_ui_theme_stylesheet_path | |
1023 | - 'jquery.ui/' + jquery_theme + '/jquery-ui-1.8.2.custom' | |
1024 | - end | |
1025 | - | |
1026 | 1008 | def ui_error(message) |
1027 | 1009 | content_tag('div', ui_icon('ui-icon-alert') + message, :class => 'alert fg-state-error ui-state-error') |
1028 | 1010 | end |
... | ... | @@ -1423,4 +1405,14 @@ module ApplicationHelper |
1423 | 1405 | @no_design_blocks = true |
1424 | 1406 | end |
1425 | 1407 | |
1408 | + def default_folder_for_image_upload(profile) | |
1409 | + default_folder = profile.folders.find_by_type('Gallery') | |
1410 | + default_folder = profile.folders.find_by_type('Folder') if default_folder.nil? | |
1411 | + default_folder | |
1412 | + end | |
1413 | + | |
1414 | + def content_id_to_str(content) | |
1415 | + content.nil? ? '' : content.id.to_s | |
1416 | + end | |
1417 | + | |
1426 | 1418 | end | ... | ... |
app/helpers/block_helper.rb
... | ... | @@ -6,4 +6,21 @@ module BlockHelper |
6 | 6 | content_tag 'h3', content_tag('span', h(title)), :class => tag_class |
7 | 7 | end |
8 | 8 | |
9 | + def highlights_block_config_image_fields(block, image={}) | |
10 | + " | |
11 | + <tr class=\"image-data-line\"> | |
12 | + <td> | |
13 | + #{select_tag 'block[images][][image_id]', content_tag(:option) + option_groups_from_collection_for_select(block.folder_choices, :images, :name, :id, :name, image[:image_id].to_i).html_safe} | |
14 | + </td> | |
15 | + <td>#{text_field_tag 'block[images][][address]', image[:address], :class => 'highlight-address', :size => 20}</td> | |
16 | + <td>#{text_field_tag 'block[images][][position]', image[:position], :class => 'highlight-position', :size => 1}</td> | |
17 | + </tr><tr class=\"image-title\"> | |
18 | + <td colspan=\"3\"><label>#{ | |
19 | + content_tag('span', _('Title')) + | |
20 | + text_field_tag('block[images][][title]', image[:title], :class => 'highlight-title', :size => 45) | |
21 | + }</label></td> | |
22 | + </tr> | |
23 | + " | |
24 | + end | |
25 | + | |
9 | 26 | end | ... | ... |
app/helpers/blog_helper.rb
... | ... | @@ -18,8 +18,9 @@ module BlogHelper |
18 | 18 | pagination = will_paginate(articles, { |
19 | 19 | :param_name => 'npage', |
20 | 20 | :previous_label => _('« Newer posts'), |
21 | - :next_label => _('Older posts »') | |
22 | - }) | |
21 | + :next_label => _('Older posts »'), | |
22 | + :params => {:action=>"view_page", :page=>articles.first.parent.path.split('/'), :controller=>"content_viewer"} | |
23 | + }) if articles.present? | |
23 | 24 | content = [] |
24 | 25 | artic_len = articles.length |
25 | 26 | articles.each_with_index{ |art,i| |
... | ... | @@ -46,18 +47,6 @@ module BlogHelper |
46 | 47 | article_title(article, :no_comments => no_comments) + html |
47 | 48 | end |
48 | 49 | |
49 | - def display_short_format(article) | |
50 | - html = content_tag('div', | |
51 | - article.lead + | |
52 | - content_tag('div', | |
53 | - link_to_comments(article) + | |
54 | - link_to( _('Read more'), article.url), | |
55 | - :class => 'read-more'), | |
56 | - :class => 'short-post' | |
57 | - ) | |
58 | - html | |
59 | - end | |
60 | - | |
61 | 50 | def display_full_format(article) |
62 | 51 | html = article_to_html(article) |
63 | 52 | html = content_tag('p', html) if ! html.include?('</p>') | ... | ... |
app/helpers/content_viewer_helper.rb
... | ... | @@ -36,7 +36,7 @@ module ContentViewerHelper |
36 | 36 | |
37 | 37 | def link_to_comments(article, args = {}) |
38 | 38 | return '' unless article.accept_comments? |
39 | - link_to(number_of_comments(article), article.url.merge(:anchor => 'comments_list') ) | |
39 | + reference_to_article number_of_comments(article), article, 'comments_list' | |
40 | 40 | end |
41 | 41 | |
42 | 42 | def article_translations(article) | ... | ... |
app/helpers/dates_helper.rb
... | ... | @@ -23,11 +23,13 @@ module DatesHelper |
23 | 23 | end |
24 | 24 | |
25 | 25 | # formats a date for displaying. |
26 | - def show_date(date, use_numbers = false) | |
26 | + def show_date(date, use_numbers = false, year=true) | |
27 | 27 | if date && use_numbers |
28 | - _('%{month}/%{day}/%{year}') % { :day => date.day, :month => date.month, :year => date.year } | |
28 | + date_format = year ? _('%{month}/%{day}/%{year}') : _('%{month}/%{day}') | |
29 | + date_format % { :day => date.day, :month => date.month, :year => date.year } | |
29 | 30 | elsif date |
30 | - _('%{month} %{day}, %{year}') % { :day => date.day, :month => month_name(date.month), :year => date.year } | |
31 | + date_format = year ? _('%{month_name} %{day}, %{year}') : _('%{month_name} %{day}') | |
32 | + date_format % { :day => date.day, :month_name => month_name(date.month), :year => date.year } | |
31 | 33 | else |
32 | 34 | '' |
33 | 35 | end |
... | ... | @@ -46,7 +48,27 @@ module DatesHelper |
46 | 48 | if (date1 == date2) || (date2.nil?) |
47 | 49 | show_date(date1, use_numbers) |
48 | 50 | else |
49 | - _('from %{date1} to %{date2}') % {:date1 => show_date(date1, use_numbers), :date2 => show_date(date2, use_numbers)} | |
51 | + if date1.year == date2.year | |
52 | + if date1.month == date2.month | |
53 | + _('from %{month} %{day1} to %{day2}, %{year}') % { | |
54 | + :day1 => date1.day, | |
55 | + :day2 => date2.day, | |
56 | + :month => use_numbers ? date1.month : month_name(date1.month), | |
57 | + :year => date1.year | |
58 | + } | |
59 | + else | |
60 | + _('from %{date1} to %{date2}, %{year}') % { | |
61 | + :date1 => show_date(date1, use_numbers, false), | |
62 | + :date2 => show_date(date2, use_numbers, false), | |
63 | + :year => date1.year | |
64 | + } | |
65 | + end | |
66 | + else | |
67 | + _('from %{date1} to %{date2}') % { | |
68 | + :date1 => show_date(date1, use_numbers), | |
69 | + :date2 => show_date(date2, use_numbers) | |
70 | + } | |
71 | + end | |
50 | 72 | end |
51 | 73 | end |
52 | 74 | ... | ... |
app/helpers/forms_helper.rb
... | ... | @@ -142,38 +142,6 @@ module FormsHelper |
142 | 142 | content_tag('table',rows.join("\n")) |
143 | 143 | end |
144 | 144 | |
145 | - def select_folder(label_text, field_id, collection, default_value=nil, html_options = {}, js_options = {}) | |
146 | - root = profile ? profile.identifier : _("root") | |
147 | - labelled_form_field( | |
148 | - label_text, | |
149 | - select_tag( | |
150 | - field_id, | |
151 | - options_for_select( | |
152 | - [[root, '']] + | |
153 | - collection.collect {|f| [ root + '/' + f.full_name, f.id ] }, | |
154 | - default_value | |
155 | - ), | |
156 | - html_options.merge(js_options) | |
157 | - ) | |
158 | - ) | |
159 | - end | |
160 | - | |
161 | - def select_profile_folder(label_text, field_id, profile, default_value='', html_options = {}, js_options = {}) | |
162 | - result = labelled_form_field( | |
163 | - label_text, | |
164 | - select_tag( | |
165 | - field_id, | |
166 | - options_for_select( | |
167 | - [[profile.identifier, '']] + | |
168 | - profile.folders.collect {|f| [ profile.identifier + '/' + f.full_name, f.id ] }, | |
169 | - default_value | |
170 | - ), | |
171 | - html_options.merge(js_options) | |
172 | - ) | |
173 | - ) | |
174 | - return result | |
175 | - end | |
176 | - | |
177 | 145 | def date_field(name, value, format = '%Y-%m-%d', datepicker_options = {}, html_options = {}) |
178 | 146 | datepicker_options[:disabled] ||= false |
179 | 147 | datepicker_options[:alt_field] ||= '' |
... | ... | @@ -295,23 +263,28 @@ module FormsHelper |
295 | 263 | field_id, |
296 | 264 | options_for_select( |
297 | 265 | [[root, '']] + |
298 | - collection.collect {|f| [ root + '/' + f.full_name, f.id ] }, | |
299 | - default_value | |
266 | + collection.collect {|f| [ root + '/' + f.full_name, f.id.to_s ] }, | |
267 | + default_value.to_s | |
300 | 268 | ), |
301 | 269 | html_options.merge(js_options) |
302 | 270 | ) |
303 | 271 | ) |
304 | 272 | end |
305 | 273 | |
306 | - def select_profile_folder(label_text, field_id, profile, default_value='', html_options = {}, js_options = {}) | |
274 | + def select_profile_folder(label_text, field_id, profile, default_value='', html_options = {}, js_options = {}, find_options = {}) | |
275 | + if find_options.empty? | |
276 | + folders = profile.folders | |
277 | + else | |
278 | + folders = profile.folders.where(find_options) | |
279 | + end | |
307 | 280 | result = labelled_form_field( |
308 | 281 | label_text, |
309 | 282 | select_tag( |
310 | 283 | field_id, |
311 | 284 | options_for_select( |
312 | 285 | [[profile.identifier, '']] + |
313 | - profile.folders.collect {|f| [ profile.identifier + '/' + f.full_name, f.id ] }, | |
314 | - default_value | |
286 | + folders.collect {|f| [ profile.identifier + '/' + f.full_name, f.id.to_s ] }, | |
287 | + default_value.to_s | |
315 | 288 | ), |
316 | 289 | html_options.merge(js_options) |
317 | 290 | ) | ... | ... |
... | ... | @@ -0,0 +1,88 @@ |
1 | +module LayoutHelper | |
2 | + | |
3 | + def body_classes | |
4 | + # Identify the current controller and action for the CSS: | |
5 | + " controller-#{@controller.controller_name}" + | |
6 | + " action-#{@controller.controller_name}-#{@controller.action_name}" + | |
7 | + " template-#{profile.nil? ? "default" : profile.layout_template}" + | |
8 | + (!profile.nil? && profile.is_on_homepage?(request.path,@page) ? " profile-homepage" : "") | |
9 | + end | |
10 | + | |
11 | + def noosfero_javascript | |
12 | + plugins_javascripts = @plugins.map { |plugin| plugin.js_files.map { |js| plugin.class.public_path(js) } }.flatten | |
13 | + | |
14 | + output = '' | |
15 | + output += render :file => 'layouts/_javascript' | |
16 | + output += javascript_tag 'render_all_jquery_ui_widgets()' | |
17 | + unless plugins_javascripts.empty? | |
18 | + output += javascript_include_tag plugins_javascripts, :cache => "cache/plugins-#{Digest::MD5.hexdigest plugins_javascripts.to_s}" | |
19 | + end | |
20 | + output | |
21 | + end | |
22 | + | |
23 | + def noosfero_stylesheets | |
24 | + standard_stylesheets = [ | |
25 | + 'application', | |
26 | + 'search', | |
27 | + 'thickbox', | |
28 | + 'lightbox', | |
29 | + 'colorpicker', | |
30 | + 'colorbox', | |
31 | + pngfix_stylesheet_path, | |
32 | + ] + tokeninput_stylesheets | |
33 | + plugins_stylesheets = @plugins.select(&:stylesheet?).map { |plugin| plugin.class.public_path('style.css') } | |
34 | + | |
35 | + output = '' | |
36 | + output += stylesheet_link_tag standard_stylesheets, :cache => 'cache' | |
37 | + output += stylesheet_link_tag template_stylesheet_path | |
38 | + output += stylesheet_link_tag icon_theme_stylesheet_path | |
39 | + output += stylesheet_link_tag jquery_ui_theme_stylesheet_path | |
40 | + unless plugins_stylesheets.empty? | |
41 | + output += stylesheet_link_tag plugins_stylesheets, :cache => "cache/plugins-#{Digest::MD5.hexdigest plugins_stylesheets.to_s}" | |
42 | + end | |
43 | + output += stylesheet_link_tag theme_stylesheet_path | |
44 | + output | |
45 | + end | |
46 | + | |
47 | + def pngfix_stylesheet_path | |
48 | + 'iepngfix/iepngfix.css' | |
49 | + end | |
50 | + | |
51 | + def tokeninput_stylesheets | |
52 | + ['token-input', 'token-input-facebook', 'token-input-mac', 'token-input-facet'] | |
53 | + end | |
54 | + | |
55 | + def noosfero_layout_features | |
56 | + render :file => 'shared/noosfero_layout_features' | |
57 | + end | |
58 | + | |
59 | + def template_stylesheet_path | |
60 | + if profile.nil? | |
61 | + "/designs/templates/#{environment.layout_template}/stylesheets/style.css" | |
62 | + else | |
63 | + "/designs/templates/#{profile.layout_template}/stylesheets/style.css" | |
64 | + end | |
65 | + end | |
66 | + | |
67 | + def icon_theme_stylesheet_path | |
68 | + icon_themes = [] | |
69 | + theme_icon_themes = theme_option(:icon_theme) || [] | |
70 | + for icon_theme in theme_icon_themes do | |
71 | + theme_path = "/designs/icons/#{icon_theme}/style.css" | |
72 | + if File.exists?(File.join(RAILS_ROOT, 'public', theme_path)) | |
73 | + icon_themes << theme_path | |
74 | + end | |
75 | + end | |
76 | + icon_themes | |
77 | + end | |
78 | + | |
79 | + def jquery_ui_theme_stylesheet_path | |
80 | + 'jquery.ui/' + jquery_theme + '/jquery-ui-1.8.2.custom' | |
81 | + end | |
82 | + | |
83 | + def theme_stylesheet_path | |
84 | + theme_path + '/style.css' | |
85 | + end | |
86 | + | |
87 | +end | |
88 | + | ... | ... |
app/models/article.rb
... | ... | @@ -2,6 +2,9 @@ require 'hpricot' |
2 | 2 | |
3 | 3 | class Article < ActiveRecord::Base |
4 | 4 | |
5 | + #FIXME This is necessary because html is being generated on the model... | |
6 | + include ActionView::Helpers::TagHelper | |
7 | + | |
5 | 8 | # use for internationalizable human type names in search facets |
6 | 9 | # reimplement on subclasses |
7 | 10 | def self.type_name |
... | ... | @@ -236,8 +239,13 @@ class Article < ActiveRecord::Base |
236 | 239 | # The implementation in this class just provides the +body+ attribute as the |
237 | 240 | # HTML. Other article types can override this method to provide customized |
238 | 241 | # views of themselves. |
242 | + # (To override short format representation, override the lead method) | |
239 | 243 | def to_html(options = {}) |
240 | - body || '' | |
244 | + if options[:format] == 'short' | |
245 | + display_short_format(self) | |
246 | + else | |
247 | + body || '' | |
248 | + end | |
241 | 249 | end |
242 | 250 | |
243 | 251 | include ApplicationHelper | ... | ... |
app/models/article_block.rb
... | ... | @@ -12,7 +12,11 @@ class ArticleBlock < Block |
12 | 12 | block = self |
13 | 13 | lambda do |
14 | 14 | block_title(block.title) + |
15 | - (block.article ? article_to_html(block.article, :gallery_view => false).html_safe : _('Article not selected yet.')) | |
15 | + (block.article ? article_to_html(block.article, | |
16 | + :gallery_view => false, | |
17 | + :inside_block => block, # For Blogs and folders | |
18 | + :format => block.visualization_format # For Articles and contents | |
19 | + ).html_safe : _('Article not selected yet.')) | |
16 | 20 | end |
17 | 21 | end |
18 | 22 | |
... | ... | @@ -49,4 +53,14 @@ class ArticleBlock < Block |
49 | 53 | self.box.owner.kind_of?(Environment) ? self.box.owner.portal_community.articles : self.box.owner.articles |
50 | 54 | end |
51 | 55 | |
56 | + def posts_per_page | |
57 | + self.settings[:posts_per_page] or 1 | |
58 | + end | |
59 | + | |
60 | + def posts_per_page= value | |
61 | + value = value.to_i | |
62 | + self.settings[:posts_per_page] = value if value > 0 | |
63 | + end | |
64 | + | |
65 | + settings_items :visualization_format, :type => :string, :default => 'short' | |
52 | 66 | end | ... | ... |
app/models/blog.rb
... | ... | @@ -24,8 +24,9 @@ class Blog < Folder |
24 | 24 | # FIXME isn't this too much including just to be able to generate some HTML? |
25 | 25 | include ActionView::Helpers::TagHelper |
26 | 26 | def to_html(options = {}) |
27 | + me = self | |
27 | 28 | lambda do |
28 | - render :file => 'content_viewer/blog_page' | |
29 | + render :file => 'content_viewer/blog_page', :locals => { :blog=>me, :inside_block=>options[:inside_block] } | |
29 | 30 | end |
30 | 31 | end |
31 | 32 | ... | ... |
app/models/enterprise.rb
... | ... | @@ -185,4 +185,8 @@ class Enterprise < Organization |
185 | 185 | Scrap.find_by_sql("SELECT id, updated_at, 'Scrap' AS klass FROM scraps WHERE scraps.receiver_id = #{self.id} AND scraps.scrap_id IS NULL UNION SELECT id, updated_at, 'ActionTracker::Record' AS klass FROM action_tracker WHERE action_tracker.target_id = #{self.id} UNION SELECT action_tracker.id, action_tracker.updated_at, 'ActionTracker::Record' AS klass FROM action_tracker INNER JOIN articles ON action_tracker.target_id = articles.id WHERE articles.profile_id = #{self.id} AND action_tracker.target_type = 'Article' ORDER BY action_tracker.updated_at DESC") |
186 | 186 | end |
187 | 187 | |
188 | + def catalog_url | |
189 | + { :profile => identifier, :controller => 'catalog'} | |
190 | + end | |
191 | + | |
188 | 192 | end | ... | ... |
app/models/environment.rb
... | ... | @@ -618,12 +618,10 @@ class Environment < ActiveRecord::Base |
618 | 618 | end |
619 | 619 | |
620 | 620 | def top_url |
621 | - protocol = 'http' | |
622 | - result = "#{protocol}://#{default_hostname}" | |
623 | - if Noosfero.url_options.has_key?(:port) | |
624 | - result << ':' << Noosfero.url_options[:port].to_s | |
625 | - end | |
626 | - result | |
621 | + url = 'http://' | |
622 | + url << (Noosfero.url_options.key?(:host) ? Noosfero.url_options[:host] : default_hostname) | |
623 | + url << ':' << Noosfero.url_options[:port].to_s if Noosfero.url_options.key?(:port) | |
624 | + url | |
627 | 625 | end |
628 | 626 | |
629 | 627 | def to_s | ... | ... |
app/models/event.rb
... | ... | @@ -104,18 +104,30 @@ class Event < Article |
104 | 104 | } |
105 | 105 | } |
106 | 106 | |
107 | + # TODO: some good soul, please clean this ugly hack: | |
107 | 108 | if self.body |
108 | 109 | html.div('_____XXXX_DESCRIPTION_GOES_HERE_XXXX_____', :class => 'event-description') |
109 | 110 | end |
110 | 111 | } |
111 | 112 | |
112 | 113 | if self.body |
113 | - result.sub!('_____XXXX_DESCRIPTION_GOES_HERE_XXXX_____', self.body) | |
114 | + if options[:format] == 'short' | |
115 | + result.sub!('_____XXXX_DESCRIPTION_GOES_HERE_XXXX_____', display_short_format(self)) | |
116 | + else | |
117 | + result.sub!('_____XXXX_DESCRIPTION_GOES_HERE_XXXX_____', self.body) | |
118 | + end | |
114 | 119 | end |
115 | 120 | |
116 | 121 | result |
117 | 122 | end |
118 | 123 | |
124 | + def lead | |
125 | + content_tag('div', | |
126 | + show_period(start_date, end_date), | |
127 | + :class => 'event-dates' | |
128 | + ) + super | |
129 | + end | |
130 | + | |
119 | 131 | def event? |
120 | 132 | true |
121 | 133 | end | ... | ... |
app/models/tags_block.rb
... | ... | @@ -20,7 +20,8 @@ class TagsBlock < Block |
20 | 20 | end |
21 | 21 | |
22 | 22 | def content(args={}) |
23 | - tags = owner.article_tags | |
23 | + is_env = owner.class == Environment | |
24 | + tags = is_env ? owner.tag_counts : owner.article_tags | |
24 | 25 | return '' if tags.empty? |
25 | 26 | |
26 | 27 | if limit |
... | ... | @@ -29,18 +30,28 @@ class TagsBlock < Block |
29 | 30 | tags_tmp.map{ |k,v| tags[k] = v } |
30 | 31 | end |
31 | 32 | |
33 | + url = is_env ? {:host=>owner.default_hostname, :controller=>'search', :action => 'tag'} : | |
34 | + owner.public_profile_url.merge(:controller => 'profile', :action => 'tags') | |
35 | + tagname_option = is_env ? :tag : :id | |
36 | + | |
32 | 37 | block_title(title) + |
33 | 38 | "\n<div class='tag_cloud'>\n".html_safe+ |
34 | - tag_cloud( tags, :id, | |
35 | - owner.public_profile_url.merge(:controller => 'profile', :action => 'tags'), | |
36 | - :max_size => 16, :min_size => 9 ) + | |
39 | + tag_cloud( tags, tagname_option, url, :max_size => 16, :min_size => 9 ) + | |
37 | 40 | "\n</div><!-- end class='tag_cloud' -->\n".html_safe |
38 | 41 | end |
39 | 42 | |
40 | 43 | def footer |
41 | - owner_id = owner.identifier | |
42 | - lambda do | |
43 | - link_to s_('tags|View all'), :profile => owner_id, :controller => 'profile', :action => 'tags' | |
44 | + if owner.class == Environment | |
45 | + lambda do | |
46 | + link_to s_('tags|View all'), | |
47 | + :controller => 'search', :action => 'tags' | |
48 | + end | |
49 | + else | |
50 | + owner_id = owner.identifier | |
51 | + lambda do | |
52 | + link_to s_('tags|View all'), | |
53 | + :profile => owner_id, :controller => 'profile', :action => 'tags' | |
54 | + end | |
44 | 55 | end |
45 | 56 | end |
46 | 57 | ... | ... |
app/models/user.rb
... | ... | @@ -15,7 +15,7 @@ class User < ActiveRecord::Base |
15 | 15 | # FIXME ugly workaround |
16 | 16 | def self.human_attribute_name(attrib) |
17 | 17 | case attrib.to_sym |
18 | - when :login: return _('Username') | |
18 | + when :login: return [_('Username'), _('Email')].join(' / ') | |
19 | 19 | when :email: return _('e-Mail') |
20 | 20 | else _(self.superclass.human_attribute_name(attrib)) |
21 | 21 | end |
... | ... | @@ -116,10 +116,11 @@ class User < ActiveRecord::Base |
116 | 116 | |
117 | 117 | validates_inclusion_of :terms_accepted, :in => [ '1' ], :if => lambda { |u| ! u.terms_of_use.blank? }, :message => N_('%{fn} must be checked in order to signup.').fix_i18n |
118 | 118 | |
119 | - # Authenticates a user by their login name and unencrypted password. Returns the user or nil. | |
119 | + # Authenticates a user by their login name or email and unencrypted password. Returns the user or nil. | |
120 | 120 | def self.authenticate(login, password, environment = nil) |
121 | 121 | environment ||= Environment.default |
122 | - u = first :conditions => ['login = ? AND environment_id = ? AND activated_at IS NOT NULL', login, environment.id] # need to get the salt | |
122 | + u = self.first :conditions => ['(login = ? OR email = ?) AND environment_id = ? AND activated_at IS NOT NULL', | |
123 | + login, login, environment.id] # need to get the salt | |
123 | 124 | u && u.authenticated?(password) ? u : nil |
124 | 125 | end |
125 | 126 | ... | ... |
app/views/account/_signup_form.rhtml
... | ... | @@ -32,7 +32,8 @@ |
32 | 32 | <span id="signup-domain"><%= environment.default_hostname %>/</span> |
33 | 33 | <div id='signup-login'> |
34 | 34 | <div id='signup-login-field' class='formfield'> |
35 | - <%= required text_field(:user, :login, :id => 'user_login', :onchange => 'this.value = convToValidLogin(this.value);') %> | |
35 | + <%= required text_field(:user, :login, :id => 'user_login', | |
36 | + :onchange => 'this.value = convToValidUsername(this.value);') %> | |
36 | 37 | <div id='url-check'><p> </p></div> |
37 | 38 | </div> |
38 | 39 | <%= content_tag(:small, _('Choose your login name carefully! It will be your network access and you will not be able to change it later.'), :id => 'signup-balloon') %> | ... | ... |
app/views/account/forgot_password.rhtml
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 | <% labelled_form_for :change_password, @change_password, :url => { :action => 'forgot_password' } do |f| %> |
6 | 6 | |
7 | 7 | <%= f.text_field :login, |
8 | - :onchange => 'this.value = convToValidLogin( this.value )' %> | |
8 | + :onchange => 'this.value = convToValidUsername( this.value )' %> | |
9 | 9 | |
10 | 10 | <%= f.text_field :email %> |
11 | 11 | ... | ... |
app/views/admin_panel/site_info.rhtml
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | |
5 | 5 | <%= render :file => 'shared/tiny_mce' %> |
6 | 6 | |
7 | -<% labelled_form_for :environment, @environment, :url => {:host => @environment.default_hostname, :port => request.port} do |f| %> | |
7 | +<% labelled_form_for :environment, @environment do |f| %> | |
8 | 8 | <% tabs = [] %> |
9 | 9 | <% tabs << {:title => _('Site info'), :id => 'site-info', |
10 | 10 | :content => (render :partial => 'site_info', :locals => {:f => f})} %> | ... | ... |
app/views/box_organizer/_article_block.rhtml
1 | -<div class='article-block-edition'> | |
1 | +<div class="article-block-edition"> | |
2 | 2 | <% if @block.box.owner.kind_of?(Environment) and @block.box.owner.portal_community.nil? %> |
3 | - <p id='no_portal_community'> | |
3 | + <p id="no_portal_community"> | |
4 | 4 | <%= _("You don't have an community defined as the portal community. Define it before use this block properly.") %> |
5 | 5 | </p> |
6 | 6 | <% else %> |
7 | - <% articles = @block.available_articles.select {|article| !article.folder? } %> | |
8 | - <%= select_tag('block[article_id]', options_for_select_with_title(articles.map {|item| [item.path, item.id]}, @block.article ? @block.article.id : nil)) %> | |
7 | + <% | |
8 | + articles = @block.available_articles.select {|a| !a.folder? || a.blog? } | |
9 | + first_text = articles[articles.find_index{|a| a.kind_of? TextArticle}||-1] | |
10 | + selected = @block.article || first_text | |
11 | + %> | |
12 | + <%= select_tag( | |
13 | + 'block[article_id]', | |
14 | + options_for_select_with_title(articles.map {|item| [item.path, item.id]}, selected.id), | |
15 | + :onchange => 'this.changedTo(this.value)' | |
16 | + )%> | |
17 | + <div id="block_blog_options" style="display:none"> | |
18 | + <%= labelled_form_field( | |
19 | + _('Number of posts:'), | |
20 | + text_field_tag('block[posts_per_page]', @block.posts_per_page) | |
21 | + )%> | |
22 | + </div> | |
23 | + <%= labelled_form_field( | |
24 | + _('How to display this content:'), | |
25 | + select_tag( | |
26 | + 'block[visualization_format]', | |
27 | + options_for_select([[_('Lead'), 'short'], [_('Full post'), 'full']], @block.visualization_format) | |
28 | + ) | |
29 | + )%> | |
30 | + <% blogs = @block.available_articles.select{|a|a.blog?} %> | |
31 | + <script> | |
32 | + var select = jQuery("#block_article_id")[0]; | |
33 | + select.blogs = <%= blogs.map{|b| b.id.to_s }.to_json %>; | |
34 | + select.changedTo = function(articleId) { | |
35 | + var blogSelected = this.blogs.indexOf(articleId) != -1; | |
36 | + jQuery("#block_blog_options").toggle(blogSelected); | |
37 | + } | |
38 | + select.changedTo('<%= selected.id %>'); | |
39 | + </script> | |
9 | 40 | <% end %> |
10 | 41 | </div> | ... | ... |
app/views/box_organizer/_block_types.rhtml
... | ... | @@ -1,10 +0,0 @@ |
1 | -<% block_types.in_groups_of(2) do |block1, block2| %> | |
2 | - <div style='float: left; width: 48%; padding-top: 2px;'> | |
3 | - <%= labelled_radio_button(block1.description, :type, block1.name) %> | |
4 | - </div> | |
5 | - <% if block2 %> | |
6 | - <div style='float: left; width: 48%; padding-top: 2px;'> | |
7 | - <%= labelled_radio_button(block2.description, :type, block2.name) %> | |
8 | - </div> | |
9 | - <% end %> | |
10 | -<% end %> |
app/views/box_organizer/_highlights_block.rhtml
1 | 1 | <strong><%= _('Highlights') %></strong> |
2 | -<div id='edit-highlights-block' style='width:450px'> | |
3 | -<table id='highlights' class='noborder'> | |
4 | - <tr><th><%= _('Image') %></th><th><%= _('Address') %></th><th><%= _('Position') %></th><th><%= _('Title') %></th></tr> | |
2 | + | |
3 | +<table class="noborder"><tbody id="highlights-data-table"> | |
4 | + <tr><th><%= _('Image') %></th><th><%= _('Address') %></th><th><%= _('Position') %></th></tr> | |
5 | 5 | <% for image in @block.images do %> |
6 | - <tr> | |
7 | - <td> | |
8 | - <%= select_tag 'block[images][][image_id]', content_tag(:option) + option_groups_from_collection_for_select(@block.folder_choices, :images, :name, :id, :name, image[:image_id].to_i).html_safe, :style => "width: 100px" %></p> | |
9 | - </td> | |
10 | - <td><%= text_field_tag 'block[images][][address]', image[:address], :class => 'highlight-address', :size => 10 %></td> | |
11 | - <td><%= text_field_tag 'block[images][][position]', image[:position], :class => 'highlight-position', :size => 3 %></td> | |
12 | - <td><%= text_field_tag 'block[images][][title]', image[:title], :class => 'highlight-title', :size => 10 %></td> | |
13 | - </tr> | |
6 | + <%= highlights_block_config_image_fields @block, image %> | |
14 | 7 | <% end %> |
15 | -</table> | |
16 | -</div> | |
8 | +</tbody></table> | |
17 | 9 | |
18 | 10 | <%= link_to_function(_('New highlight'), nil, :class => 'button icon-add with-text') do |page| |
19 | - page.insert_html :bottom, 'highlights', content_tag('tr', | |
20 | - content_tag('td', select_tag('block[images][][image_id]', content_tag(:option) + option_groups_from_collection_for_select(@block.folder_choices, :images, :name, :id, :name).html_safe, :style => "width: 100px")) + | |
21 | - content_tag('td', text_field_tag('block[images][][address]', nil, :class => 'highlight-address', :size => 10)) + | |
22 | - content_tag('td', text_field_tag('block[images][][position]', nil, :class => 'highlight-position', :size => 3)) + | |
23 | - content_tag('td', text_field_tag('block[images][][title]', nil, :class => 'highlight-position', :size => 10)) | |
24 | - ) + | |
25 | - javascript_tag("$('edit-link-list-block').scrollTop = $('edit-link-list-block').scrollHeight") | |
11 | + page.insert_html :bottom, 'highlights-data-table', highlights_block_config_image_fields(@block) | |
26 | 12 | end %> |
27 | 13 | |
28 | 14 | <%= labelled_form_field _('Image transition:'), select('block', 'interval', [[_('No automatic transition'), 0]] + [1, 2, 3, 4, 5, 10, 20, 30, 60].map {|item| [n_('Every 1 second', 'Every %d seconds', item) % item, item]}) %> | ... | ... |
app/views/box_organizer/add_block.rhtml
1 | -<div style='height:350px'> | |
1 | +<div id="add-block-dialog"> | |
2 | 2 | <% form_tag do %> |
3 | 3 | |
4 | 4 | <p><%= _('In what area do you want to put your new block?') %></p> |
5 | 5 | |
6 | + <div id="box-position"> | |
6 | 7 | <% @boxes.each do |box| %> |
7 | - <%= labelled_radio_button(_("Area %d") % box.position, :box_id, box.id, box.central?, { :class => 'box-position', 'data-position' => box.position }) %> | |
8 | + <% name = box.central? ? _('Main area') : _('Area %d') % box.position %> | |
9 | + <%= labelled_radio_button(name, :box_id, box.id, box.central?, { 'data-position' => box.position }) %> | |
8 | 10 | <% end %> |
11 | + </div> | |
9 | 12 | |
10 | 13 | <script type="text/javascript"> |
11 | - (function ($) { | |
12 | - $(document).ready(function () { | |
13 | - $(".box-position").live('change', function () { | |
14 | - if ($(this).attr('data-position') == '1') { | |
15 | - $('#center-block-types').show(); | |
16 | - $('#side-block-types').hide(); | |
17 | - } else { | |
18 | - $('#center-block-types').hide(); | |
19 | - $('#side-block-types').show(); | |
20 | - }; | |
21 | - }); | |
22 | - })})(jQuery); | |
14 | + jQuery('#box-position input').bind('change', | |
15 | + function () { | |
16 | + showCenter = jQuery(this).attr('data-position') == '1'; | |
17 | + jQuery('#center-block-types').toggle(showCenter); | |
18 | + jQuery('#side-block-types').toggle(!showCenter); | |
19 | + } | |
20 | + ); | |
23 | 21 | </script> |
24 | 22 | |
25 | 23 | <p><%= _('Select the type of block you want to add to your page.') %></p> |
26 | 24 | |
27 | - <div id='center-block-types'> | |
28 | - <%= render :partial => 'block_types', :locals => { :block_types => @center_block_types } %> | |
25 | + <div id="center-block-types" class="block-types"> | |
26 | + <% @center_block_types.each do |block| %> | |
27 | + <div class='block-type'> | |
28 | + <%= labelled_radio_button(block.description, :type, block.name) %> | |
29 | + </div> | |
30 | + <% end %> | |
29 | 31 | </div> |
30 | 32 | |
31 | - <div id='side-block-types' style='display:none'> | |
32 | - <%= render :partial => 'block_types', :locals => { :block_types => @side_block_types } %> | |
33 | + <div id="side-block-types" class="block-types" style="display:none"> | |
34 | + <% @side_block_types.each do |block| %> | |
35 | + <div class='block-type'> | |
36 | + <%= labelled_radio_button(block.description, :type, block.name) %> | |
37 | + </div> | |
38 | + <% end %> | |
33 | 39 | </div> |
34 | 40 | |
35 | 41 | <br style='clear: both'/> | ... | ... |
app/views/box_organizer/edit.rhtml
app/views/box_organizer/index.rhtml
1 | 1 | <h1><%= _('Editing sideboxes')%></h1> |
2 | 2 | |
3 | -<% button_bar do %> | |
3 | +<% button_bar :class=>'design-menu' do %> | |
4 | 4 | <%= colorbox_button('add', _('Add a block'), { :action => 'add_block' }) %> |
5 | 5 | <%= button(:back, _('Back to control panel'), :controller => (profile.nil? ? 'admin_panel': 'profile_editor')) %> |
6 | 6 | <% end %> | ... | ... |
app/views/catalog/index.rhtml
... | ... | @@ -7,13 +7,17 @@ |
7 | 7 | |
8 | 8 | <div class='l-sidebar-left-bar'> |
9 | 9 | <ul> |
10 | - <% if @categories.size > 0 %> | |
10 | + <%= content_tag('li', link_to(_('Homepage'), profile.url), :class => 'catalog-categories-link') %> | |
11 | + <%= content_tag('li', link_to(_('Catalog start'), profile.catalog_url), :class => 'catalog-categories-link') %> | |
12 | + <% if @categories.present? %> | |
11 | 13 | <% @categories.each do |category| %> |
12 | 14 | <%= category_link(category) %> |
13 | 15 | <%= category_sub_links(category) %> |
14 | 16 | <% end %> |
17 | + <% elsif @category.present? %> | |
18 | + <%= content_tag('li', _('There are no sub-categories for %s') % @category.name, :id => 'catalog-categories-notice') %> | |
15 | 19 | <% else %> |
16 | - <%= content_tag('li', _('There are no sub-categories for %s') % @category.name, :style => 'color: #555753; padding-bottom: 0.5em;') %> | |
20 | + <%= content_tag('li', _('There are no categories available.'), :id => 'catalog-categories-notice') %> | |
17 | 21 | <% end %> |
18 | 22 | </ul> |
19 | 23 | </div> |
... | ... | @@ -64,20 +68,20 @@ |
64 | 68 | |
65 | 69 | <% if product.description %> |
66 | 70 | <li class="product-description expand-box"> |
67 | - <span id="product-description-button"><%= _('description') %></span> | |
68 | - <div> | |
71 | + <span class="product-description-button"><%= _('description') %></span> | |
72 | + <div class="float-box"> | |
69 | 73 | <div class="arrow"></div> |
70 | - <div class="content" id="product-description"><%= txt2html(product.description || '') %></div> | |
74 | + <div class="content"><%= product.description %></div> | |
71 | 75 | </div> |
72 | 76 | </li> |
73 | 77 | <% end %> |
74 | 78 | |
75 | 79 | <% if product.price_described? %> |
76 | 80 | <li class="product-price-composition expand-box"> |
77 | - <span id="product-price-composition-button"><%= _('price composition') %></span> | |
78 | - <div> | |
81 | + <span class="product-price-composition-button"><%= _('price composition') %></span> | |
82 | + <div class="float-box"> | |
79 | 83 | <div class="arrow"></div> |
80 | - <div class="content" id="product-price-composition"> | |
84 | + <div class="content"> | |
81 | 85 | <% product.inputs.relevant_to_price.each do |i| %> |
82 | 86 | <div class="search-product-input-dots-to-price"> |
83 | 87 | <div class="search-product-input-name"><%= i.product_category.name %></div> |
... | ... | @@ -98,9 +102,9 @@ |
98 | 102 | <% if product.inputs.count > 0 %> |
99 | 103 | <li class="product-inputs expand-box"> |
100 | 104 | <span id="inputs-button"><%= _('inputs and raw materials') %></span> |
101 | - <div> | |
105 | + <div class="float-box"> | |
102 | 106 | <div class="arrow"></div> |
103 | - <div class="content" id="inputs-description"> | |
107 | + <div class="content"> | |
104 | 108 | <% product.inputs.each do |i| %> |
105 | 109 | <div> |
106 | 110 | <%= _('%{amount_used} %{unit} of') % {:amount_used => i.amount_used, :unit => i.unit.singular} + ' ' if i.has_all_price_details? %> | ... | ... |
app/views/cms/_text_editor_sidebar.rhtml
... | ... | @@ -9,7 +9,12 @@ |
9 | 9 | <div id='media-upload-form'> |
10 | 10 | <% form_tag({ :action => 'media_upload' }, :multipart => true) do %> |
11 | 11 | <div class='formfield'> |
12 | - <%= select_profile_folder(_('Choose folder to upload files:'), :parent_id, profile) %> | |
12 | + <% default_folder = content_id_to_str default_folder_for_image_upload(profile) %> | |
13 | + <%= select_profile_folder( | |
14 | + _('Choose folder to upload files:'), | |
15 | + :parent_id, profile, default_folder, {}, {}, | |
16 | + 'type="Folder" or type="Gallery"' | |
17 | + ) %> | |
13 | 18 | </div> |
14 | 19 | <p><%= file_field_tag('file1') %></p> |
15 | 20 | <p><%= file_field_tag('file2') %></p> | ... | ... |
app/views/cms/select_article_type.rhtml
1 | +<div class="select-article-type"> | |
2 | + | |
1 | 3 | <h2> <%= _('Choose the type of content:') %> </h2> |
2 | 4 | |
3 | -<ul id="article_types"> | |
5 | +<ul class="article-types"> | |
4 | 6 | <% for type in @article_types %> |
5 | 7 | <% action = type[:class].name == 'UploadedFile' ? {:action => 'upload_files'} : {:action => 'new', :type => type[:class].name} %> |
6 | 8 | <% content_tag('a', :href => url_for(action.merge(:parent_id => @parent_id, :back_to => @back_to))) do %> |
... | ... | @@ -14,3 +16,5 @@ |
14 | 16 | <br style="clear:both" /> |
15 | 17 | |
16 | 18 | <%= colorbox_close_button(_('Cancel')) %> |
19 | + | |
20 | +</div> | ... | ... |
app/views/content_viewer/_comment_form.rhtml
... | ... | @@ -21,8 +21,6 @@ function submit_comment_form(button) { |
21 | 21 | } |
22 | 22 | </script> |
23 | 23 | |
24 | -<% focus_on = logged_in? ? 'title' : 'name' %> | |
25 | - | |
26 | 24 | <% if @comment && @comment.errors.any? && @comment.reply_of_id.blank? %> |
27 | 25 | <%= error_messages_for :comment %> |
28 | 26 | <script type="text/javascript">jQuery(function() { document.location.href = '#page-comment-form'; });</script> |
... | ... | @@ -32,17 +30,7 @@ function submit_comment_form(button) { |
32 | 30 | |
33 | 31 | <div class="post_comment_box <%= @form_div %>"> |
34 | 32 | |
35 | -<% if display_link %> | |
36 | - <h4 onclick="var d = jQuery(this).parent('.post_comment_box'); | |
37 | - if (d.hasClass('closed')) { | |
38 | - d.removeClass('closed'); | |
39 | - d.addClass('opened'); | |
40 | - d.find('input[name=comment[title]], textarea').val(''); | |
41 | - d.find('.comment_form input[name=comment[<%= focus_on %>]]').focus(); | |
42 | - }"> | |
43 | - <%= content_tag('a', '', :name => 'comment_form') + _('Post a comment') %> | |
44 | - </h4> | |
45 | -<% end %> | |
33 | + <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form') if display_link %> | |
46 | 34 | |
47 | 35 | <% unless pass_without_comment_captcha? %> |
48 | 36 | <div id="recaptcha-container" style="display: none"> |
... | ... | @@ -62,8 +50,6 @@ function submit_comment_form(button) { |
62 | 50 | <% end %> |
63 | 51 | |
64 | 52 | <% form_tag( url, { :class => 'comment_form' } ) do %> |
65 | - <%= hidden_field_tag(:confirm, 'false') %> | |
66 | - | |
67 | 53 | <%= required_fields_message %> |
68 | 54 | |
69 | 55 | <% unless logged_in? %> |
... | ... | @@ -84,10 +70,13 @@ function submit_comment_form(button) { |
84 | 70 | <%= labelled_form_field(_('Title'), text_field(:comment, :title)) %> |
85 | 71 | <%= required labelled_form_field(_('Enter your comment'), text_area(:comment, :body, :rows => 5)) %> |
86 | 72 | |
73 | + <%= hidden_field_tag(:confirm, 'false') %> | |
74 | + <%= hidden_field_tag(:view, params[:view])%> | |
75 | + | |
87 | 76 | <% button_bar do %> |
88 | 77 | <%= submit_button('add', _('Post comment'), :onclick => "submit_comment_form(this); return false") %> |
89 | 78 | <% if cancel_triggers_hide %> |
90 | - <%= button_to_function :cancel, _('Cancel'), "f=jQuery(this).parents('.post_comment_box'); f.removeClass('opened'); f.addClass('closed'); return false" %> | |
79 | + <%= button :cancel, _('Cancel'), '', :id => 'cancel-comment' %> | |
91 | 80 | <% else %> |
92 | 81 | <%= button('cancel', _('Cancel'), {:action => 'view_page', :profile => profile.identifier, :page => @comment.article.explode_path})%> |
93 | 82 | <% end %> |
... | ... | @@ -95,3 +84,5 @@ function submit_comment_form(button) { |
95 | 84 | <% end %> |
96 | 85 | |
97 | 86 | </div><!-- end class="post_comment_box" --> |
87 | + | |
88 | +<%= javascript_include_tag 'comment_form'%> | ... | ... |
app/views/content_viewer/blog_page.rhtml
1 | -<% add_rss_feed_to_head(@page.name, @page.feed.url) if @page.blog? && @page.feed %> | |
1 | +<% add_rss_feed_to_head(blog.name, blog.feed.url) if blog.blog? && blog.feed %> | |
2 | 2 | |
3 | -<%= content_tag('em', _('(external feed was not loaded yet)'), :id => 'external-feed-info', :class => 'metadata') if @page.blog? && @page.external_feed && @page.external_feed.enabled && @page.external_feed.fetched_at.nil? %> | |
3 | +<%= content_tag('em', _('(external feed was not loaded yet)'), :id => 'external-feed-info', :class => 'metadata') if blog.blog? && blog.external_feed && blog.external_feed.enabled && blog.external_feed.fetched_at.nil? %> | |
4 | 4 | |
5 | 5 | <div> |
6 | 6 | <div class='blog-description'> |
7 | - <%= @page.body %> | |
7 | + <%= blog.body %> | |
8 | 8 | </div> |
9 | 9 | </div> |
10 | 10 | <hr class="pre-posts"/> |
11 | 11 | <div class="blog-posts"> |
12 | - <%= (@page.empty? ? content_tag('em', _('(no posts)')) : list_posts(@posts, @page.visualization_format)) %> | |
12 | + <%= | |
13 | + posts = @posts | |
14 | + format = blog.visualization_format | |
15 | + if inside_block | |
16 | + posts = blog.posts.paginate(:page=>1, :per_page=>inside_block.posts_per_page) | |
17 | + format = inside_block.visualization_format | |
18 | + end | |
19 | + (blog.empty? ? content_tag('em', _('(no posts)')) : list_posts(posts, format)) | |
20 | + %> | |
13 | 21 | </div> | ... | ... |
app/views/content_viewer/view_page.rhtml
... | ... | @@ -90,7 +90,7 @@ |
90 | 90 | <% end %> |
91 | 91 | |
92 | 92 | <% if @page.accept_comments? && @comments_count > 1 %> |
93 | - <p class="post-comment-button"><a href="#comment_form" onclick="jQuery('#page-comment-form h4').first().trigger('click')"><%= _('Post a comment') %></a></p> | |
93 | + <%= link_to(_('Post a comment'), '#', :class => 'display-comment-form', :id => 'top-post-comment-button') %> | |
94 | 94 | <% end %> |
95 | 95 | |
96 | 96 | <ul class="article-comments-list"> | ... | ... |
... | ... | @@ -0,0 +1,24 @@ |
1 | +<div id="user"> | |
2 | + <span class='logged-in' style='display: none;'> | |
3 | + <%= usermenu_logged_in %> | |
4 | + </span> | |
5 | + <span class='not-logged-in' style='display: none'> | |
6 | + | |
7 | + <%= _("<span class='login'>%s</span>") % thickbox_inline_popup_link('<i class="icon-menu-login"></i><strong>' + _('Login') + '</strong>', login_url, 'inlineLoginBox', :id => 'link_login') %> | |
8 | + <%= @plugins.dispatch(:alternative_authentication_link).collect { |content| instance_eval(&content) }.join("") %> | |
9 | + | |
10 | + <div id='inlineLoginBox' style='display: none;'> | |
11 | + <%= render :file => 'account/login', :locals => { :is_thickbox => true } %> | |
12 | + </div> | |
13 | + | |
14 | + <% unless @plugins.dispatch(:allow_user_registration).include?(false) %> | |
15 | + <%= _("<span class='or'>or</span> <span class='signup'>%s</span>") % link_to('<strong>' + _('Sign up') + '</strong>', :controller => 'account', :action => 'signup')%> | |
16 | + <% end %> | |
17 | + | |
18 | + </span> | |
19 | + <form action="/search" id="top-search" class="search_form clean" method="get"> | |
20 | + <input name="query" size="15" title="<%=_('Search...')%>" onfocus="this.form.className='focused';" onblur="this.form.className=''" /> | |
21 | + <div><%=_('Press <strong>Enter</strong> to send the search query.')%></div> | |
22 | + <%= javascript_tag 'jQuery("#user form input").hint();' %> | |
23 | + </form> | |
24 | +</div><!-- end id="user" --> | ... | ... |
app/views/layouts/application-ng.rhtml
... | ... | @@ -8,38 +8,19 @@ |
8 | 8 | <meta name="description" content="<%= @environment.name %>" /> |
9 | 9 | <link rel="shortcut icon" href="<%= image_path(theme_favicon) %>" type="image/x-icon" /> |
10 | 10 | <%= noosfero_javascript %> |
11 | - <%= stylesheet_link_tag noosfero_stylesheets, :cache => 'cache' %> | |
12 | - <%= stylesheet_link_tag template_stylesheet_path %> | |
13 | - <%= stylesheet_link_tag icon_theme_stylesheet_path %> | |
14 | - <%= stylesheet_link_tag jquery_ui_theme_stylesheet_path %> | |
15 | - <% | |
16 | - plugins_stylesheets = @plugins.select(&:stylesheet?).map { |plugin| plugin.class.public_path('style.css') } | |
17 | - %> | |
18 | - <%= stylesheet_link_tag(plugins_stylesheets, :cache => 'cache/plugins-' + Digest::MD5.hexdigest(plugins_stylesheets.to_s)) unless plugins_stylesheets.empty? %> | |
19 | - <%= stylesheet_link_tag theme_stylesheet_path %> | |
11 | + <%= noosfero_stylesheets %> | |
20 | 12 | |
21 | 13 | <%# Add custom tags/styles/etc via content_for %> |
22 | 14 | <%= yield :head %> |
23 | - <%= javascript_tag('render_all_jquery_ui_widgets()') %> | |
24 | - <% | |
25 | - plugins_javascripts = @plugins.map { |plugin| plugin.js_files.map { |js| plugin.class.public_path(js) } }.flatten | |
26 | - %> | |
27 | - <%= javascript_include_tag(plugins_javascripts, :cache => 'cache/plugins-' + Digest::MD5.hexdigest(plugins_javascripts.to_s)) unless plugins_javascripts.empty? %> | |
28 | 15 | <%= |
29 | 16 | @plugins.dispatch(:head_ending).collect do |content| |
30 | 17 | content.respond_to?(:call) ? content.call : content |
31 | 18 | end.join("\n") |
32 | 19 | %> |
33 | 20 | </head> |
34 | - <body class="<%= | |
35 | - # Identify the current controller and action for the CSS: | |
36 | - " controller-"+ @controller.controller_name() + | |
37 | - " action-"+ @controller.controller_name() +"-"+ @controller.action_name() + | |
38 | - " template-"+ ( profile.nil? ? "default" : profile.layout_template ) + | |
39 | - (!profile.nil? && profile.is_on_homepage?(request.path,@page) ? " profile-homepage" : "") | |
40 | - %>" > | |
41 | - | |
21 | + <body class="<%= body_classes %>"> | |
42 | 22 | <a href="#content" id="link-go-content"><span><%= _("Go to the content") %></span></a> |
23 | + | |
43 | 24 | <%= |
44 | 25 | @plugins.dispatch(:body_beginning).collect do |content| |
45 | 26 | content.respond_to?(:call) ? content.call : content |
... | ... | @@ -51,30 +32,7 @@ |
51 | 32 | <%= theme_header %> |
52 | 33 | </div> |
53 | 34 | <div id="wrap-2"> |
54 | - <div id="user"> | |
55 | - <span class='logged-in' style='display: none;'> | |
56 | - <%= usermenu_logged_in %> | |
57 | - </span> | |
58 | - <span class='not-logged-in' style='display: none'> | |
59 | - | |
60 | - <%= _("<span class='login'>%s</span>") % thickbox_inline_popup_link('<i class="icon-menu-login"></i><strong>' + _('Login') + '</strong>', login_url, 'inlineLoginBox', :id => 'link_login') %> | |
61 | - <%= @plugins.dispatch(:alternative_authentication_link).collect { |content| instance_eval(&content) }.join("") %> | |
62 | - | |
63 | - <div id='inlineLoginBox' style='display: none;'> | |
64 | - <%= render :file => 'account/login', :locals => { :is_thickbox => true } %> | |
65 | - </div> | |
66 | - | |
67 | - <% unless @plugins.dispatch(:allow_user_registration).include?(false) %> | |
68 | - <%= _("<span class='or'>or</span> <span class='signup'>%s</span>") % link_to('<strong>' + _('Sign up') + '</strong>', :controller => 'account', :action => 'signup')%> | |
69 | - <% end %> | |
70 | - | |
71 | - </span> | |
72 | - <form action="/search" class="search_form clean" method="get" id="top-search"> | |
73 | - <input name="query" size="15" title="<%=_('Search...')%>" onfocus="this.form.className='focused';" onblur="this.form.className=''" /> | |
74 | - <div><%=_('Press <strong>Enter</strong> to send the search query.')%></div> | |
75 | - <%= javascript_tag 'jQuery("#user form input").hint();' %> | |
76 | - </form> | |
77 | - </div><!-- end id="user" --> | |
35 | + <%= render :partial => 'layouts/user' %> | |
78 | 36 | |
79 | 37 | <h1 id="site-title"> |
80 | 38 | <%= theme_site_title %> | ... | ... |
app/views/users/send_mail.rhtml
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | |
5 | 5 | <%= render :file => 'shared/tiny_mce' %> |
6 | 6 | |
7 | -<% form_for :mailing, :url => {:action => 'send_mail', :host => @environment.default_hostname} do |f| %> | |
7 | +<% form_for :mailing do |f| %> | |
8 | 8 | <%= labelled_form_field(_('Subject:'), f.text_field(:subject)) %> |
9 | 9 | <%= labelled_form_field(_('Body:'), f.text_area(:body, :class => 'mceEditor')) %> |
10 | 10 | <%= submit_button(:send, _('Send')) %> | ... | ... |
config/cucumber.yml
1 | -default: --tags ~@selenium,~@wip --exclude features/support/selenium.rb --exclude features/step_definitions/selenium_steps.rb -r features/support -r features/step_definitions | |
2 | -selenium: --tags @selenium,~@wip -r features/support -r features/step_definitions | |
1 | +<% base_requires = '-r features/support -r features/step_definitions' %> | |
2 | +<% default_options = "--color --format progress --strict --tags ~@selenium --tags ~@selenium-fixme --tags ~@fixme --exclude features/support/selenium.rb #{base_requires}" %> | |
3 | +<% selenium_options = "--strict --tags @selenium #{base_requires}" %> | |
4 | + | |
5 | +default: <%= default_options %> | |
6 | +selenium: <%= selenium_options %> | |
7 | + | |
8 | +<% enabled_plugins = Dir.glob(File.join('config', 'plugins', '*')).map{|path| plugin = File.basename(path); plugin if File.exist?(File.join('features', 'plugins', plugin)) }.compact %> | |
9 | + | |
10 | +<% enabled_plugins.each do |plugin| %> | |
11 | +<% plugin_features_path = File.join('features', 'plugins', plugin) %> | |
12 | +<% plugin_base_requires = '' %> | |
13 | +<% plugin_base_requires += " -r features/plugins/#{plugin}/support" if File.exist?(File.join(plugin_features_path, 'support')) %> | |
14 | +<% plugin_base_requires += " -r features/plugins/#{plugin}/step_definitions" if File.exist?(File.join(plugin_features_path, 'step_definitions')) %> | |
15 | +<%= "#{plugin}: #{default_options} #{plugin_base_requires}" %> | |
16 | +<%= "#{plugin}_selenium: #{selenium_options} #{plugin_base_requires}" %> | |
17 | +<% end %> | ... | ... |
config/database.yml.sqlite3
config/environment.rb
... | ... | @@ -5,7 +5,7 @@ |
5 | 5 | #ENV['RAILS_ENV'] ||= 'production' |
6 | 6 | |
7 | 7 | # Specifies gem version of Rails to use when vendor/rails is not present |
8 | -RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION | |
8 | +RAILS_GEM_VERSION = '2.3.15' unless defined? RAILS_GEM_VERSION | |
9 | 9 | |
10 | 10 | # Bootstrap the Rails environment, frameworks, and default configuration |
11 | 11 | require File.join(File.dirname(__FILE__), 'boot') | ... | ... |
config/environments/cucumber.rb
1 | -# IMPORTANT: This file was generated by Cucumber 0.4.0 | |
2 | 1 | # Edit at your own peril - it's recommended to regenerate this file |
3 | 2 | # in the future when you upgrade to a newer version of Cucumber. |
4 | 3 | |
5 | -config.cache_classes = true # This must be true for Cucumber to operate correctly! | |
4 | +# IMPORTANT: Setting config.cache_classes to false is known to | |
5 | +# break Cucumber's use_transactional_fixtures method. | |
6 | +# For more information see https://rspec.lighthouseapp.com/projects/16211/tickets/165 | |
7 | +config.cache_classes = true | |
6 | 8 | |
7 | 9 | # Log error messages when you accidentally call methods on nil. |
8 | 10 | config.whiny_nils = true |
... | ... | @@ -18,3 +20,8 @@ config.action_controller.allow_forgery_protection = false |
18 | 20 | # The :test delivery method accumulates sent emails in the |
19 | 21 | # ActionMailer::Base.deliveries array. |
20 | 22 | config.action_mailer.delivery_method = :test |
23 | + | |
24 | +config.gem 'cucumber-rails', :lib => false, :version => '>=0.3.2' unless File.directory?(File.join(Rails.root, 'vendor/plugins/cucumber-rails')) | |
25 | +config.gem 'database_cleaner', :lib => false, :version => '>=0.5.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/database_cleaner')) | |
26 | +config.gem 'capybara', :lib => false, :version => '>=0.3.5' unless File.directory?(File.join(Rails.root, 'vendor/plugins/capybara')) | |
27 | + | ... | ... |
debian/changelog
features/accept_member.feature
... | ... | @@ -14,10 +14,11 @@ Feature: accept member |
14 | 14 | And the community "My Community" is closed |
15 | 15 | And "Mario Souto" is admin of "My Community" |
16 | 16 | |
17 | + @selenium | |
17 | 18 | Scenario: approve a task to accept a member as admin in a closed community |
18 | 19 | Given "Marie Curie" asked to join "My Community" |
19 | 20 | And I am logged in as "mario" |
20 | - And I go to My Community's control panel | |
21 | + And I go to mycommunity's control panel | |
21 | 22 | And I follow "Process requests" |
22 | 23 | And I should see "Marie Curie wants to be a member" |
23 | 24 | When I choose "Accept" |
... | ... | @@ -25,10 +26,11 @@ Feature: accept member |
25 | 26 | And I press "Apply!" |
26 | 27 | Then "Marie Curie" should be admin of "My Community" |
27 | 28 | |
29 | + @selenium | |
28 | 30 | Scenario: approve a task to accept a member as member in a closed community |
29 | 31 | Given "Marie Curie" asked to join "My Community" |
30 | 32 | And I am logged in as "mario" |
31 | - And I go to My Community's control panel | |
33 | + And I go to mycommunity's control panel | |
32 | 34 | And I follow "Process requests" |
33 | 35 | And I should see "Marie Curie wants to be a member" |
34 | 36 | When I choose "Accept" |
... | ... | @@ -36,10 +38,11 @@ Feature: accept member |
36 | 38 | And I press "Apply!" |
37 | 39 | Then "Marie Curie" should be a member of "My Community" |
38 | 40 | |
41 | + @selenium | |
39 | 42 | Scenario: approve a task to accept a member as moderator in a closed community |
40 | 43 | Given "Marie Curie" asked to join "My Community" |
41 | 44 | And I am logged in as "mario" |
42 | - And I go to My Community's control panel | |
45 | + And I go to mycommunity's control panel | |
43 | 46 | And I follow "Process requests" |
44 | 47 | And I should see "Marie Curie wants to be a member" |
45 | 48 | When I choose "Accept" | ... | ... |
features/activate_enterprise.feature
... | ... | @@ -11,7 +11,7 @@ Feature: activate enterprise |
11 | 11 | |
12 | 12 | Scenario: added an unexistent code |
13 | 13 | Given feature "enterprise_activation" is enabled on environment |
14 | - And I am on Joao Silva's control panel | |
14 | + And I am on joaosilva's control panel | |
15 | 15 | And I fill in "Enterprise activation code" with "abcde" |
16 | 16 | When I press "Activate" |
17 | 17 | Then I should see "Invalid enterprise code" |
... | ... | @@ -21,7 +21,7 @@ Feature: activate enterprise |
21 | 21 | And the following enterprises |
22 | 22 | | identifier | name | enabled | |
23 | 23 | | products-factory | Products Factory | false | |
24 | - And I am on Joao Silva's control panel | |
24 | + And I am on joaosilva's control panel | |
25 | 25 | And enterprise "Products Factory" is enabled |
26 | 26 | And I fill in "Enterprise activation code" with code of "Products Factory" |
27 | 27 | When I press "Activate" |
... | ... | @@ -32,7 +32,7 @@ Feature: activate enterprise |
32 | 32 | And the following enterprises |
33 | 33 | | identifier | name | enabled | |
34 | 34 | | products-factory | Products Factory | false | |
35 | - And I am on Joao Silva's control panel | |
35 | + And I am on joaosilva's control panel | |
36 | 36 | And I fill in "Enterprise activation code" with code of "Products Factory" |
37 | 37 | When I press "Activate" |
38 | 38 | Then I should see "We don't have enough information about your enterprise to identify you." |
... | ... | @@ -43,7 +43,7 @@ Feature: activate enterprise |
43 | 43 | And the following enterprises |
44 | 44 | | identifier | name | enabled | foundation_year | |
45 | 45 | | services-provider | Services Provider | false | 2000 | |
46 | - And I am on Joao Silva's control panel | |
46 | + And I am on joaosilva's control panel | |
47 | 47 | And I fill in "Enterprise activation code" with code of "Services Provider" |
48 | 48 | And I press "Activate" |
49 | 49 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "1999" |
... | ... | @@ -56,7 +56,7 @@ Feature: activate enterprise |
56 | 56 | And the following enterprises |
57 | 57 | | identifier | name | enabled | cnpj | |
58 | 58 | | services-provider | Services Provider | false | 94.132.024/0001-48 | |
59 | - And I am on Joao Silva's control panel | |
59 | + And I am on joaosilva's control panel | |
60 | 60 | And I fill in "Enterprise activation code" with code of "Services Provider" |
61 | 61 | And I press "Activate" |
62 | 62 | And I fill in "What is the CNPJ of your enterprise?" with "12345678912345" |
... | ... | @@ -70,9 +70,9 @@ Feature: activate enterprise |
70 | 70 | And the following enterprises |
71 | 71 | | identifier | name | enabled | foundation_year | |
72 | 72 | | services-provider | Services Provider | false | 2000 | |
73 | - And I visit "Joao Silva's control panel" and wait | |
73 | + And I go to joaosilva's control panel | |
74 | 74 | And I fill in "Enterprise activation code" with code of "Services Provider" |
75 | - And I press "Activate" and wait | |
75 | + And I press "Activate" | |
76 | 76 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" |
77 | 77 | And I press "Continue" |
78 | 78 | And I check "I read the terms of use and accepted them" |
... | ... | @@ -91,9 +91,9 @@ Feature: activate enterprise |
91 | 91 | | active-template | Active Template | false | 2000 | |
92 | 92 | And "Active Template" is the active enterprise template |
93 | 93 | And "Services Provider 2" doesnt have "Active Template" as template |
94 | - And I visit "Joao Silva's control panel" and wait | |
94 | + And I go to joaosilva's control panel | |
95 | 95 | And I fill in "Enterprise activation code" with code of "Services Provider 2" |
96 | - And I press "Activate" and wait | |
96 | + And I press "Activate" | |
97 | 97 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" |
98 | 98 | And I press "Continue" |
99 | 99 | And I check "I read the terms of use and accepted them" |
... | ... | @@ -113,9 +113,9 @@ Feature: activate enterprise |
113 | 113 | | active-template | Active Template | false | 2000 | |
114 | 114 | And "Active Template" is the active enterprise template |
115 | 115 | And "Services Provider 3" doesnt have "Active Template" as template |
116 | - When I visit "Joao Silva's control panel" and wait | |
116 | + When I go to joaosilva's control panel | |
117 | 117 | And I fill in "Enterprise activation code" with code of "Services Provider 3" |
118 | - And I press "Activate" and wait | |
118 | + And I press "Activate" | |
119 | 119 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" |
120 | 120 | And I press "Continue" |
121 | 121 | And I check "I read the terms of use and accepted them" | ... | ... |
features/admin_categories.feature
... | ... | @@ -16,22 +16,22 @@ Feature: manage categories |
16 | 16 | @selenium |
17 | 17 | Scenario: admin user could access new category |
18 | 18 | Given I follow "Administration" |
19 | - When I follow "Manage Categories" | |
20 | - And I follow "New category" and wait | |
19 | + When I follow "Categories" | |
20 | + And I follow "New category" | |
21 | 21 | Then I should be on /admin/categories/new |
22 | 22 | |
23 | 23 | @selenium |
24 | 24 | Scenario: admin user could create a category |
25 | - Given I visit "/admin/categories/new" and wait | |
26 | - When I fill in "Name" with "Category 1" | |
27 | - And I press "Save" | |
28 | - Then I should see "Categories" | |
29 | - And I should see "Category 1" | |
25 | + Given I go to /admin/categories/new | |
26 | + And I fill in "Name" with "Category 1" | |
27 | + When I press "Save" | |
28 | + Then I should see "Categories" | |
29 | + And I should see "Category 1" | |
30 | 30 | |
31 | 31 | @selenium |
32 | 32 | Scenario: admin user could see all the category tree |
33 | 33 | Given I follow "Administration" |
34 | - And I follow "Manage Categories" | |
34 | + And I follow "Categories" | |
35 | 35 | When I follow "Show" |
36 | 36 | Then I should see "Vegetarian" |
37 | 37 | And I should see "Steak" |
... | ... | @@ -39,13 +39,13 @@ Feature: manage categories |
39 | 39 | @selenium |
40 | 40 | Scenario: admin user could hide the category tree |
41 | 41 | Given I follow "Administration" |
42 | - And I follow "Manage Categories" | |
43 | - When I follow "Show" | |
42 | + And I follow "Categories" | |
43 | + When I follow "Show" and wait while it hides | |
44 | 44 | Then I should see "Vegetarian" |
45 | 45 | And I should see "Steak" |
46 | - When I follow "Hide" and sleep 1 second | |
47 | - Then I should not see "Vegetarian" | |
48 | - And I should not see "Steak" | |
46 | + When I follow "Hide" and wait while it hides | |
47 | + Then "Vegetarian" should not be visible within "div" | |
48 | + And "Steak" should not be visible within "div" | |
49 | 49 | |
50 | 50 | @selenium |
51 | 51 | Scenario: the show link is available just for categories with category tree |
... | ... | @@ -54,7 +54,7 @@ Feature: manage categories |
54 | 54 | | Steak | Pig | true | |
55 | 55 | And I am on the homepage |
56 | 56 | When I follow "Administration" |
57 | - And I follow "Manage Categories" | |
57 | + And I follow "Categories" | |
58 | 58 | Then I should see "Food Show" |
59 | 59 | When I follow "Show" |
60 | 60 | Then I should see "Vegetarian" | ... | ... |
features/approve_article.feature
... | ... | @@ -19,52 +19,52 @@ Feature: approve article |
19 | 19 | And "Maria Silva" is a member of "Sample Community" |
20 | 20 | And "Joao Silva" is admin of "Sample Community" |
21 | 21 | |
22 | - @selenium | |
22 | + @selenium-fixme | |
23 | 23 | Scenario: edit an article before approval |
24 | 24 | Given I am logged in as "mariasilva" |
25 | - And I am on Maria Silva's homepage | |
26 | - When I follow "Spread" and wait | |
25 | + And I am on mariasilva's homepage | |
26 | + When I follow "Spread" | |
27 | 27 | And I check "Sample Community" |
28 | 28 | And I press "Spread this" |
29 | 29 | And I am logged in as "joaosilva" |
30 | - And I go to Sample Community's control panel | |
31 | - And I follow "Process requests" and wait | |
30 | + And I go to sample-community's control panel | |
31 | + And I follow "Process requests" | |
32 | 32 | And I fill in "Text" with "This is an article edited" |
33 | 33 | And I choose "Accept" |
34 | 34 | And I press "Apply!" |
35 | - And I go to Sample Community's sitemap | |
35 | + And I go to sample-community's sitemap | |
36 | 36 | And I follow "Sample Article" |
37 | 37 | Then I should see "This is an article edited" |
38 | 38 | |
39 | 39 | @selenium |
40 | 40 | Scenario: reject an article with explanation |
41 | 41 | Given I am logged in as "mariasilva" |
42 | - And I go to Maria Silva's cms | |
42 | + And I go to mariasilva's cms | |
43 | 43 | And I follow "Sample Article" |
44 | - And I follow "Spread" and wait | |
44 | + And I follow "Spread" | |
45 | 45 | And I check "Sample Community" |
46 | 46 | And I press "Spread this" |
47 | 47 | And I am logged in as "joaosilva" |
48 | - And I go to Sample Community's control panel | |
49 | - And I follow "Process requests" and wait | |
48 | + And I go to sample-community's control panel | |
49 | + And I follow "Process requests" | |
50 | 50 | And I choose "Reject" |
51 | 51 | And I fill in "Rejection explanation" with "This is not an appropriate article for this community." |
52 | 52 | And I press "Apply!" |
53 | - When I go to Sample Community's sitemap | |
53 | + When I go to sample-community's sitemap | |
54 | 54 | Then I should not see "Sample Article" |
55 | 55 | |
56 | 56 | @selenium |
57 | 57 | Scenario: reject an article that was removed |
58 | 58 | Given I am logged in as "mariasilva" |
59 | 59 | And I follow "Dub Wars" |
60 | - And I follow "Spread" and wait | |
60 | + And I follow "Spread" | |
61 | 61 | And I check "Sample Community" |
62 | 62 | And I press "Spread this" |
63 | 63 | And I follow "Delete" |
64 | - And I press "Yes, I want." | |
64 | + And I confirm the browser dialog | |
65 | 65 | When I am logged in as "joaosilva" |
66 | - And I go to Sample Community's control panel | |
67 | - And I follow "Process requests" and wait | |
66 | + And I go to sample-community's control panel | |
67 | + And I follow "Process requests" | |
68 | 68 | And I choose "Reject" |
69 | 69 | And I fill in "Rejection explanation" with "Article was removed." |
70 | 70 | And I press "Apply!" | ... | ... |
features/balloon.feature
... | ... | @@ -12,33 +12,29 @@ Feature: balloon |
12 | 12 | @selenium |
13 | 13 | Scenario: I should not see trigger if not enabled |
14 | 14 | Given feature "show_balloon_with_profile_links_when_clicked" is disabled on environment |
15 | - When I go to /browse/people | |
15 | + When I go to /search/people | |
16 | 16 | Then I should not see "Profile links" |
17 | 17 | |
18 | 18 | @selenium |
19 | 19 | Scenario: I should not see trigger by default |
20 | - Given the following blocks | |
21 | - | owner | type | | |
22 | - | environment | PeopleBlock | | |
23 | - And feature "show_balloon_with_profile_links_when_clicked" is enabled on environment | |
24 | - When I go to the homepage | |
20 | + Given feature "show_balloon_with_profile_links_when_clicked" is enabled on environment | |
21 | + When I go to /search/people | |
25 | 22 | Then I should not see "Friends" |
26 | 23 | |
27 | 24 | @selenium |
28 | 25 | Scenario: I should see balloon when clicked on people block trigger |
29 | - Given the following blocks | |
30 | - | owner | type | | |
31 | - | environment | PeopleBlock | | |
32 | - And feature "show_balloon_with_profile_links_when_clicked" is enabled on environment | |
33 | - When I go to the homepage | |
34 | - And I follow "Profile links" | |
26 | + Given feature "show_balloon_with_profile_links_when_clicked" is enabled on environment | |
27 | + And I go to /search/people | |
28 | + And display ".person-trigger" | |
29 | + When I follow "Profile links" | |
35 | 30 | Then I should see "Friends" |
36 | 31 | |
37 | 32 | @selenium |
38 | 33 | Scenario: I should see balloon when clicked on community block trigger |
39 | 34 | Given feature "show_balloon_with_profile_links_when_clicked" is enabled on environment |
40 | - When I go to /browse/communities | |
41 | - And I follow "Profile links" | |
35 | + And I go to /search/communities | |
36 | + And display ".community-trigger" | |
37 | + When I follow "Profile links" | |
42 | 38 | Then I should see "Members" |
43 | 39 | |
44 | 40 | @selenium |
... | ... | @@ -56,7 +52,8 @@ Feature: balloon |
56 | 52 | @selenium |
57 | 53 | Scenario: I should see balloon when clicked on page trigger |
58 | 54 | Given feature "show_balloon_with_profile_links_when_clicked" is enabled on environment |
59 | - When I go to /assets/communities | |
60 | - And I follow "Profile links" | |
55 | + And I go to /assets/communities | |
56 | + And display ".community-trigger" | |
57 | + When I follow "Profile links" | |
61 | 58 | Then I should see "Members" |
62 | 59 | And I should see "Agenda" | ... | ... |
features/blog.feature
... | ... | @@ -11,16 +11,16 @@ Feature: blog |
11 | 11 | And I am logged in as "joaosilva" |
12 | 12 | |
13 | 13 | Scenario: create a blog |
14 | - Given I go to the Control panel | |
14 | + Given I go to joaosilva's control panel | |
15 | 15 | And I follow "Create blog" |
16 | 16 | Then I should see "My Blog" |
17 | 17 | When I fill in "Title" with "My Blog" |
18 | 18 | And I press "Save" |
19 | - And I go to Joao Silva's control panel | |
19 | + And I go to joaosilva's control panel | |
20 | 20 | Then I should see "Configure blog" |
21 | 21 | |
22 | 22 | Scenario: redirect to blog after create blog from control panel |
23 | - Given I go to the Control panel | |
23 | + Given I go to joaosilva's control panel | |
24 | 24 | And I follow "Create blog" |
25 | 25 | Then I should see "My Blog" |
26 | 26 | When I fill in "Title" with "My Blog" |
... | ... | @@ -28,7 +28,7 @@ Feature: blog |
28 | 28 | Then I should be on /joaosilva/my-blog |
29 | 29 | |
30 | 30 | Scenario: redirect to blog after create blog from cms |
31 | - Given I go to the Control panel | |
31 | + Given I go to joaosilva's control panel | |
32 | 32 | And I follow "Manage Content" |
33 | 33 | And I follow "New content" |
34 | 34 | When I follow "Blog" |
... | ... | @@ -37,13 +37,13 @@ Feature: blog |
37 | 37 | Then I should be on /joaosilva/blog-from-cms |
38 | 38 | |
39 | 39 | Scenario: create multiple blogs |
40 | - Given I go to the Control panel | |
40 | + Given I go to joaosilva's control panel | |
41 | 41 | And I follow "Manage Content" |
42 | 42 | And I follow "New content" |
43 | 43 | And I follow "Blog" |
44 | 44 | And I fill in "Title" with "Blog One" |
45 | 45 | And I press "Save" |
46 | - Then I go to the Control panel | |
46 | + Then I go to joaosilva's control panel | |
47 | 47 | And I follow "Manage Content" |
48 | 48 | And I follow "New content" |
49 | 49 | And I follow "Blog" |
... | ... | @@ -53,7 +53,7 @@ Feature: blog |
53 | 53 | And I should be on /joaosilva/blog-two |
54 | 54 | |
55 | 55 | Scenario: cancel button back to cms |
56 | - Given I go to the Control panel | |
56 | + Given I go to joaosilva's control panel | |
57 | 57 | And I follow "Manage Content" |
58 | 58 | And I follow "New content" |
59 | 59 | And I follow "Blog" |
... | ... | @@ -61,7 +61,7 @@ Feature: blog |
61 | 61 | Then I should be on /myprofile/joaosilva/cms |
62 | 62 | |
63 | 63 | Scenario: cancel button back to myprofile |
64 | - Given I go to the Control panel | |
64 | + Given I go to joaosilva's control panel | |
65 | 65 | And I follow "Create blog" |
66 | 66 | When I follow "Cancel" within ".main-block" |
67 | 67 | Then I should be on /myprofile/joaosilva |
... | ... | @@ -71,7 +71,7 @@ Feature: blog |
71 | 71 | | owner | name | |
72 | 72 | | joaosilva | Blog One | |
73 | 73 | | joaosilva | Blog Two | |
74 | - And I go to the Control panel | |
74 | + And I go to joaosilva's control panel | |
75 | 75 | When I follow "Configure blog" |
76 | 76 | Then I should be on /myprofile/joaosilva/cms |
77 | 77 | |
... | ... | @@ -79,7 +79,7 @@ Feature: blog |
79 | 79 | Given the following blogs |
80 | 80 | | owner | name | |
81 | 81 | | joaosilva | Blog One | |
82 | - And I go to the Control panel | |
82 | + And I go to joaosilva's control panel | |
83 | 83 | When I follow "Configure blog" |
84 | 84 | Then I should be on edit "Blog One" by joaosilva |
85 | 85 | |
... | ... | @@ -89,14 +89,14 @@ Feature: blog |
89 | 89 | | owner | name | |
90 | 90 | | joaosilva | Blog One | |
91 | 91 | And I go to /joaosilva/blog-one |
92 | - When I follow "Configure blog" and wait | |
92 | + When I follow "Configure blog" | |
93 | 93 | Then I should be on edit "Blog One" by joaosilva |
94 | 94 | |
95 | 95 | Scenario: change address of blog |
96 | 96 | Given the following blogs |
97 | 97 | | owner | name | |
98 | 98 | | joaosilva | Blog One | |
99 | - And I go to the Control panel | |
99 | + And I go to joaosilva's control panel | |
100 | 100 | And I follow "Configure blog" |
101 | 101 | And I fill in "Address" with "blog-two" |
102 | 102 | And I press "Save" |
... | ... | @@ -104,7 +104,7 @@ Feature: blog |
104 | 104 | Then I should see "Blog One" |
105 | 105 | |
106 | 106 | Scenario: display tag list field when creating new blog |
107 | - Given I go to the Control panel | |
107 | + Given I go to joaosilva's control panel | |
108 | 108 | And I follow "Manage Content" |
109 | 109 | And I follow "New content" |
110 | 110 | When I follow "Blog" | ... | ... |
features/browse.feature
... | ... | @@ -17,32 +17,34 @@ Feature: browse |
17 | 17 | |
18 | 18 | @selenium |
19 | 19 | Scenario: Show people browse menu |
20 | - Given I should not see "More Recent" | |
21 | - And I should not see "More Active" | |
22 | - And I should not see "More Popular" | |
23 | - When I click "#submenu-people-trigger" | |
24 | - Then I should see "More Recent" | |
25 | - And I should see "More Active" | |
26 | - And I should see "More Popular" | |
20 | + Given I should not see "More recent" | |
21 | + And I should not see "More active" | |
22 | + And I should not see "More popular" | |
23 | + And display "#submenu-people-trigger" | |
24 | + When I follow "submenu-people-trigger" | |
25 | + Then I should see "More recent" | |
26 | + And I should see "More active" | |
27 | + And I should see "More popular" | |
27 | 28 | |
28 | 29 | @selenium |
29 | 30 | Scenario: People browse menu should add logged information |
30 | 31 | Given I am logged in as "joaosilva" |
31 | - And I should not see "More Recent" | |
32 | - And I should not see "More Active" | |
33 | - And I should not see "More Popular" | |
32 | + And I should not see "More recent" | |
33 | + And I should not see "More active" | |
34 | + And I should not see "More popular" | |
34 | 35 | And I should not see "Invite friends" |
35 | 36 | And I should not see "My friends" |
36 | - When I click "#submenu-people-trigger" | |
37 | - Then I should see "More Recent" | |
38 | - And I should see "More Active" | |
39 | - And I should see "More Popular" | |
37 | + And display "#submenu-people-trigger" | |
38 | + When I follow "submenu-people-trigger" | |
39 | + Then I should see "More recent" | |
40 | + And I should see "More active" | |
41 | + And I should see "More popular" | |
40 | 42 | And I should see "Invite friends" |
41 | 43 | And I should see "My friends" |
42 | 44 | |
43 | 45 | Scenario: Browse people by query |
44 | 46 | Given I go to /search/people |
45 | - When I fill in "Silva" for "query" | |
47 | + When I fill in "Silva" for "search-input" | |
46 | 48 | And I press "Search" |
47 | 49 | Then I should see "Joao Silva" |
48 | 50 | And I should see "Pedro Silva" |
... | ... | @@ -54,31 +56,33 @@ Feature: browse |
54 | 56 | Scenario: Communities browse menu should add logged information |
55 | 57 | Given I am logged in as "joaosilva" |
56 | 58 | When I go to /joaosilva |
57 | - Then I should not see "More Recent" | |
58 | - And I should not see "More Active" | |
59 | - And I should not see "More Popular" | |
59 | + Then I should not see "More recent" | |
60 | + And I should not see "More active" | |
61 | + And I should not see "More popular" | |
60 | 62 | And I should not see "My communities" |
61 | 63 | And I should not see "New community" |
62 | - When I click "#submenu-communities-trigger" | |
63 | - Then I should see "More Recent" | |
64 | - And I should see "More Active" | |
65 | - And I should see "More Popular" | |
64 | + And display "#submenu-communities-trigger" | |
65 | + When I follow "submenu-communities-trigger" | |
66 | + Then I should see "More recent" | |
67 | + And I should see "More active" | |
68 | + And I should see "More popular" | |
66 | 69 | And I should see "My communities" |
67 | 70 | And I should see "New community" |
68 | 71 | |
69 | 72 | @selenium |
70 | 73 | Scenario: Show communities browse menu |
71 | - Given I should not see "More Recent" | |
72 | - And I should not see "More Active" | |
73 | - And I should not see "More Popular" | |
74 | - When I click "#submenu-communities-trigger" | |
75 | - Then I should see "More Recent" | |
76 | - And I should see "More Active" | |
77 | - And I should see "More Popular" | |
74 | + Given I should not see "More recent" | |
75 | + And I should not see "More active" | |
76 | + And I should not see "More popular" | |
77 | + And display "#submenu-communities-trigger" | |
78 | + When I follow "submenu-communities-trigger" | |
79 | + Then I should see "More recent" | |
80 | + And I should see "More active" | |
81 | + And I should see "More popular" | |
78 | 82 | |
79 | 83 | Scenario: Browse communities by query |
80 | 84 | When I go to /search/communities |
81 | - And I fill in "Neto" for "query" | |
85 | + And I fill in "Neto" for "search-input" | |
82 | 86 | And I press "Search" |
83 | 87 | Then I should see "Community Neto" |
84 | 88 | And I should not see "Joao Silva" |
... | ... | @@ -88,13 +92,14 @@ Feature: browse |
88 | 92 | |
89 | 93 | @selenium |
90 | 94 | Scenario: Show contents browse menu |
91 | - Given I should not see "More Comments" | |
92 | - And I should not see "More Views" | |
93 | - And I should not see "More Recent" | |
94 | - When I click "#submenu-contents-trigger" | |
95 | - Then I should see "More Comments" | |
96 | - And I should see "More Views" | |
97 | - And I should see "More Recent" | |
95 | + Given I should not see "Most commented" | |
96 | + And I should not see "More viewed" | |
97 | + And I should not see "More recent" | |
98 | + And display "#submenu-contents-trigger" | |
99 | + When I follow "submenu-contents-trigger" | |
100 | + Then I should see "Most commented" | |
101 | + And I should see "More viewed" | |
102 | + And I should see "More recent" | |
98 | 103 | |
99 | 104 | Scenario: Browse contents by query |
100 | 105 | Given the following articles |
... | ... | @@ -103,7 +108,7 @@ Feature: browse |
103 | 108 | | joaosilva | Bees and ants are insects | this is another article | |
104 | 109 | | joaosilva | Ants are small | this is another article | |
105 | 110 | When I go to /search/contents |
106 | - And I fill in "bees" for "query" | |
111 | + And I fill in "bees" for "search-input" | |
107 | 112 | And I press "Search" |
108 | 113 | Then I should see "Bees can fly" |
109 | 114 | And I should see "Bees and ants are insects" | ... | ... |
features/browse_catalogs.feature
... | ... | @@ -18,7 +18,7 @@ Feature: browse catalogs |
18 | 18 | |
19 | 19 | Scenario: display titles |
20 | 20 | Then I should see "Associação de Artesanato de Bonito" |
21 | - And I should see "Products/Services" within "#product-list" | |
21 | + And I should see "Products/Services" | |
22 | 22 | |
23 | 23 | Scenario: display the simplest possible product |
24 | 24 | Given the following products |
... | ... | @@ -132,7 +132,7 @@ Feature: browse catalogs |
132 | 132 | And I should not see "qualifiers" |
133 | 133 | And I should not see "price composition" |
134 | 134 | |
135 | - @selenium | |
135 | + @selenium-fixme | |
136 | 136 | Scenario: display description button when needed (but not the description) |
137 | 137 | Given the following products |
138 | 138 | | owner | category | name | price | description | |
... | ... | @@ -142,22 +142,22 @@ Feature: browse catalogs |
142 | 142 | Then I should see "Produto2" within "li.product-link" |
143 | 143 | And I should see "12.34" within "span.product-price" |
144 | 144 | And I should see "description" within "#product-description-button" |
145 | - And the "product-description-button" should be visible | |
145 | + And "description" should not be visible within "product-description-button" | |
146 | 146 | And I should see "A small description" within "#product-description" |
147 | - And the "product-description" should not be visible | |
147 | + And "A small description for a product that doesn't exist" should not be visible within "product-description" | |
148 | 148 | |
149 | - @selenium | |
149 | + @selenium-fixme | |
150 | 150 | Scenario: display description when button is clicked |
151 | 151 | Given the following products |
152 | 152 | | owner | category | name | price | description | |
153 | 153 | | artebonito | categ1 | Produto3 | 12.34 | A small description for a product that doesn't exist. | |
154 | 154 | And I am on /catalog/artebonito |
155 | 155 | And I reload and wait for the page |
156 | - When I click "product-description-button" | |
156 | + When I follow "product-description-button" | |
157 | 157 | Then I should see "A small description" within "#product-description" |
158 | - And the "product-description" should be visible | |
158 | + And "A small description for a product that doesn't exist" should not be visible within "product-description" | |
159 | 159 | |
160 | - @selenium | |
160 | + @selenium-fixme | |
161 | 161 | Scenario: hide description |
162 | 162 | Given the following products |
163 | 163 | | owner | category | name | price | description | |
... | ... | @@ -198,7 +198,7 @@ Feature: browse catalogs |
198 | 198 | And I should see "Organic" within "span.search-product-qualifier" |
199 | 199 | And I should not see "price composition" |
200 | 200 | |
201 | - @selenium | |
201 | + @selenium-fixme | |
202 | 202 | Scenario: not display price composition button if price is not described |
203 | 203 | Given the following product |
204 | 204 | | owner | category | name | price | |
... | ... | @@ -212,7 +212,7 @@ Feature: browse catalogs |
212 | 212 | And I should see "10.00" within "span.product-price" |
213 | 213 | And the "#product-price-composition-button" should not be visible |
214 | 214 | |
215 | - @selenium | |
215 | + @selenium-fixme | |
216 | 216 | Scenario: display price composition button (but not inputs) |
217 | 217 | Given the following product |
218 | 218 | | owner | category | name | price | |
... | ... | @@ -229,7 +229,7 @@ Feature: browse catalogs |
229 | 229 | And I should see "food" within "#product-price-composition" |
230 | 230 | And I should see "10.00" within "#product-price-composition" |
231 | 231 | |
232 | - @selenium | |
232 | + @selenium-fixme | |
233 | 233 | Scenario: display price composition when button is clicked |
234 | 234 | Given the following product |
235 | 235 | | owner | category | name | price | |
... | ... | @@ -244,7 +244,7 @@ Feature: browse catalogs |
244 | 244 | And I should see "food" within "#product-price-composition" |
245 | 245 | And I should see "10.88" within "#product-price-composition" |
246 | 246 | |
247 | - @selenium | |
247 | + @selenium-fixme | |
248 | 248 | Scenario: display inputs and raw materials button when not completely filled |
249 | 249 | Given the following product |
250 | 250 | | owner | category | name | price | |
... | ... | @@ -260,7 +260,7 @@ Feature: browse catalogs |
260 | 260 | Then the "#inputs-button" should be visible |
261 | 261 | And I should see "inputs and raw materials" within "#inputs-button" |
262 | 262 | |
263 | - @selenium | |
263 | + @selenium-fixme | |
264 | 264 | Scenario: display inputs and raw materials button |
265 | 265 | Given the following product |
266 | 266 | | owner | category | name | price | |
... | ... | @@ -280,7 +280,7 @@ Feature: browse catalogs |
280 | 280 | And the "#inputs-description" should not be visible |
281 | 281 | And I should see "7.0 Liter of food" within "#inputs-description" |
282 | 282 | |
283 | - @selenium | |
283 | + @selenium-fixme | |
284 | 284 | Scenario: display inputs and raw materials description |
285 | 285 | Given the following product |
286 | 286 | | owner | category | name | price | |
... | ... | @@ -297,7 +297,7 @@ Feature: browse catalogs |
297 | 297 | Then the "#inputs-description" should be visible |
298 | 298 | And I should see "7.0 Liter of food" within "#inputs-description" |
299 | 299 | |
300 | - @selenium | |
300 | + @selenium-fixme | |
301 | 301 | Scenario: hide inputs and raw materials |
302 | 302 | Given the following product |
303 | 303 | | owner | category | name | price | | ... | ... |
features/browse_enterprises.feature
... | ... | @@ -24,7 +24,7 @@ Scenario: show profile links button |
24 | 24 | And I should not see "Members" |
25 | 25 | And I should not see "Agenda" |
26 | 26 | |
27 | -@selenium | |
27 | +@selenium-fixme | |
28 | 28 | Scenario: show profile links when clicked |
29 | 29 | Given I am on /assets/enterprises |
30 | 30 | When I follow "Profile links" |
... | ... | @@ -32,7 +32,7 @@ Scenario: show profile links when clicked |
32 | 32 | And I should see "Members" within "ul.menu-submenu-list" |
33 | 33 | And I should see "Agenda" within "ul.menu-submenu-list" |
34 | 34 | |
35 | -@selenium | |
35 | +@selenium-fixme | |
36 | 36 | Scenario: go to catalog when click on products link |
37 | 37 | Given I am on /assets/enterprises |
38 | 38 | When I follow "Profile links" | ... | ... |
features/categories_block.feature
... | ... | @@ -25,7 +25,7 @@ Feature: categories_block |
25 | 25 | | environment | CategoriesBlock | |
26 | 26 | And I am logged in as admin |
27 | 27 | |
28 | - @selenium | |
28 | + @selenium @ignore-hidden-elements | |
29 | 29 | Scenario: List just product categories |
30 | 30 | Given I go to /admin/environment_design |
31 | 31 | And I follow "Edit" within ".categories-block" |
... | ... | @@ -33,11 +33,11 @@ Feature: categories_block |
33 | 33 | When I press "Save" |
34 | 34 | Then I should see "Food" |
35 | 35 | And I should see "Book" |
36 | - And I should not see "Vegetarian" | |
37 | - And I should not see "Steak" | |
38 | - And I should not see "Fiction" | |
36 | + And "Vegetarian" should not be visible within "span#category-name" | |
37 | + And "Steak" should not be visible within "span#category-name" | |
38 | + And "Fiction" should not be visible within "span#category-name" | |
39 | 39 | |
40 | - @selenium | |
40 | + @selenium @ignore-hidden-elements | |
41 | 41 | Scenario: Show submenu if it exists |
42 | 42 | Given I go to /admin/environment_design |
43 | 43 | And I follow "Edit" within ".categories-block" |
... | ... | @@ -45,40 +45,39 @@ Feature: categories_block |
45 | 45 | And I press "Save" |
46 | 46 | Then I should see "Food" |
47 | 47 | And I should see "Book" |
48 | - And I should not see "Vegetarian" | |
49 | - And I should not see "Steak" | |
50 | - And I should not see "Literature" | |
51 | - When I click ".category-link-expand category-root" | |
48 | + And "Vegetarian" should not be visible within "span#category-name" | |
49 | + And "Steak" should not be visible within "span#category-name" | |
50 | + And "Literature" should not be visible within "span#category-name" | |
51 | + When I follow "block_2_category_2" | |
52 | 52 | Then I should see "Literature" |
53 | - When I click ".category-link-expand category-root" | |
53 | + When I follow "block_2_category_1" | |
54 | 54 | Then I should see "Vegetarian" |
55 | 55 | And I should see "Steak" |
56 | 56 | And I should not see "Fiction" |
57 | 57 | |
58 | - @selenium | |
58 | + @selenium @ignore-hidden-elements | |
59 | 59 | Scenario: Show only one submenu per time |
60 | 60 | Given I go to /admin/environment_design |
61 | 61 | And I follow "Edit" within ".categories-block" |
62 | 62 | And I check "Product" |
63 | 63 | And I press "Save" |
64 | 64 | Then I should see "Book" |
65 | - And I should not see "Literature" | |
66 | - When I click ".category-link-expand category-root" | |
65 | + And "Literature" should not be visible within "span#category-name" | |
66 | + When I follow "block_2_category_2" | |
67 | 67 | Then I should see "Literature" |
68 | 68 | |
69 | - @selenium | |
69 | + @selenium @ignore-hidden-elements | |
70 | 70 | Scenario: List just general categories |
71 | 71 | Given I go to /admin/environment_design |
72 | 72 | And I follow "Edit" within ".categories-block" |
73 | - And I check "Generic Category" | |
73 | + And I check "Generic category" | |
74 | 74 | When I press "Save" |
75 | 75 | Then I should see "Wood" |
76 | 76 | |
77 | - @selenium | |
77 | + @selenium @ignore-hidden-elements | |
78 | 78 | Scenario: List just regions |
79 | 79 | Given I go to /admin/environment_design |
80 | 80 | And I follow "Edit" within ".categories-block" |
81 | 81 | And I check "Region" |
82 | 82 | When I press "Save" |
83 | 83 | Then I should see "Bahia" |
84 | - | ... | ... |
features/change_organization_name.feature
... | ... | @@ -12,12 +12,12 @@ Feature: change organization name |
12 | 12 | | joaosilva | Joao Silva | |
13 | 13 | And "Joao Silva" is admin of "Sample Community" |
14 | 14 | And I am logged in as "joaosilva" |
15 | - And I am on Sample Community's control panel | |
15 | + And I am on sample-community's control panel | |
16 | 16 | And I follow "Community Info and settings" |
17 | 17 | And I fill in "Name" with "New Sample Community" |
18 | 18 | When I press "Save" |
19 | - Then I should be on New Sample Community's control panel | |
20 | - | |
19 | + Then I should be on sample-community's control panel | |
20 | + And I should see "New Sample Community" within "title" | |
21 | 21 | |
22 | 22 | Scenario: changing enterprise's name |
23 | 23 | Given the following enterprises |
... | ... | @@ -28,8 +28,9 @@ Feature: change organization name |
28 | 28 | | joaosilva | Joao Silva | |
29 | 29 | And "Joao Silva" is admin of "Sample Enterprise" |
30 | 30 | And I am logged in as "joaosilva" |
31 | - And I am on Sample Enterprise's control panel | |
31 | + And I am on sample-enterprise's control panel | |
32 | 32 | And I follow "Enterprise Info and settings" |
33 | 33 | And I fill in "Name" with "New Sample Enterprise" |
34 | 34 | When I press "Save" |
35 | - Then I should be on New Sample Enterprise's control panel | |
35 | + Then I should be on sample-enterprise's control panel | |
36 | + And I should see "New Sample Enterprise" within "title" | ... | ... |
features/chat.feature
... | ... | @@ -17,7 +17,7 @@ Feature: chat |
17 | 17 | Scenario: provide link to open chat |
18 | 18 | Given feature "xmpp_chat" is enabled on environment |
19 | 19 | And I am logged in as "tame" |
20 | - Then I should see "Open chat" link | |
20 | + Then I should see "Open chat" within "#user" | |
21 | 21 | |
22 | 22 | @selenium |
23 | 23 | Scenario: provide the chat online users content |
... | ... | @@ -30,18 +30,18 @@ Feature: chat |
30 | 30 | Given the profile "tame" has no blocks |
31 | 31 | And feature "xmpp_chat" is enabled on environment |
32 | 32 | And I am logged in as "tame" |
33 | - And I go to Tame's profile | |
34 | - When I click "#chat-online-users-title" | |
33 | + And I go to tame's profile | |
34 | + When I follow "chat-online-users-title" | |
35 | 35 | Then I should see "Maria Silva" |
36 | 36 | And I should see "Jose Silva" |
37 | 37 | |
38 | 38 | Scenario: not provide link to chat when environment not support that |
39 | 39 | Given I am logged in as "tame" |
40 | - Then I should not see "Open chat" link | |
40 | + Then I should not see "Open chat" within "#user" | |
41 | 41 | |
42 | 42 | Scenario: not provide link to chat when the user is logged out |
43 | - Given I am on Tame's homepage | |
44 | - Then I should not see "Open chat" link | |
43 | + Given I am on tame's homepage | |
44 | + Then I should not see "Open chat" within "#user" | |
45 | 45 | |
46 | 46 | @selenium |
47 | 47 | Scenario: not provide the chat online users list when environment not support that |
... | ... | @@ -71,8 +71,8 @@ Feature: chat |
71 | 71 | Given the profile "tame" has no blocks |
72 | 72 | And feature "xmpp_chat" is enabled on environment |
73 | 73 | And I am logged in as "tame" |
74 | - And I go to Tame's profile | |
75 | - When I click "#chat-online-users-title" | |
74 | + And I go to tame's profile | |
75 | + When I follow "chat-online-users-title" | |
76 | 76 | And I follow "Maria Silva" |
77 | 77 | And I select window "noosfero_chat" |
78 | 78 | Then I should see "Chat - Colivre.net - Friends online (0)" |
... | ... | @@ -83,7 +83,7 @@ Feature: chat |
83 | 83 | And I am logged in as "tame" |
84 | 84 | When I follow "Open chat" |
85 | 85 | And I select window "noosfero_chat" |
86 | - Then I should see "Offline" link | |
86 | + Then I should see "Offline" within "a" | |
87 | 87 | |
88 | 88 | @selenium |
89 | 89 | Scenario: view options to change my chat status through menu |
... | ... | @@ -91,13 +91,13 @@ Feature: chat |
91 | 91 | And I am logged in as "tame" |
92 | 92 | And I follow "Open chat" |
93 | 93 | When I select window "noosfero_chat" |
94 | - Then the "#chat-online" should not be visible | |
95 | - And the "#chat-busy" should not be visible | |
96 | - And the "#chat-disconnect" should not be visible | |
94 | + Then "Online" should not be visible within "#user-status" | |
95 | + And "Busy" should not be visible within "#user-status" | |
96 | + And "Sign out of chat" should not be visible within "#user-status" | |
97 | 97 | When I follow "Offline" |
98 | - Then the "#chat-connect" should be visible | |
99 | - And the "#chat-busy" should be visible | |
100 | - And the "#chat-disconnect" should be visible | |
98 | + Then "Online" should be visible within "#user-status" | |
99 | + And "Busy" should be visible within "#user-status" | |
100 | + And "Sign out of chat" should be visible within "#user-status" | |
101 | 101 | |
102 | 102 | @selenium |
103 | 103 | Scenario: link to open chatroom of a community |
... | ... | @@ -107,8 +107,8 @@ Feature: chat |
107 | 107 | And "Tame" is a member of "Autoramas" |
108 | 108 | And feature "xmpp_chat" is enabled on environment |
109 | 109 | And I am logged in as "tame" |
110 | - When I go to Autoramas's profile | |
111 | - Then I should see "Enter chat room" link | |
110 | + When I go to autoramas's profile | |
111 | + Then I should see "Enter chat room" | |
112 | 112 | |
113 | 113 | @selenium |
114 | 114 | Scenario: not see link to open chatroom of a community if not a member |
... | ... | @@ -117,8 +117,8 @@ Feature: chat |
117 | 117 | | autoramas | Autoramas | |
118 | 118 | And feature "xmpp_chat" is enabled on environment |
119 | 119 | And I am logged in as "tame" |
120 | - When I go to Autoramas's profile | |
121 | - Then I should not see "Enter chat room" link | |
120 | + When I go to autoramas's profile | |
121 | + Then I should not see "Enter chat room" within "a" | |
122 | 122 | |
123 | 123 | @selenium |
124 | 124 | Scenario: not see link to open chatroom of a community if xmpp_chat disabled |
... | ... | @@ -127,8 +127,8 @@ Feature: chat |
127 | 127 | | autoramas | Autoramas | |
128 | 128 | And "Tame" is a member of "Autoramas" |
129 | 129 | And I am logged in as "tame" |
130 | - When I go to Autoramas's profile | |
131 | - Then I should not see "Enter chat room" link | |
130 | + When I go to autoramas's profile | |
131 | + Then I should not see "Enter chat room" within "a" | |
132 | 132 | |
133 | 133 | @selenium |
134 | 134 | Scenario: open chatroom of a community in a new window |
... | ... | @@ -138,7 +138,7 @@ Feature: chat |
138 | 138 | | autoramas | Autoramas | |
139 | 139 | And "Tame" is a member of "Autoramas" |
140 | 140 | And I am logged in as "tame" |
141 | - When I go to Autoramas's profile | |
141 | + When I go to autoramas's profile | |
142 | 142 | And I follow "Enter chat room" |
143 | 143 | And I select window "noosfero_chat" |
144 | 144 | Then I should see "Chat - Colivre.net - Friends online (0)" | ... | ... |
features/clickable_images.feature
... | ... | @@ -22,7 +22,7 @@ Feature: clickable images |
22 | 22 | | owner | name | image | dimensions | |
23 | 23 | | booking | real | rails.png | 50x64 | |
24 | 24 | When I go to /booking/real |
25 | - Then I should not see "Zoom in" | |
25 | + Then "Zoom in" should not be visible within "a#zoomify-image" | |
26 | 26 | |
27 | 27 | @selenium |
28 | 28 | Scenario: not show link if image does not have dimensions set |
... | ... | @@ -30,9 +30,9 @@ Feature: clickable images |
30 | 30 | | owner | name | image | |
31 | 31 | | booking | not set | rails.png | |
32 | 32 | When I go to /booking/not-set |
33 | - Then I should not see "Zoom in" | |
33 | + Then "Zoom in" should not be visible within "a#zoomify-image" | |
34 | 34 | |
35 | - @selenium | |
35 | + @selenium-fixme | |
36 | 36 | Scenario: copy style from image |
37 | 37 | Given the following article with image |
38 | 38 | | owner | name | image | style | dimensions | |
... | ... | @@ -40,11 +40,11 @@ Feature: clickable images |
40 | 40 | When I go to /booking/with-style |
41 | 41 | Then "zoomable-image" should be right aligned |
42 | 42 | |
43 | - @selenium | |
43 | + @selenium-fixme | |
44 | 44 | Scenario: zoom image |
45 | 45 | Given the following article with image |
46 | 46 | | owner | name | image | dimensions | |
47 | 47 | | booking | zoom | rails.png | 25x32 | |
48 | 48 | When I go to /booking/zoom |
49 | - And I follow "Zoom in" | |
50 | - Then the "#fancybox-wrap" should be visible | |
49 | + And I follow "Zoom in" within "a#zoomify-image" | |
50 | + Then I should see "fancybox-wrap" | ... | ... |
features/comment.feature
... | ... | @@ -14,19 +14,23 @@ Feature: comment |
14 | 14 | | article | author | title | body | |
15 | 15 | | article with comment | booking | hi | how are you? | |
16 | 16 | | article with comment | booking | hello | i am fine | |
17 | + And feature "captcha_for_logged_users" is disabled on environment | |
18 | + And I am logged in as "booking" | |
17 | 19 | |
18 | 20 | Scenario: not post a comment without javascript |
19 | 21 | Given I am on /booking/article-to-comment |
20 | - And I fill in "Name" with "Joey Ramone" | |
21 | - And I fill in "e-mail" with "joey@ramones.com" | |
22 | + And I follow "Post a comment" | |
22 | 23 | And I fill in "Title" with "Hey ho, let's go!" |
23 | 24 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
24 | 25 | When I press "Post comment" |
25 | 26 | Then I should not see "Hey ho, let's go" |
26 | 27 | |
27 | - @selenium | |
28 | + # This test requires some way to overcome the captcha with unauthenticated | |
29 | + # user. | |
30 | + @selenium-fixme | |
28 | 31 | Scenario: post a comment while not authenticated |
29 | 32 | Given I am on /booking/article-to-comment |
33 | + And I follow "Post a comment" | |
30 | 34 | And I fill in "Name" with "Joey Ramone" |
31 | 35 | And I fill in "e-mail" with "joey@ramones.com" |
32 | 36 | And I fill in "Title" with "Hey ho, let's go!" |
... | ... | @@ -36,8 +40,8 @@ Feature: comment |
36 | 40 | |
37 | 41 | @selenium |
38 | 42 | Scenario: post comment while authenticated |
39 | - Given I am logged in as "booking" | |
40 | - And I am on /booking/article-to-comment | |
43 | + Given I am on /booking/article-to-comment | |
44 | + And I follow "Post a comment" | |
41 | 45 | And I fill in "Title" with "Hey ho, let's go!" |
42 | 46 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
43 | 47 | When I press "Post comment" |
... | ... | @@ -48,8 +52,8 @@ Feature: comment |
48 | 52 | Given the following files |
49 | 53 | | owner | file | mime | |
50 | 54 | | booking | rails.png | image/png | |
51 | - Given I am logged in as "booking" | |
52 | 55 | And I am on /booking/rails.png?view=true |
56 | + And I follow "Post a comment" | |
53 | 57 | And I fill in "Title" with "Hey ho, let's go!" |
54 | 58 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
55 | 59 | When I press "Post comment" |
... | ... | @@ -57,35 +61,34 @@ Feature: comment |
57 | 61 | |
58 | 62 | @selenium |
59 | 63 | Scenario: show error messages when make a blank comment |
60 | - Given I am logged in as "booking" | |
61 | - And I am on /booking/article-to-comment | |
64 | + Given I am on /booking/article-to-comment | |
65 | + And I follow "Post a comment" | |
62 | 66 | When I press "Post comment" |
63 | - Then I should see "Title can't be blank" | |
64 | - And I should see "Body can't be blank" | |
67 | + Then I should see "Body can't be blank" | |
65 | 68 | |
66 | - @selenium | |
69 | + @selenium-fixme | |
67 | 70 | Scenario: disable post comment button |
68 | 71 | Given I am on /booking/article-to-comment |
69 | - And I fill in "Name" with "Joey Ramone" | |
70 | - And I fill in "e-mail" with "joey@ramones.com" | |
72 | + And I follow "Post a comment" | |
71 | 73 | And I fill in "Title" with "Hey ho, let's go!" |
72 | 74 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
73 | 75 | When I press "Post comment" |
74 | - Then the "value.Post comment" button should not be enabled | |
75 | - And I should see "Hey ho, let's go" | |
76 | +# Implement these steps... | |
77 | +# Then "Post comment" button should not be enabled | |
78 | +# And I should see "Hey ho, let's go" | |
76 | 79 | |
77 | 80 | @selenium |
78 | 81 | Scenario: render comment form and go to bottom |
79 | 82 | Given I am on /booking/article-with-comment |
80 | - When I follow "Post a comment" within ".post-comment-button" | |
81 | - Then I should see "Enter your comment" within "div#page-comment-form div.post_comment_box.opened" | |
82 | - And I should be exactly on /booking/article-with-comment | |
83 | - And I should be moved to anchor "comment_form" | |
83 | + When I follow "Post a comment" | |
84 | + Then I should see "Enter your comment" | |
85 | + And I should be on /booking/article-with-comment | |
84 | 86 | |
85 | 87 | @selenium |
86 | 88 | Scenario: keep comments field filled while trying to do a comment |
87 | 89 | Given I am on /booking/article-with-comment |
88 | - And I fill in "Name" with "Joey Ramone" | |
90 | + And I follow "Post a comment" | |
91 | + And I fill in "Title" with "Joey Ramone" | |
89 | 92 | When I press "Post comment" |
90 | - Then the "Name" field should contain "Joey Ramone" | |
91 | - And I should see "errors prohibited" | |
93 | + Then the "Title" field should contain "Joey Ramone" | |
94 | + And I should see "Body can't be blank" | ... | ... |
features/comment_reply.feature
... | ... | @@ -25,7 +25,7 @@ Feature: comment |
25 | 25 | Then I should not see "Enter your comment" within "div.comment-balloon" |
26 | 26 | And I should see "Reply" within "div.comment-balloon" |
27 | 27 | |
28 | - @selenium | |
28 | + @selenium-fixme | |
29 | 29 | Scenario: show error messages when make a blank comment reply |
30 | 30 | Given I am logged in as "booking" |
31 | 31 | And I go to /booking/article-to-comment |
... | ... | @@ -51,9 +51,9 @@ Feature: comment |
51 | 51 | Given I am on /booking/article-to-comment |
52 | 52 | When I follow "Reply" within ".comment-balloon" |
53 | 53 | And I follow "Cancel" within ".comment-balloon" |
54 | - Then I should see "Enter your comment" within "div.comment_reply.closed" | |
54 | + Then I should not see "Enter your comment" within "div.comment_reply.closed" | |
55 | 55 | |
56 | - @selenium | |
56 | + @selenium-fixme | |
57 | 57 | Scenario: not render same reply form twice |
58 | 58 | Given I am on /booking/article-to-comment |
59 | 59 | When I follow "Reply" within ".comment-balloon" |
... | ... | @@ -62,7 +62,7 @@ Feature: comment |
62 | 62 | Then there should be 1 "comment_form" within "comment_reply" |
63 | 63 | And I should see "Enter your comment" within "div.comment_reply.opened" |
64 | 64 | |
65 | - @selenium | |
65 | + @selenium-fixme | |
66 | 66 | Scenario: reply a comment |
67 | 67 | Given I go to /booking/another-article |
68 | 68 | And I follow "Reply" within ".comment-balloon" |
... | ... | @@ -74,7 +74,7 @@ Feature: comment |
74 | 74 | Then I should see "Hey ho, let's go" within "ul.comment-replies" |
75 | 75 | And there should be 1 "comment-replies" within "article-comment" |
76 | 76 | |
77 | - @selenium | |
77 | + @selenium-fixme | |
78 | 78 | Scenario: redirect to right place after reply a picture comment |
79 | 79 | Given the following files |
80 | 80 | | owner | file | mime | | ... | ... |
features/contact.feature
... | ... | @@ -14,8 +14,8 @@ In order to ask questions and solve problems |
14 | 14 | |
15 | 15 | @selenium |
16 | 16 | Scenario: without states |
17 | - Given I am on Sample Community's homepage | |
18 | - When I follow "Send an e-mail" and wait | |
17 | + Given I am on sample-community's homepage | |
18 | + When I follow "Send an e-mail" | |
19 | 19 | Then I should not see "City and state" |
20 | 20 | |
21 | 21 | @selenium |
... | ... | @@ -23,7 +23,6 @@ In order to ask questions and solve problems |
23 | 23 | Given the following states |
24 | 24 | | name | |
25 | 25 | | Bahia | |
26 | - And I am on Sample Community's homepage | |
27 | - When I follow "Send an e-mail" and wait | |
26 | + And I am on sample-community's homepage | |
27 | + When I follow "Send an e-mail" | |
28 | 28 | Then I should see "City and state" |
29 | - | ... | ... |
features/create_community.feature
... | ... | @@ -11,7 +11,7 @@ Feature: create community |
11 | 11 | Scenario: a user creates a community |
12 | 12 | Given I am logged in as "joaosilva" |
13 | 13 | And feature "admin_must_approve_new_communities" is disabled on environment |
14 | - And I go to the Control panel | |
14 | + And I go to joaosilva's control panel | |
15 | 15 | And I follow "Manage my groups" |
16 | 16 | When I follow "Create a new community" |
17 | 17 | And I fill in "Name" with "Fancy community" |
... | ... | @@ -22,7 +22,7 @@ Feature: create community |
22 | 22 | Scenario: a user creates a community when environment moderates it |
23 | 23 | Given I am logged in as "joaosilva" |
24 | 24 | And feature "admin_must_approve_new_communities" is enabled on environment |
25 | - When I go to the Control panel | |
25 | + And I go to joaosilva's control panel | |
26 | 26 | And I follow "Manage my groups" |
27 | 27 | And I follow "Create a new community" |
28 | 28 | And I fill in "Name" with "Community for moderation" |
... | ... | @@ -32,7 +32,7 @@ Feature: create community |
32 | 32 | Scenario: a user tries to create a community without a name |
33 | 33 | Given I am logged in as "joaosilva" |
34 | 34 | And feature "admin_must_approve_new_communities" is disabled on environment |
35 | - And I go to the Control panel | |
35 | + And I go to joaosilva's control panel | |
36 | 36 | And I follow "Manage my groups" |
37 | 37 | When I follow "Create a new community" |
38 | 38 | And I press "Create" |
... | ... | @@ -42,20 +42,20 @@ Feature: create community |
42 | 42 | Given I am logged in as admin |
43 | 43 | And feature "admin_must_approve_new_communities" is enabled on environment |
44 | 44 | When I create community "Community for approval" |
45 | - And I go to the Control panel | |
45 | + And I go to admin_user's control panel | |
46 | 46 | Then I should see "admin_user wants to create community Community for approval" |
47 | 47 | |
48 | 48 | Scenario: environment admin accepts new community task |
49 | 49 | Given I am logged in as admin |
50 | 50 | And feature "admin_must_approve_new_communities" is enabled on environment |
51 | 51 | When I create community "Community for approval" |
52 | - And I go to the Control panel | |
52 | + And I go to admin_user's control panel | |
53 | 53 | And I follow "Process requests" |
54 | 54 | And I should see "admin_user wants to create community Community for approval" |
55 | 55 | And I choose "Accept" |
56 | 56 | When I press "Apply!" |
57 | 57 | Then I should not see "admin_user wants to create community Community for approval" |
58 | - When I go to the Control panel | |
58 | + And I go to admin_user's control panel | |
59 | 59 | And I follow "Manage my groups" |
60 | 60 | Then I should see "Community for approval" |
61 | 61 | |
... | ... | @@ -63,13 +63,13 @@ Feature: create community |
63 | 63 | Given I am logged in as admin |
64 | 64 | And feature "admin_must_approve_new_communities" is enabled on environment |
65 | 65 | When I create community "Community for approval" |
66 | - And I go to the Control panel | |
66 | + And I go to admin_user's control panel | |
67 | 67 | And I follow "Process requests" |
68 | 68 | And I should see "admin_user wants to create community Community for approval" |
69 | 69 | And I choose "Reject" |
70 | 70 | When I press "Apply!" |
71 | 71 | Then I should not see "admin_user wants to create community Community for approval" |
72 | - When I go to the Control panel | |
72 | + And I go to admin_user's control panel | |
73 | 73 | And I follow "Manage my groups" |
74 | 74 | Then I should not see "Community for approval" |
75 | 75 | |
... | ... | @@ -78,7 +78,7 @@ Feature: create community |
78 | 78 | And feature "admin_must_approve_new_communities" is enabled on environment |
79 | 79 | When I create community "Community for approval" |
80 | 80 | And I approve community "Community for approval" |
81 | - When I go to the Control panel | |
81 | + And I go to admin_user's control panel | |
82 | 82 | And I follow "Manage my groups" |
83 | 83 | Then I should see "Community for approval" |
84 | 84 | |
... | ... | @@ -87,6 +87,6 @@ Feature: create community |
87 | 87 | And feature "admin_must_approve_new_communities" is enabled on environment |
88 | 88 | When I create community "Community for approval" |
89 | 89 | And I reject community "Community for approval" |
90 | - When I go to the Control panel | |
90 | + And I go to admin_user's control panel | |
91 | 91 | And I follow "Manage my groups" |
92 | 92 | Then I should not see "Community for approval" | ... | ... |
features/delete_profile.feature
... | ... | @@ -13,9 +13,10 @@ Feature: delete profile |
13 | 13 | | sample-community | Sample Community | |
14 | 14 | And "Maria Silva" is a member of "Sample Community" |
15 | 15 | |
16 | + @selenium | |
16 | 17 | Scenario: deleting profile |
17 | 18 | Given I am logged in as "joaosilva" |
18 | - And I am on Joao Silva's control panel | |
19 | + And I am on joaosilva's control panel | |
19 | 20 | And I follow "Edit Profile" |
20 | 21 | And I follow "Delete profile" |
21 | 22 | Then I should see "Are you sure you want to delete this profile?" |
... | ... | @@ -31,24 +32,25 @@ Feature: delete profile |
31 | 32 | |
32 | 33 | Scenario: giving up of deleting profile |
33 | 34 | Given I am logged in as "joaosilva" |
34 | - And I am on Joao Silva's control panel | |
35 | + And I am on joaosilva's control panel | |
35 | 36 | And I follow "Edit Profile" |
36 | 37 | And I follow "Delete profile" |
37 | 38 | Then I should see "Are you sure you want to delete this profile?" |
38 | 39 | When I follow "No, I gave up" |
39 | - Then I should be on Joao Silva's profile | |
40 | + Then I should be on joaosilva's profile | |
40 | 41 | |
41 | 42 | Scenario: community admin can see link to delete profile |
42 | 43 | Given "Joao Silva" is admin of "Sample Community" |
43 | 44 | And I am logged in as "joaosilva" |
44 | - And I am on Sample Community's control panel | |
45 | + And I am on sample-community's control panel | |
45 | 46 | When I follow "Community Info and settings" |
46 | 47 | Then I should see "Delete profile" |
47 | 48 | |
49 | + @selenium | |
48 | 50 | Scenario: community admin deletes the community |
49 | 51 | Given "Joao Silva" is admin of "Sample Community" |
50 | 52 | And I am logged in as "joaosilva" |
51 | - And I am on Sample Community's control panel | |
53 | + And I am on sample-community's control panel | |
52 | 54 | And I follow "Community Info and settings" |
53 | 55 | And I follow "Delete profile" |
54 | 56 | Then I should see "Are you sure you want to delete this profile?" |
... | ... | @@ -69,17 +71,18 @@ Feature: delete profile |
69 | 71 | | sample-enterprise | Sample Enterprise | |
70 | 72 | And "Joao Silva" is admin of "Sample Enterprise" |
71 | 73 | And I am logged in as "joaosilva" |
72 | - And I am on Sample Enterprise's control panel | |
74 | + And I am on sample-enterprise's control panel | |
73 | 75 | When I follow "Enterprise Info and settings" |
74 | 76 | Then I should see "Delete profile" |
75 | 77 | |
78 | + @selenium | |
76 | 79 | Scenario: enterprise admin deletes the enterprise |
77 | 80 | Given the following enterprise |
78 | 81 | | identifier | name | |
79 | 82 | | sample-enterprise | Sample Enterprise | |
80 | 83 | And "Joao Silva" is admin of "Sample Enterprise" |
81 | 84 | And I am logged in as "joaosilva" |
82 | - And I am on Sample Enterprise's control panel | |
85 | + And I am on sample-enterprise's control panel | |
83 | 86 | When I follow "Enterprise Info and settings" |
84 | 87 | And I follow "Delete profile" |
85 | 88 | Then I should see "Are you sure you want to delete this profile?" |
... | ... | @@ -98,9 +101,10 @@ Feature: delete profile |
98 | 101 | And I go to /myprofile/sample-enterprise/profile_editor/destroy_profile |
99 | 102 | Then I should see "Access denied" |
100 | 103 | |
104 | + @selenium | |
101 | 105 | Scenario: environment admin deletes profile |
102 | 106 | Given I am logged in as admin |
103 | - And I am on Joao Silva's control panel | |
107 | + And I am on joaosilva's control panel | |
104 | 108 | And I follow "Edit Profile" |
105 | 109 | And I follow "Delete profile" |
106 | 110 | Then I should see "Are you sure you want to delete this profile?" | ... | ... |
features/edit_article.feature
... | ... | @@ -13,17 +13,17 @@ Feature: edit article |
13 | 13 | And I am logged in as "joaosilva" |
14 | 14 | |
15 | 15 | Scenario: create a folder |
16 | - Given I am on Joao Silva's control panel | |
16 | + Given I am on joaosilva's control panel | |
17 | 17 | And I follow "Manage Content" |
18 | 18 | And I follow "New content" |
19 | 19 | When I follow "Folder" |
20 | 20 | And I fill in "Title" with "My Folder" |
21 | 21 | And I press "Save" |
22 | - And I go to Joao Silva's control panel | |
22 | + And I go to joaosilva's control panel | |
23 | 23 | Then I should see "My Folder" |
24 | 24 | |
25 | 25 | Scenario: redirect to the created folder |
26 | - Given I am on Joao Silva's control panel | |
26 | + Given I am on joaosilva's control panel | |
27 | 27 | And I follow "Manage Content" |
28 | 28 | And I follow "New content" |
29 | 29 | When I follow "Folder" |
... | ... | @@ -33,29 +33,29 @@ Feature: edit article |
33 | 33 | And I should be on /joaosilva/my-folder |
34 | 34 | |
35 | 35 | Scenario: cancel button back to cms |
36 | - Given I go to the Control panel | |
36 | + Given I am on joaosilva's control panel | |
37 | 37 | And I follow "Manage Content" |
38 | 38 | And I follow "New content" |
39 | 39 | And I follow "Folder" |
40 | 40 | When I follow "Cancel" within ".main-block" |
41 | - Then I should be on Joao Silva's cms | |
41 | + Then I should be on joaosilva's cms | |
42 | 42 | |
43 | 43 | Scenario: display tag list field when creating event |
44 | - Given I go to the Control panel | |
44 | + Given I am on joaosilva's control panel | |
45 | 45 | And I follow "Manage Content" |
46 | 46 | And I follow "New content" |
47 | 47 | When I follow "Event" |
48 | 48 | Then I should see "Tag list" |
49 | 49 | |
50 | 50 | Scenario: display tag list field when creating folder |
51 | - Given I go to the Control panel | |
51 | + Given I am on joaosilva's control panel | |
52 | 52 | And I follow "Manage Content" |
53 | 53 | And I follow "New content" |
54 | 54 | When I follow "Folder" |
55 | 55 | Then I should see "Tag list" |
56 | 56 | |
57 | 57 | Scenario: create new article with tags |
58 | - Given I go to the Control panel | |
58 | + Given I am on joaosilva's control panel | |
59 | 59 | And I follow "Manage Content" |
60 | 60 | And I follow "New content" |
61 | 61 | When I follow "Text article with Textile markup language" |
... | ... | @@ -68,7 +68,7 @@ Feature: edit article |
68 | 68 | And I should see "bug" within "#article-tags a:last" |
69 | 69 | |
70 | 70 | Scenario: redirect to the created article |
71 | - Given I am on Joao Silva's control panel | |
71 | + Given I am on joaosilva's control panel | |
72 | 72 | And I follow "Manage Content" |
73 | 73 | When I follow "New content" |
74 | 74 | When I follow "Text article with visual editor" |
... | ... | @@ -79,62 +79,62 @@ Feature: edit article |
79 | 79 | |
80 | 80 | @selenium |
81 | 81 | Scenario: edit an article |
82 | - Given I am on Joao Silva's sitemap | |
83 | - When I follow "Save the whales" and wait | |
84 | - And I follow "Edit" and wait | |
82 | + Given I am on joaosilva's sitemap | |
83 | + When I follow "Save the whales" | |
84 | + And I follow "Edit" | |
85 | 85 | And I fill in "Title" with "My Article edited" |
86 | - And I press "Save" and wait | |
86 | + And I press "Save" | |
87 | 87 | Then I should be on /joaosilva/my-article-edited |
88 | 88 | |
89 | 89 | @selenium |
90 | 90 | Scenario: cancel button back to article when edit |
91 | - Given I am on Joao Silva's sitemap | |
92 | - When I follow "Save the whales" and wait | |
93 | - And I follow "Edit" and wait | |
94 | - And I follow "Cancel" and wait | |
91 | + Given I am on joaosilva's sitemap | |
92 | + When I follow "Save the whales" | |
93 | + And I follow "Edit" within "#article-actions" | |
94 | + And I follow "Cancel" | |
95 | 95 | Then I should be on /joaosilva/save-the-whales |
96 | 96 | |
97 | 97 | @selenium |
98 | 98 | Scenario: create an article inside a folder |
99 | - Given I am on Joao Silva's control panel | |
99 | + Given I am on joaosilva's control panel | |
100 | 100 | When I follow "Manage Content" |
101 | 101 | And I follow "New content" |
102 | - And I follow "Folder" and wait | |
102 | + And I follow "Folder" | |
103 | 103 | And I fill in "Title" with "My Folder" |
104 | - And I press "Save" and wait | |
104 | + And I press "Save" | |
105 | 105 | Then I should be on /joaosilva/my-folder |
106 | 106 | When I follow "New article" |
107 | - And I follow "Text article with visual editor" and wait | |
107 | + And I follow "Text article with visual editor" | |
108 | 108 | And I fill in "Title" with "My Article" |
109 | - And I press "Save" and wait | |
109 | + And I press "Save" | |
110 | 110 | Then I should see "My Article" |
111 | 111 | And I should be on /joaosilva/my-folder/my-article |
112 | 112 | |
113 | 113 | @selenium |
114 | 114 | Scenario: cancel button back to folder after giving up creating |
115 | - Given I am on Joao Silva's control panel | |
115 | + Given I am on joaosilva's control panel | |
116 | 116 | When I follow "Manage Content" |
117 | 117 | And I follow "New content" |
118 | - And I follow "Folder" and wait | |
118 | + And I follow "Folder" | |
119 | 119 | And I fill in "Title" with "My Folder" |
120 | - And I press "Save" and wait | |
120 | + And I press "Save" | |
121 | 121 | Then I should be on /joaosilva/my-folder |
122 | 122 | When I follow "New article" |
123 | - And I follow "Text article with visual editor" and wait | |
124 | - And I follow "Cancel" within ".no-boxes" and wait | |
123 | + And I follow "Text article with visual editor" | |
124 | + And I follow "Cancel" within ".no-boxes" | |
125 | 125 | Then I should be on /joaosilva/my-folder |
126 | 126 | |
127 | 127 | @selenium |
128 | 128 | Scenario: save and continue |
129 | 129 | Given I am on /joaosilva/save-the-whales |
130 | - And I follow "Edit" and wait | |
130 | + And I follow "Edit" | |
131 | 131 | When I fill in "Text" with "new text" |
132 | 132 | And I press "Save and continue" |
133 | 133 | Then the "Text" field should contain "new text" |
134 | 134 | And I should be on "Save the whales" edit page |
135 | 135 | |
136 | 136 | Scenario: save and continue when creating a new article |
137 | - Given I am on Joao Silva's control panel | |
137 | + Given I am on joaosilva's control panel | |
138 | 138 | When I follow "Manage Content" |
139 | 139 | And I follow "New content" |
140 | 140 | And I follow "Text article with visual editor" |
... | ... | @@ -147,16 +147,16 @@ Feature: edit article |
147 | 147 | |
148 | 148 | @selenium |
149 | 149 | Scenario: add a translation to an article |
150 | - Given I am on Joao Silva's sitemap | |
150 | + Given I am on joaosilva's sitemap | |
151 | 151 | And I follow "Save the whales" |
152 | 152 | Then I should not see "Add translation" |
153 | - And I follow "Edit" and wait | |
153 | + And I follow "Edit" | |
154 | 154 | And I select "English" from "Language" |
155 | - Then I press "Save" and wait | |
156 | - And I follow "Add translation" and wait | |
155 | + Then I press "Save" | |
156 | + And I follow "Add translation" | |
157 | 157 | And I fill in "Title" with "Mi neuvo artículo" |
158 | 158 | And I select "Español" from "Language" |
159 | - When I press "Save" and wait | |
159 | + When I press "Save" | |
160 | 160 | Then I should be on /joaosilva/mi-neuvo-articulo |
161 | 161 | And I should see "Translations" |
162 | 162 | |
... | ... | @@ -165,13 +165,13 @@ Feature: edit article |
165 | 165 | Given the following articles |
166 | 166 | | owner | name | language | |
167 | 167 | | joaosilva | Article in English | en | |
168 | - And I am on Joao Silva's sitemap | |
169 | - When I follow "Article in English" and wait | |
170 | - And I follow "Add translation" and wait | |
168 | + And I am on joaosilva's sitemap | |
169 | + When I follow "Article in English" | |
170 | + And I follow "Add translation" | |
171 | 171 | And I fill in "Title" with "Article in Portuguese" |
172 | - And I press "Save" and wait | |
172 | + And I press "Save" | |
173 | 173 | Then I should see "Language must be choosen" |
174 | 174 | When I select "Português" from "Language" |
175 | - And I press "Save" and wait | |
175 | + And I press "Save" | |
176 | 176 | Then I should not see "Language must be choosen" |
177 | 177 | And I should be on /joaosilva/article-in-portuguese | ... | ... |
features/edit_block_of_links.feature
... | ... | @@ -12,7 +12,7 @@ Feature: edit_block_of_links |
12 | 12 | | eddievedder | LinkListBlock | |
13 | 13 | And I am logged in as "eddievedder" |
14 | 14 | |
15 | - @selenium | |
15 | + @selenium-fixme | |
16 | 16 | Scenario: show the icon selector |
17 | 17 | Given I follow "Edit sideboxes" |
18 | 18 | And I follow "Edit" within ".link-list-block" | ... | ... |
features/edit_environment_templates.feature
... | ... | @@ -4,50 +4,46 @@ Feature: edit environment templates |
4 | 4 | |
5 | 5 | Background: |
6 | 6 | Given that the default environment have all profile templates |
7 | + And I am logged in as admin | |
8 | + And I am on the environment control panel | |
7 | 9 | |
10 | + @selenium | |
8 | 11 | Scenario: See links to edit all templates |
9 | - Given I am logged in as admin | |
10 | - When I follow "Administration" | |
11 | - And I follow "Profile templates" | |
12 | - Then I should see "Person template" link | |
13 | - And I should see "Community template" link | |
14 | - And I should see "Enterprise template" link | |
15 | - And I should see "Inactive Enterprise template" link | |
12 | + Given I follow "Profile templates" | |
13 | + Then I should see "Person template" | |
14 | + And I should see "Community template" | |
15 | + And I should see "Enterprise template" | |
16 | + And I should see "Inactive Enterprise template" | |
16 | 17 | |
18 | + @selenium | |
17 | 19 | Scenario: Go to control panel of person template |
18 | - Given I am logged in as admin | |
19 | - When I follow "Administration" | |
20 | - And I follow "Profile templates" | |
20 | + Given I follow "Profile templates" | |
21 | 21 | And I follow "Person template" |
22 | - Then I should be on Person template's control panel | |
22 | + Then I should be on colivre.net_person_template's control panel | |
23 | 23 | |
24 | + @selenium | |
24 | 25 | Scenario: Go to control panel of enterprise template |
25 | - Given I am logged in as admin | |
26 | - When I follow "Administration" | |
27 | - And I follow "Profile templates" | |
26 | + Given I follow "Profile templates" | |
28 | 27 | And I follow "Enterprise template" |
29 | - Then I should be on Enterprise template's control panel | |
28 | + Then I should be on colivre.net_enterprise_template's control panel | |
30 | 29 | |
30 | + @selenium | |
31 | 31 | Scenario: Go to control panel of inactive enterprise template |
32 | - Given I am logged in as admin | |
33 | - When I follow "Administration" | |
34 | - And I follow "Profile templates" | |
35 | - And I follow "Inactive enterprise template" | |
36 | - Then I should be on Inactive Enterprise template's control panel | |
32 | + Given I follow "Profile templates" | |
33 | + And I follow "Inactive Enterprise template" | |
34 | + Then I should be on colivre.net_inactive_enterprise_template's control panel | |
37 | 35 | |
36 | + @selenium | |
38 | 37 | Scenario: Go to control panel of community template |
39 | - Given I am logged in as admin | |
40 | - When I follow "Administration" | |
41 | - And I follow "Profile templates" | |
42 | - And I follow "Community template" | |
43 | - Then I should be on Community template's control panel | |
38 | + Given I follow "Profile templates" | |
39 | + When I follow "Community template" | |
40 | + Then I should be on colivre.net_community_template's control panel | |
44 | 41 | |
42 | + @selenium | |
45 | 43 | Scenario: Not see link to edit an unexistent template |
46 | - Given that the default environment have no Inactive Enterprise template | |
47 | - And I am logged in as admin | |
48 | - When I follow "Administration" | |
49 | - And I follow "Profile templates" | |
50 | - Then I should see "Person template" link | |
51 | - And I should see "Community template" link | |
52 | - And I should see "Enterprise template" link | |
53 | - And I should not see "Inactive enterprise template" link | |
44 | + Given I follow "Profile templates" | |
45 | + And that the default environment have no Inactive Enterprise template | |
46 | + Then I should see "Person template" | |
47 | + And I should see "Community template" | |
48 | + And I should see "Enterprise template" | |
49 | + And I should not see "Inactive enterprise template" | ... | ... |
features/edit_language_block.feature
... | ... | @@ -15,25 +15,25 @@ Feature: edit language of block |
15 | 15 | Scenario: display in all languages |
16 | 16 | Given I go to edit ArticleBlock of joaosilva |
17 | 17 | And I fill in "Custom title for this block" with "Block displayed" |
18 | - And I select "all languages" | |
18 | + And I select "all languages" from "Show for" | |
19 | 19 | And I press "Save" |
20 | - When I go to Jose Silva's homepage | |
20 | + When I go to joaosilva's homepage | |
21 | 21 | Then I should see "Block displayed" |
22 | 22 | |
23 | 23 | Scenario: display in the selected language |
24 | 24 | Given I go to edit LinkListBlock of joaosilva |
25 | 25 | And I fill in "Custom title for this block" with "Block displayed" |
26 | - And I select "English" | |
26 | + And I select "English" from "Show for" | |
27 | 27 | And I press "Save" |
28 | 28 | And my browser prefers English |
29 | - When I go to Jose Silva's homepage | |
29 | + When I go to joaosilva's homepage | |
30 | 30 | Then I should see "Block displayed" |
31 | 31 | |
32 | 32 | Scenario: not display in a not selected language |
33 | 33 | Given I go to edit LinkListBlock of joaosilva |
34 | 34 | And I fill in "Custom title for this block" with "Block not displayed" |
35 | - And I select "English" | |
35 | + And I select "English" from "Show for" | |
36 | 36 | And I press "Save" |
37 | 37 | And my browser prefers Portuguese |
38 | - When I go to Jose Silva's homepage | |
38 | + When I go to joaosilva's homepage | |
39 | 39 | Then I should not see "Block displayed" | ... | ... |
features/edit_profile.feature
... | ... | @@ -12,8 +12,8 @@ Feature: edit profile |
12 | 12 | | birth_date | |
13 | 13 | When I go to joao's control panel |
14 | 14 | And I follow "Edit Profile" |
15 | - And I select "November" | |
16 | - And I select "15" | |
15 | + And I select "November" from "profile_data_birth_date_2i" | |
16 | + And I select "15" from "profile_data_birth_date_3i" | |
17 | 17 | And I press "Save" |
18 | 18 | Then I should see "Birth date is invalid" |
19 | 19 | And I should not see "Birth date can't be blank" |
... | ... | @@ -24,8 +24,8 @@ Feature: edit profile |
24 | 24 | | birth_date | |
25 | 25 | When I go to joao's control panel |
26 | 26 | And I follow "Edit Profile" |
27 | - And I select "November" | |
28 | - And I select "15" | |
27 | + And I select "November" from "profile_data_birth_date_2i" | |
28 | + And I select "15" from "profile_data_birth_date_3i" | |
29 | 29 | And I press "Save" |
30 | 30 | Then I should see "Birth date is invalid" |
31 | 31 | And I should not see "Birth date can't be blank" |
... | ... | @@ -36,9 +36,9 @@ Feature: edit profile |
36 | 36 | | birth_date | |
37 | 37 | When I go to joao's control panel |
38 | 38 | And I follow "Edit Profile" |
39 | - And I select "November" | |
40 | - And I select "15" | |
41 | - And I select "1980" | |
39 | + And I select "November" from "profile_data_birth_date_2i" | |
40 | + And I select "15" from "profile_data_birth_date_3i" | |
41 | + And I select "1980" from "profile_data_birth_date_1i" | |
42 | 42 | And I press "Save" |
43 | 43 | Then I should not see "Birth date is invalid" |
44 | 44 | And I should not see "Birth date is mandatory" |
... | ... | @@ -49,9 +49,9 @@ Feature: edit profile |
49 | 49 | | birth_date | |
50 | 50 | When I go to joao's control panel |
51 | 51 | And I follow "Edit Profile" |
52 | - And I select "November" | |
53 | - And I select "15" | |
54 | - And I select "1980" | |
52 | + And I select "November" from "profile_data_birth_date_2i" | |
53 | + And I select "15" from "profile_data_birth_date_3i" | |
54 | + And I select "1980" from "profile_data_birth_date_1i" | |
55 | 55 | And I press "Save" |
56 | 56 | Then I should not see "Birth date is invalid" |
57 | 57 | And I should not see "Birth date is mandatory" |
... | ... | @@ -62,11 +62,11 @@ Feature: edit profile |
62 | 62 | | identifier | name | owner | |
63 | 63 | | o-rappa | O Rappa | joao | |
64 | 64 | And feature "enable_organization_url_change" is enabled on environment |
65 | - When I go to O Rappa's control panel | |
66 | - And I follow "Community Info and settings" and wait | |
67 | - Then the "#identifier-change-confirmation" should not be visible | |
65 | + When I go to o-rappa's control panel | |
66 | + And I follow "Community Info and settings" | |
67 | + And I should not see "identifier-change-confirmation" | |
68 | 68 | When I fill in "Address" with "banda-o-rappa" |
69 | - Then the "#identifier-change-confirmation" should be visible | |
69 | + And I should see "identifier-change-confirmation" | |
70 | 70 | |
71 | 71 | @selenium |
72 | 72 | Scenario: Confirm url change |
... | ... | @@ -74,12 +74,12 @@ Feature: edit profile |
74 | 74 | | identifier | name | owner | |
75 | 75 | | o-rappa | O Rappa | joao | |
76 | 76 | And feature "enable_organization_url_change" is enabled on environment |
77 | - When I go to O Rappa's control panel | |
78 | - And I follow "Community Info and settings" and wait | |
77 | + When I go to o-rappa's control panel | |
78 | + And I follow "Community Info and settings" | |
79 | 79 | When I fill in "Address" with "banda-o-rappa" |
80 | - Then the "#identifier-change-confirmation" should be visible | |
80 | + Then I should see "identifier-change-confirmation" | |
81 | 81 | When I follow "Yes" |
82 | - Then the "#identifier-change-confirmation" should not be visible | |
82 | + Then "identifier-change-confirmation" should not be visible within "profile-identifier-formitem" | |
83 | 83 | |
84 | 84 | @selenium |
85 | 85 | Scenario: Cancel url change |
... | ... | @@ -87,9 +87,9 @@ Feature: edit profile |
87 | 87 | | identifier | name | owner | |
88 | 88 | | o-rappa | O Rappa | joao | |
89 | 89 | And feature "enable_organization_url_change" is enabled on environment |
90 | - When I go to O Rappa's control panel | |
91 | - And I follow "Community Info and settings" and wait | |
90 | + When I go to o-rappa's control panel | |
91 | + And I follow "Community Info and settings" | |
92 | 92 | When I fill in "Address" with "banda-o-rappa" |
93 | - Then the "#identifier-change-confirmation" should be visible | |
93 | + Then I should see "identifier-change-confirmation" | |
94 | 94 | When I follow "No" |
95 | - Then the "#identifier-change-confirmation" should not be visible | |
95 | + Then "identifier-change-confirmation" should not be visible within "profile-identifier-formitem" | ... | ... |
features/environment_name.feature
... | ... | @@ -3,6 +3,7 @@ Feature: setting environment name |
3 | 3 | I want to change the name of the environment |
4 | 4 | So that it appears in the window's title bar |
5 | 5 | |
6 | + @selenium-fixme | |
6 | 7 | Scenario: setting environment name through administration panel |
7 | 8 | Given I am logged in as admin |
8 | 9 | When I follow "Administration" | ... | ... |
features/events.feature
... | ... | @@ -184,7 +184,7 @@ Feature: events |
184 | 184 | And "josesilva" is a member of "Sample Community" |
185 | 185 | And I go to josesilva's control panel |
186 | 186 | And I follow "Manage Content" |
187 | - And I follow "Another Conference" and wait | |
187 | + And I follow "Another Conference" | |
188 | 188 | And I follow "Spread" |
189 | 189 | And I check "Sample Community" |
190 | 190 | And I press "Spread this" |
... | ... | @@ -213,15 +213,15 @@ Feature: events |
213 | 213 | And I am on josesilva's Event creation |
214 | 214 | Then I should see "Lead" |
215 | 215 | |
216 | - @selenium | |
216 | + @selenium-fixme | |
217 | 217 | Scenario: events lead should be shown on blogs with short format |
218 | 218 | Given I am logged in as "josesilva" |
219 | 219 | And I am on josesilva's control panel |
220 | - And I follow "Configure blog" and wait | |
220 | + And I follow "Configure blog" | |
221 | 221 | And I select "First paragraph" from "How to display posts:" |
222 | 222 | And I press "Save" |
223 | 223 | And I follow "New post" |
224 | - And I follow "A calendar event" and wait | |
224 | + And I follow "A calendar event" | |
225 | 225 | And I fill in "Title" with "Leaded event" |
226 | 226 | And I type "This is the abstract." in TinyMCE field "article_abstract" |
227 | 227 | And I type "This is the real text." in TinyMCE field "article_body" | ... | ... |
features/export_users.feature
... | ... | @@ -9,15 +9,13 @@ Feature: export users |
9 | 9 | |
10 | 10 | Scenario: Export users as XML |
11 | 11 | Given I am logged in as admin |
12 | - When I follow "Administration" | |
13 | - And I follow "Users" | |
12 | + When I go to /admin/users | |
14 | 13 | And I follow "[XML]" |
15 | 14 | Then I should see "ultraje" |
16 | 15 | |
17 | 16 | Scenario: Export users as CSV |
18 | 17 | Given I am logged in as admin |
19 | - When I follow "Administration" | |
20 | - And I follow "Users" | |
18 | + When I go to /admin/users | |
21 | 19 | And I follow "[CSV]" |
22 | 20 | Then I should see "name;email" |
23 | 21 | And I should see "ultraje" | ... | ... |
features/featured_products_block.feature
... | ... | @@ -23,7 +23,7 @@ Feature: featured_products_block |
23 | 23 | | redemoinho | automobile | Moto | Very long description of and auto-mobile moto to be truncated | true | |
24 | 24 | And I am logged in as "eddievedder" |
25 | 25 | |
26 | - @selenium | |
26 | + @selenium-fixme | |
27 | 27 | Scenario: select a product to be featured |
28 | 28 | And I follow "Manage my groups" |
29 | 29 | And I follow "Control panel of this group" |
... | ... | @@ -35,7 +35,7 @@ Feature: featured_products_block |
35 | 35 | And I should not see "float_to_currency" |
36 | 36 | And I should not see "product_path" |
37 | 37 | |
38 | - @selenium | |
38 | + @selenium-fixme | |
39 | 39 | Scenario: display block with long description |
40 | 40 | Given I follow "Manage my groups" |
41 | 41 | And I follow "Control panel of this group" | ... | ... |
features/forum.feature
... | ... | @@ -10,18 +10,18 @@ Feature: forum |
10 | 10 | And "joaosilva" has no articles |
11 | 11 | And I am logged in as "joaosilva" |
12 | 12 | |
13 | - @selenium | |
13 | + @selenium @ignore-hidden-elements | |
14 | 14 | Scenario: create a forum |
15 | - Given I am on Joao Silva's control panel | |
15 | + Given I am on joaosilva's control panel | |
16 | 16 | And I follow "Manage Content" |
17 | 17 | And I follow "New content" |
18 | - When I follow "Forum" and wait | |
18 | + When I follow "Forum" | |
19 | 19 | And I fill in "Title" with "My Forum" |
20 | - And I press "Save" and wait | |
20 | + And I press "Save" | |
21 | 21 | Then I should see "Configure forum" |
22 | 22 | |
23 | 23 | Scenario: redirect to forum after create forum from cms |
24 | - Given I go to the Control panel | |
24 | + Given I go to joaosilva's control panel | |
25 | 25 | And I follow "Manage Content" |
26 | 26 | And I follow "New content" |
27 | 27 | When I follow "Forum" |
... | ... | @@ -30,13 +30,13 @@ Feature: forum |
30 | 30 | Then I should be on /joaosilva/forum-from-cms |
31 | 31 | |
32 | 32 | Scenario: create multiple forums |
33 | - Given I go to the Control panel | |
33 | + Given I go to joaosilva's control panel | |
34 | 34 | And I follow "Manage Content" |
35 | 35 | And I follow "New content" |
36 | 36 | And I follow "Forum" |
37 | 37 | And I fill in "Title" with "Forum One" |
38 | 38 | And I press "Save" |
39 | - Then I go to the Control panel | |
39 | + Then I go to joaosilva's control panel | |
40 | 40 | And I follow "Manage Content" |
41 | 41 | And I follow "New content" |
42 | 42 | And I follow "Forum" |
... | ... | @@ -46,7 +46,7 @@ Feature: forum |
46 | 46 | And I should be on /joaosilva/forum-two |
47 | 47 | |
48 | 48 | Scenario: cancel button back to cms |
49 | - Given I go to the Control panel | |
49 | + Given I go to joaosilva's control panel | |
50 | 50 | And I follow "Manage Content" |
51 | 51 | And I follow "New content" |
52 | 52 | And I follow "Forum" |
... | ... | @@ -54,7 +54,7 @@ Feature: forum |
54 | 54 | Then I should be on /myprofile/joaosilva/cms |
55 | 55 | |
56 | 56 | Scenario: cancel button back to myprofile |
57 | - Given I go to the Control panel | |
57 | + Given I go to joaosilva's control panel | |
58 | 58 | And I follow "Manage Content" |
59 | 59 | And I follow "New content" |
60 | 60 | And I follow "Forum" |
... | ... | @@ -66,8 +66,8 @@ Feature: forum |
66 | 66 | Given the following forums |
67 | 67 | | owner | name | |
68 | 68 | | joaosilva | Forum One | |
69 | - And I visit "/joaosilva/forum-one" and wait | |
70 | - When I follow "Configure forum" and wait | |
69 | + And I go to /joaosilva/forum-one | |
70 | + When I follow "Configure forum" | |
71 | 71 | Then I should be on edit "Forum One" by joaosilva |
72 | 72 | |
73 | 73 | Scenario: last topic update by unautenticated user should not link |
... | ... | @@ -94,4 +94,4 @@ Feature: forum |
94 | 94 | | article | author | title | body | |
95 | 95 | | Post one | joaosilva | Hi all | Hi all | |
96 | 96 | When I go to /joaosilva/forum |
97 | - Then I should see "Joao" linking to "http:///joaosilva" | |
97 | + Then I should see "Joao" linking to "http://localhost/joaosilva" | ... | ... |
features/gallery_navigation.feature
... | ... | @@ -23,7 +23,7 @@ Feature: gallery_navigation |
23 | 23 | @selenium |
24 | 24 | Scenario: view next image when follow next link |
25 | 25 | Given I am on /marciopunk/my-gallery/other-pic.jpg?view=true |
26 | - When I follow "Next »" and wait | |
26 | + When I follow "Next »" | |
27 | 27 | Then I should see "rails.png" within ".title" |
28 | 28 | |
29 | 29 | Scenario: not link to next when in last image |
... | ... | @@ -38,7 +38,7 @@ Feature: gallery_navigation |
38 | 38 | @selenium |
39 | 39 | Scenario: view previous image when follow previous link |
40 | 40 | Given I am on /marciopunk/my-gallery/rails.png?view=true |
41 | - When I follow "« Previous" and wait | |
41 | + When I follow "« Previous" | |
42 | 42 | Then I should see "other-pic.jpg" within ".title" |
43 | 43 | |
44 | 44 | Scenario: not link to previous when in first image |
... | ... | @@ -68,11 +68,19 @@ Feature: gallery_navigation |
68 | 68 | When I follow "Go back to my-gallery" |
69 | 69 | Then I should be on /marciopunk/my-gallery |
70 | 70 | |
71 | + # Looking for page title is problematic on selenium since it considers the | |
72 | + # title to be invibible. Checkout some information about this: | |
73 | + # * https://github.com/jnicklas/capybara/issues/863 | |
74 | + # * https://github.com/jnicklas/capybara/pull/953 | |
71 | 75 | @selenium |
72 | 76 | Scenario: image title in window title |
73 | 77 | Given I am logged in as "marciopunk" |
74 | - When I visit "/marciopunk/other-gallery/rails.png?view=true" and wait | |
75 | - And I follow "Edit" and wait | |
78 | + When I go to /marciopunk/other-gallery/rails.png?view=true | |
79 | + Then I should see "rails.png" within any "h1" | |
80 | +# And the page title should be "rails.png" | |
81 | + And I follow "Edit" | |
76 | 82 | And I fill in "Title" with "Rails is cool" |
77 | - And I press "Save" and wait | |
78 | - Then The page title should contain "Rails is cool" | |
83 | + And I press "Save" | |
84 | + When I go to /marciopunk/other-gallery/rails.png?view=true | |
85 | + Then I should see "Rails is cool" within any "h1" | |
86 | + #Then the page title should be "Rails is cool" | ... | ... |
features/http_caching.feature
... | ... | @@ -35,13 +35,13 @@ Feature: HTTP caching |
35 | 35 | Then the response should be valid for 90 minutes |
36 | 36 | |
37 | 37 | Scenario: profile pages, default configuaration |
38 | - When I go to João Silva's homepage | |
38 | + When I go to joao's homepage | |
39 | 39 | Then the response should be valid for 15 minutes |
40 | 40 | |
41 | 41 | Scenario: profile pages, custom configuration |
42 | 42 | Given the following environment configuration |
43 | 43 | | profile_cache_in_minutes | 90 | |
44 | - When I go to João Silva's homepage | |
44 | + When I go to joao's homepage | |
45 | 45 | Then the response should be valid for 90 minutes |
46 | 46 | |
47 | 47 | Scenario: account controller should not be cached at all |
... | ... | @@ -50,7 +50,7 @@ Feature: HTTP caching |
50 | 50 | |
51 | 51 | Scenario: profile administration |
52 | 52 | Given I am logged in as "joao" |
53 | - When I go to João Silva's control panel | |
53 | + When I go to joao's control panel | |
54 | 54 | Then there must be no cache at all |
55 | 55 | |
56 | 56 | Scenario: environment administration | ... | ... |
features/internationalization.feature
features/invitation.feature
... | ... | @@ -32,11 +32,13 @@ Feature: invitation |
32 | 32 | When I am on /profile/josesilva/invite/friends |
33 | 33 | Then I should see "Invite your friends" |
34 | 34 | |
35 | + @selenium | |
35 | 36 | Scenario: back to friends after invite friends |
36 | 37 | Given I am on /myprofile/josesilva/friends |
37 | 38 | And I follow "Invite people from my e-mail contacts" |
38 | 39 | And I press "Next" |
39 | 40 | And I fill in "manual_import_addresses" with "misfits@devil.doll" |
41 | + And I follow "Personalize invitation mail" | |
40 | 42 | And I fill in "mail_template" with "Follow this link <url>" |
41 | 43 | When I press "Invite my friends!" |
42 | 44 | Then I should be on /profile/josesilva/friends |
... | ... | @@ -46,8 +48,7 @@ Feature: invitation |
46 | 48 | Then I should see "Invite your friends to join 26 Bsslines" link |
47 | 49 | |
48 | 50 | Scenario: not see link to invite members to community if has no rights |
49 | - Given I am not logged in | |
50 | - And I am logged in as "josesantos" | |
51 | + Given I am logged in as "josesantos" | |
51 | 52 | When I am on /profile/26-bsslines/members |
52 | 53 | Then I should not see "Invite your friends to join 26 Bsslines" link |
53 | 54 | |
... | ... | @@ -65,8 +66,7 @@ Feature: invitation |
65 | 66 | Then I should not see "Invite your friends to join Beatles For Sale" link |
66 | 67 | |
67 | 68 | Scenario: deny access if user has no right to invite members |
68 | - Given I am not logged in | |
69 | - And I am logged in as "josesantos" | |
69 | + Given I am logged in as "josesantos" | |
70 | 70 | When I am on /profile/26-bsslines/invite/friends |
71 | 71 | Then I should see "Access denied" |
72 | 72 | |
... | ... | @@ -74,93 +74,107 @@ Feature: invitation |
74 | 74 | Given I am on Beatles For Sale's members management |
75 | 75 | Then I should not see "Invite your friends to join Beatles For Sale" link |
76 | 76 | |
77 | + @selenium | |
77 | 78 | Scenario: back to members after invite friends to join a community |
78 | 79 | Given I am on 26 Bsslines's members management |
79 | 80 | And I follow "Invite your friends to join 26 Bsslines" |
80 | 81 | And I press "Next" |
81 | 82 | And I fill in "manual_import_addresses" with "misfits@devil.doll" |
83 | + And I follow "Personalize invitation mail" | |
82 | 84 | And I fill in "mail_template" with "Follow this link <url>" |
83 | 85 | When I press "Invite my friends!" |
84 | 86 | Then I should be on /profile/26-bsslines/members |
85 | 87 | |
88 | + @selenium | |
86 | 89 | Scenario: noosfero user receives a task when a user invites to join a community |
87 | 90 | Given I am on 26 Bsslines's members management |
88 | 91 | And I follow "Invite your friends to join 26 Bsslines" |
89 | 92 | And I press "Next" |
90 | 93 | And I fill in "manual_import_addresses" with "santos@invalid.br" |
94 | + And I follow "Personalize invitation mail" | |
91 | 95 | And I fill in "mail_template" with "Follow this link <url>" |
92 | 96 | And I press "Invite my friends!" |
93 | 97 | Given there are no pending jobs |
94 | 98 | When I am logged in as "josesantos" |
95 | - And I go to the Control panel | |
99 | + And I go to josesantos's control panel | |
96 | 100 | And I should see "josesilva invited you to join 26 Bsslines." |
97 | 101 | |
102 | + @selenium | |
98 | 103 | Scenario: noosfero user accepts to join community |
99 | 104 | Given I invite email "santos@invalid.br" to join community "26 Bsslines" |
100 | 105 | And there are no pending jobs |
101 | 106 | When I am logged in as "josesantos" |
102 | - And I go to the Control panel | |
107 | + And I go to josesantos's control panel | |
103 | 108 | And I follow "Process requests" |
104 | 109 | And I should see "josesilva invited you to join 26 Bsslines." |
105 | 110 | And I choose "Accept" |
106 | 111 | When I press "Apply!" |
107 | 112 | Then I should not see "josesilva invited you to join 26 Bsslines." |
108 | - When I go to the Control panel | |
113 | + When I go to josesantos's control panel | |
109 | 114 | And I follow "Manage my groups" |
110 | 115 | Then I should see "26 Bsslines" |
111 | 116 | |
117 | + @selenium | |
112 | 118 | Scenario: noosfero user rejects to join community |
113 | 119 | Given I invite email "santos@invalid.br" to join community "26 Bsslines" |
114 | 120 | And there are no pending jobs |
115 | 121 | When I am logged in as "josesantos" |
116 | - And I go to the Control panel | |
122 | + And I go to josesantos's control panel | |
117 | 123 | And I follow "Process requests" |
118 | 124 | And I should see "josesilva invited you to join 26 Bsslines." |
119 | 125 | And I choose "Reject" |
120 | 126 | When I press "Apply!" |
121 | 127 | Then I should not see "josesilva invited you to join 26 Bsslines." |
122 | - When I go to the Control panel | |
128 | + And I go to josesantos's control panel | |
123 | 129 | And I follow "Manage my groups" |
124 | 130 | Then I should not see "26 Bsslines" |
125 | 131 | |
132 | + @selenium | |
126 | 133 | Scenario: noosfero user receives a task when a user invites to be friend |
127 | 134 | Given I am on josesilva's control panel |
128 | - And I follow "Manage Friends" | |
135 | + And I follow "Manage friends" | |
129 | 136 | And I follow "Invite people from my e-mail contacts" |
130 | 137 | And I press "Next" |
131 | 138 | And I fill in "manual_import_addresses" with "santos@invalid.br" |
139 | + And I follow "Personalize invitation mail" | |
132 | 140 | And I fill in "mail_template" with "Follow this link <url>" |
133 | 141 | And I press "Invite my friends!" |
134 | 142 | Given there are no pending jobs |
135 | 143 | When I am logged in as "josesantos" |
136 | - And I go to the Control panel | |
144 | + And I go to josesantos's control panel | |
137 | 145 | And I follow "Process requests" |
138 | 146 | Then I should see "josesilva wants to be your friend." |
139 | 147 | |
148 | + @selenium | |
140 | 149 | Scenario: noosfero user accepts to be friend |
141 | - Given I invite email "santos@invalid.br" to be my friend | |
150 | + Given I am logged in as "josesilva" | |
151 | + And I go to josesilva's control panel | |
152 | + And I invite email "santos@invalid.br" to be my friend | |
142 | 153 | And there are no pending jobs |
143 | 154 | When I am logged in as "josesantos" |
144 | - And I go to the Control panel | |
155 | + And I go to josesantos's control panel | |
145 | 156 | And I follow "Process requests" |
146 | 157 | And I should see "josesilva wants to be your friend." |
147 | 158 | And I choose "Accept" |
148 | 159 | When I press "Apply!" |
149 | 160 | And I should not see "josesilva wants to be your friend." |
150 | - When I go to the Control panel | |
161 | + When I go to josesantos's control panel | |
151 | 162 | And I follow "Manage friends" |
152 | 163 | Then I should see "josesilva" |
153 | 164 | |
165 | + @selenium | |
154 | 166 | Scenario: noosfero user rejects to be friend |
155 | - Given I invite email "santos@invalid.br" to be my friend | |
167 | + Given I am logged in as "josesilva" | |
168 | + And I go to josesilva's control panel | |
169 | + And I invite email "santos@invalid.br" to be my friend | |
156 | 170 | And there are no pending jobs |
157 | 171 | When I am logged in as "josesantos" |
158 | - And I go to the Control panel | |
172 | + And I go to josesantos's control panel | |
159 | 173 | And I follow "Process requests" |
160 | 174 | And I should see "josesilva wants to be your friend." |
161 | 175 | And I choose "Reject" |
162 | 176 | When I press "Apply!" |
163 | 177 | And I should not see "josesilva wants to be your friend." |
164 | - When I go to the Control panel | |
178 | + When I go to josesantos's control panel | |
165 | 179 | And I follow "Manage friends" |
166 | 180 | Then I should not see "josesilva" | ... | ... |
features/language_redirection.feature
... | ... | @@ -7,7 +7,7 @@ Feature: language redirection |
7 | 7 | | login | name | |
8 | 8 | | manuel | Manuel Silva | |
9 | 9 | And the following articles |
10 | - | owner | name | body | lang | translation_of | | |
10 | + | owner | name | body | language | translation_of | | |
11 | 11 | | manuel | Meu Artigo | isso é um teste | pt | nil | |
12 | 12 | | manuel | My Article | this is a test | en | Meu Artigo | |
13 | 13 | |
... | ... | @@ -26,9 +26,9 @@ Feature: language redirection |
26 | 26 | # Testing the web UI |
27 | 27 | Given I am logged in as "manuel" |
28 | 28 | And my browser prefers English |
29 | - And I go to manuel's profile editor | |
29 | + And I go to /myprofile/manuel/profile_editor/edit | |
30 | 30 | And I check "Automaticaly redirect the visitor to the article translated to his/her language" |
31 | - And I press "save" | |
31 | + And I press "Save" | |
32 | 32 | When I go to /manuel/meu-artigo |
33 | 33 | Then the site should be in English |
34 | 34 | ... | ... |
features/location.feature
... | ... | @@ -16,13 +16,14 @@ Feature: Location |
16 | 16 | | state | |
17 | 17 | | city | |
18 | 18 | | zip_code | |
19 | - And I go to the Control panel | |
19 | + And I go to zezinho's control panel | |
20 | 20 | And I follow "Location" |
21 | 21 | When I fill in "Address" with "Rua Marechal Floriano, 28" |
22 | 22 | And I select "Brazil" from "Country" |
23 | 23 | And I fill in "State" with "Bahia" |
24 | 24 | And I fill in "City" with "Salvador" |
25 | - And I fill in "ZIP Code" with "40110010" | |
25 | + And I fill in "ZIP code" with "40110010" | |
26 | + And I follow "Locate in the map" | |
26 | 27 | And I press "Save" |
27 | 28 | Then "zezinho" should have the following data |
28 | 29 | | address | country | state | city | zip_code | |
... | ... | @@ -38,14 +39,14 @@ Feature: Location |
38 | 39 | Given the following <plural> |
39 | 40 | | identifier | name | owner | |
40 | 41 | | mycollective | My Collective | zezinho | |
41 | - And I am on My Collective's control panel | |
42 | + And I am on mycollective's control panel | |
42 | 43 | And I follow "Location" |
43 | 44 | And I select "Brazil" from "Country" |
44 | 45 | And I fill in the following: |
45 | 46 | | Address | Rua Marechal Floriano, 28 | |
46 | 47 | | State | Bahia | |
47 | 48 | | City | Salvador | |
48 | - | ZIP Code | 40110010 | | |
49 | + | ZIP code | 40110010 | | |
49 | 50 | When I press "Save" |
50 | 51 | Then "mycollective" should have the following data |
51 | 52 | | address | country | state | city | zip_code | | ... | ... |
features/login.feature
... | ... | @@ -8,17 +8,20 @@ Feature: login |
8 | 8 | | login | name | |
9 | 9 | | joaosilva | Joao Silva | |
10 | 10 | |
11 | + @selenium | |
11 | 12 | Scenario: login from portal homepage |
12 | 13 | Given feature "allow_change_of_redirection_after_login" is disabled on environment |
13 | 14 | And I am not logged in |
14 | 15 | And I go to the homepage |
16 | + And I follow "Login" | |
15 | 17 | And I fill in the following: |
16 | - | Username | joaosilva | | |
18 | + | Username / Email | joaosilva | | |
17 | 19 | | Password | 123456 | |
18 | 20 | When I press "Log in" |
19 | 21 | Then I should be on the homepage |
20 | 22 | And I should be logged in as "joaosilva" |
21 | 23 | |
24 | + @selenium | |
22 | 25 | Scenario: login from some profile page |
23 | 26 | Given feature "allow_change_of_redirection_after_login" is disabled on environment |
24 | 27 | And I am not logged in |
... | ... | @@ -28,30 +31,31 @@ Feature: login |
28 | 31 | And the following articles |
29 | 32 | | owner | name | homepage | |
30 | 33 | | mariasilva | my home page | true | |
31 | - And I go to Maria Silva's homepage | |
34 | + And I go to mariasilva's homepage | |
32 | 35 | And I follow "Login" |
33 | 36 | And I fill in the following: |
34 | - | Username | joaosilva | | |
37 | + | Username / Email | joaosilva | | |
35 | 38 | | Password | 123456 | |
36 | 39 | When I press "Log in" |
37 | - Then I should be on Maria Silva's homepage | |
40 | + Then I should be on mariasilva's homepage | |
38 | 41 | |
39 | 42 | Scenario: view my control panel |
40 | 43 | Given feature "allow_change_of_redirection_after_login" is disabled on environment |
41 | 44 | And I am not logged in |
42 | - And I go to Joao Silva's control panel | |
45 | + And I go to joaosilva's control panel | |
43 | 46 | And I should be on login page |
44 | 47 | And I fill in the following: |
45 | - | Username | joaosilva | | |
48 | + | Username / Email | joaosilva | | |
46 | 49 | | Password | 123456 | |
47 | 50 | When I press "Log in" |
48 | - Then I should be on Joao Silva's control panel | |
51 | + Then I should be on joaosilva's control panel | |
49 | 52 | |
50 | 53 | Scenario: be redirected if user goes to login page and is logged |
51 | 54 | Given I am logged in as "joaosilva" |
52 | 55 | And I go to login page |
53 | - Then I should be on Joao Silva's control panel | |
56 | + Then I should be on joaosilva's control panel | |
54 | 57 | |
58 | + @selenium | |
55 | 59 | Scenario: stay on the same page after login if this is the environment default |
56 | 60 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
57 | 61 | And I am not logged in |
... | ... | @@ -62,26 +66,28 @@ Feature: login |
62 | 66 | And the following articles |
63 | 67 | | owner | name | homepage | |
64 | 68 | | mariasilva | my home page | true | |
65 | - And I go to Maria Silva's homepage | |
69 | + And I go to mariasilva's homepage | |
66 | 70 | And I follow "Login" |
67 | 71 | And I fill in the following: |
68 | - | Username | joaosilva | | |
72 | + | Username / Email | joaosilva | | |
69 | 73 | | Password | 123456 | |
70 | 74 | When I press "Log in" |
71 | - Then I should be on Maria Silva's homepage | |
75 | + Then I should be on mariasilva's homepage | |
72 | 76 | |
77 | + @selenium | |
73 | 78 | Scenario: go to site homepage if this is the environment default |
74 | 79 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
75 | 80 | And I am not logged in |
76 | 81 | And the environment is configured to redirect to site homepage after login |
77 | - And I go to Joao Silva's homepage | |
82 | + And I go to joaosilva's homepage | |
78 | 83 | And I follow "Login" |
79 | 84 | And I fill in the following: |
80 | - | Username | joaosilva | | |
85 | + | Username / Email | joaosilva | | |
81 | 86 | | Password | 123456 | |
82 | 87 | When I press "Log in" |
83 | 88 | Then I should be on the homepage |
84 | 89 | |
90 | + @selenium | |
85 | 91 | Scenario: go to user profile after login if this is the environment default |
86 | 92 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
87 | 93 | And I am not logged in |
... | ... | @@ -89,11 +95,12 @@ Feature: login |
89 | 95 | And I go to the homepage |
90 | 96 | And I follow "Login" |
91 | 97 | And I fill in the following: |
92 | - | Username | joaosilva | | |
98 | + | Username / Email | joaosilva | | |
93 | 99 | | Password | 123456 | |
94 | 100 | When I press "Log in" |
95 | - Then I should be on Joao Silva's profile | |
101 | + Then I should be on joaosilva's profile | |
96 | 102 | |
103 | + @selenium | |
97 | 104 | Scenario: go to profile homepage after login if this is the environment default |
98 | 105 | Given the following articles |
99 | 106 | | owner | name | body | homepage | |
... | ... | @@ -104,11 +111,12 @@ Feature: login |
104 | 111 | And I go to the homepage |
105 | 112 | And I follow "Login" |
106 | 113 | And I fill in the following: |
107 | - | Username | joaosilva | | |
114 | + | Username / Email | joaosilva | | |
108 | 115 | | Password | 123456 | |
109 | 116 | When I press "Log in" |
110 | - Then I should be on Joao Silva's homepage | |
117 | + Then I should be on joaosilva's homepage | |
111 | 118 | |
119 | + @selenium | |
112 | 120 | Scenario: go to profile control panel after login if this is the environment default |
113 | 121 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
114 | 122 | And I am not logged in |
... | ... | @@ -116,11 +124,12 @@ Feature: login |
116 | 124 | And I go to the homepage |
117 | 125 | And I follow "Login" |
118 | 126 | And I fill in the following: |
119 | - | Username | joaosilva | | |
127 | + | Username / Email | joaosilva | | |
120 | 128 | | Password | 123456 | |
121 | 129 | When I press "Log in" |
122 | - Then I should be on Joao Silva's control panel | |
130 | + Then I should be on joaosilva's control panel | |
123 | 131 | |
132 | + @selenium | |
124 | 133 | Scenario: stay on the same page after login if this is the profile default |
125 | 134 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
126 | 135 | And I am not logged in |
... | ... | @@ -132,27 +141,29 @@ Feature: login |
132 | 141 | And the following articles |
133 | 142 | | owner | name | homepage | |
134 | 143 | | mariasilva | my home page | true | |
135 | - And I go to Maria Silva's homepage | |
144 | + And I go to mariasilva's homepage | |
136 | 145 | And I follow "Login" |
137 | 146 | And I fill in the following: |
138 | - | Username | joaosilva | | |
147 | + | Username / Email | joaosilva | | |
139 | 148 | | Password | 123456 | |
140 | 149 | When I press "Log in" |
141 | - Then I should be on Maria Silva's homepage | |
150 | + Then I should be on mariasilva's homepage | |
142 | 151 | |
152 | + @selenium | |
143 | 153 | Scenario: go to site homepage if this is the profile default |
144 | 154 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
145 | 155 | And I am not logged in |
146 | 156 | And the environment is configured to stay on the same page after login |
147 | 157 | And the profile joaosilva is configured to redirect to site homepage after login |
148 | - And I go to Joao Silva's homepage | |
158 | + And I go to joaosilva's homepage | |
149 | 159 | And I follow "Login" |
150 | 160 | And I fill in the following: |
151 | - | Username | joaosilva | | |
161 | + | Username / Email | joaosilva | | |
152 | 162 | | Password | 123456 | |
153 | 163 | When I press "Log in" |
154 | 164 | Then I should be on the homepage |
155 | 165 | |
166 | + @selenium | |
156 | 167 | Scenario: go to user profile after login if this is the profile default |
157 | 168 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
158 | 169 | And I am not logged in |
... | ... | @@ -161,11 +172,12 @@ Feature: login |
161 | 172 | And I go to the homepage |
162 | 173 | And I follow "Login" |
163 | 174 | And I fill in the following: |
164 | - | Username | joaosilva | | |
175 | + | Username / Email | joaosilva | | |
165 | 176 | | Password | 123456 | |
166 | 177 | When I press "Log in" |
167 | - Then I should be on Joao Silva's profile | |
178 | + Then I should be on joaosilva's profile | |
168 | 179 | |
180 | + @selenium | |
169 | 181 | Scenario: go to profile homepage after login if this is the profile default |
170 | 182 | Given the following articles |
171 | 183 | | owner | name | body | homepage | |
... | ... | @@ -177,11 +189,12 @@ Feature: login |
177 | 189 | And I go to the homepage |
178 | 190 | And I follow "Login" |
179 | 191 | And I fill in the following: |
180 | - | Username | joaosilva | | |
192 | + | Username / Email | joaosilva | | |
181 | 193 | | Password | 123456 | |
182 | 194 | When I press "Log in" |
183 | - Then I should be on Joao Silva's homepage | |
195 | + Then I should be on joaosilva's homepage | |
184 | 196 | |
197 | + @selenium | |
185 | 198 | Scenario: go to profile control panel after login if this is the profile default |
186 | 199 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
187 | 200 | And I am not logged in |
... | ... | @@ -190,7 +203,7 @@ Feature: login |
190 | 203 | And I go to the homepage |
191 | 204 | And I follow "Login" |
192 | 205 | And I fill in the following: |
193 | - | Username | joaosilva | | |
206 | + | Username / Email | joaosilva | | |
194 | 207 | | Password | 123456 | |
195 | 208 | When I press "Log in" |
196 | - Then I should be on Joao Silva's control panel | |
209 | + Then I should be on joaosilva's control panel | ... | ... |
features/manage_categories.feature
... | ... | @@ -26,7 +26,6 @@ Feature: manage categories |
26 | 26 | Scenario: load subcategories only after following parent |
27 | 27 | Then I should not see "Beans" |
28 | 28 | And I should not see "Potatoes" |
29 | - When I follow "Show" and wait for jquery | |
30 | - # Then show me the page | |
31 | - | |
32 | - | |
29 | + When I follow "Show" | |
30 | + Then I should see "Beans" | |
31 | + And I should see "Potatoes" | ... | ... |
features/manage_enterprises.feature
... | ... | @@ -15,8 +15,10 @@ Feature: manage enterprises |
15 | 15 | Scenario: seeing my enterprises on menu |
16 | 16 | Given I am logged in as "joaosilva" |
17 | 17 | Then I should see "My enterprises" link |
18 | - When I follow "My enterprises" and wait | |
19 | - Then I should see "Tangerine Dream" linking to "/myprofile/tangerine-dream" | |
18 | + When I follow "My enterprises" | |
19 | + And I follow "Tangerine Dream" | |
20 | + Then I should be on tangerine-dream's control panel | |
21 | + | |
20 | 22 | |
21 | 23 | @selenium |
22 | 24 | Scenario: not show enterprises on menu to a user without enterprises | ... | ... |
features/manage_inputs.feature
... | ... | @@ -32,8 +32,8 @@ Feature: manage inputs |
32 | 32 | And I follow "Inputs" |
33 | 33 | Then I should not see "Add new input or raw material" |
34 | 34 | And I follow "Add the inputs or raw material used by this product" |
35 | - And I select "Music »" and wait for jquery | |
36 | - And I select "Rock" and wait for jquery | |
35 | + And I select "Music »" from "category_id" within "#categories_container_level0" | |
36 | + And I select "Rock" from "category_id" within "#categories_container_level1" | |
37 | 37 | And I press "Save and continue" |
38 | 38 | Then I should see "Rock" |
39 | 39 | |
... | ... | @@ -47,8 +47,8 @@ Feature: manage inputs |
47 | 47 | And I follow "Inputs" |
48 | 48 | And I should not see "Add the inputs or raw material used by this product" |
49 | 49 | And I follow "Add new input or raw material" |
50 | - And I select "Music »" and wait for jquery | |
51 | - And I select "Rock" and wait for jquery | |
50 | + And I select "Music »" from "category_id" within "#categories_container_level0" | |
51 | + And I select "Rock" from "category_id" within "#categories_container_level1" | |
52 | 52 | And I press "Save and continue" |
53 | 53 | Then I should see "Rock" |
54 | 54 | |
... | ... | @@ -57,8 +57,8 @@ Feature: manage inputs |
57 | 57 | Given I am logged in as "joaosilva" |
58 | 58 | When I go to Rede Moinho's page of product Abbey Road |
59 | 59 | And I follow "Inputs" |
60 | - And I follow "Add the inputs or raw material used by this product" and wait until "#input-category-form" is present | |
61 | - And I click "css=a.cancel-add-input" | |
60 | + And I follow "Add the inputs or raw material used by this product" | |
61 | + And I follow "Cancel" within "#categories_selection_actionbar" | |
62 | 62 | Then I should see "Abbey Road" |
63 | 63 | And I should see "Add the inputs or raw material used by this product" |
64 | 64 | |
... | ... | @@ -90,7 +90,7 @@ Feature: manage inputs |
90 | 90 | And I follow "Inputs and raw material" |
91 | 91 | Then I should see "Edit" within ".input-item" |
92 | 92 | |
93 | - @selenium | |
93 | + @selenium-fixme | |
94 | 94 | Scenario: Order inputs by position |
95 | 95 | Given the following product_categories |
96 | 96 | | name | |
... | ... | @@ -131,7 +131,7 @@ Feature: manage inputs |
131 | 131 | And I follow "Inputs" |
132 | 132 | And I follow "Click here to add price and the amount used" |
133 | 133 | And I should not see "Price by Meter ($)" |
134 | - When I select "Meter" | |
134 | + When I select "Meter" from "input_unit_id" within ".edit_input" | |
135 | 135 | Then I should see "Price by Meter ($)" |
136 | 136 | |
137 | 137 | @selenium |
... | ... | @@ -145,7 +145,7 @@ Feature: manage inputs |
145 | 145 | And I follow "Click here to add price and the amount used" |
146 | 146 | And I fill in "Amount used" with "2.5" |
147 | 147 | And I fill in "Price" with "11.50" |
148 | - And I select "Meter" | |
148 | + And I select "Meter" from "input_unit_id" within ".edit_input" | |
149 | 149 | And I press "Save" |
150 | 150 | Then I should see "2.5" |
151 | 151 | And I should see "Meter" |
... | ... | @@ -162,14 +162,14 @@ Feature: manage inputs |
162 | 162 | And I follow "Click here to add price and the amount used" |
163 | 163 | And I fill in "Amount used" with "2.5" |
164 | 164 | And I fill in "Price" with "11.50" |
165 | - And I select "Meter" | |
165 | + And I select "Meter" from "input_unit_id" within ".edit_input" | |
166 | 166 | And I press "Save" |
167 | 167 | Then I should see "2.5" |
168 | 168 | And I should see "Meter" |
169 | 169 | When I follow "Edit" within ".input-details" |
170 | 170 | And I fill in "Amount used" with "3.0" |
171 | 171 | And I fill in "Price" with "23.31" |
172 | - And I select "Litre" | |
172 | + And I select "Litre" from "input_unit_id" within ".edit_input" | |
173 | 173 | And I press "Save" |
174 | 174 | Then I should see "3" |
175 | 175 | And I should see "Litre" |
... | ... | @@ -182,12 +182,12 @@ Feature: manage inputs |
182 | 182 | And I am logged in as "joaosilva" |
183 | 183 | When I go to Rede Moinho's page of product Abbey Road |
184 | 184 | And I follow "Inputs" |
185 | - And I follow "Click here to add price and the amount used" and wait until ".input-details-form" is present | |
185 | + And I follow "Click here to add price and the amount used" | |
186 | 186 | Then I should see "Cancel" |
187 | 187 | And I should see "Amount used" |
188 | 188 | And I should see "Price" |
189 | 189 | And I should see "This input or raw material inpact on the final price of the product?" |
190 | - When I click "css=a.cancel-edit-input" | |
190 | + When I follow "Cancel" within ".edit_input" | |
191 | 191 | Then I should see "Click here to add price and the amount used" |
192 | 192 | |
193 | 193 | @selenium |
... | ... | @@ -199,7 +199,7 @@ Feature: manage inputs |
199 | 199 | When I go to Rede Moinho's page of product Abbey Road |
200 | 200 | And I follow "Inputs" |
201 | 201 | And I follow "Edit" within ".input-details" |
202 | - And I follow "Cancel" | |
202 | + And I follow "Cancel" within ".edit_input" | |
203 | 203 | And I follow "Edit" within ".input-details" |
204 | 204 | Then I should see "Amount used" |
205 | 205 | And I should see "Price by Meter" |
... | ... | @@ -215,7 +215,7 @@ Feature: manage inputs |
215 | 215 | Then I should see "Rock" |
216 | 216 | And I should not see "Add the inputs or raw material used by this product" |
217 | 217 | When I follow "Remove" |
218 | - And I confirm | |
218 | + And I confirm the browser dialog | |
219 | 219 | Then I should see "Add the inputs or raw material used by this product" |
220 | 220 | |
221 | 221 | @selenium |
... | ... | @@ -226,18 +226,18 @@ Feature: manage inputs |
226 | 226 | | redemoinho | Music | Manu Chao | |
227 | 227 | And I am logged in as "joaosilva" |
228 | 228 | When I go to Rede Moinho's page of product Depeche Mode |
229 | - Then the content "Add some description to your product" should be visible | |
230 | - And the content "Add the inputs or raw material used by this product" should not be visible | |
229 | + Then I should see "Add some description to your product" | |
230 | + And "Add the inputs or raw material used by this product" should not be visible within "#show_product" | |
231 | 231 | When I follow "Inputs and raw material" |
232 | - Then the content "Add the inputs or raw material used by this product" should be visible | |
233 | - And the content "Add some description to your product" should not be visible | |
232 | + Then I should see "Add the inputs or raw material used by this product" | |
233 | + And "Add some description to your product" should not be visible within "#show_product" | |
234 | 234 | When I go to Rede Moinho's page of product Manu Chao |
235 | - Then the content "Add some description to your product" should be visible | |
235 | + Then I should see "Add some description to your product" | |
236 | 236 | When I go to Rede Moinho's page of product Depeche Mode |
237 | - Then the content "Add the inputs or raw material used by this product" should be visible | |
238 | - And the content "Add some description to your product" should not be visible | |
237 | + Then I should see "Add the inputs or raw material used by this product" | |
238 | + And "Add some description to your product" should not be visible within "#show_product" | |
239 | 239 | |
240 | - @selenium | |
240 | + @selenium-fixme | |
241 | 241 | Scenario: Order input list |
242 | 242 | Given the following product_category |
243 | 243 | | name | | ... | ... |
features/manage_product_price_details.feature
... | ... | @@ -51,9 +51,9 @@ Feature: manage product price details |
51 | 51 | And I follow "Price composition" |
52 | 52 | And I follow "Describe here the cost of production" |
53 | 53 | And I follow "New cost" |
54 | - And I select "Taxes" | |
54 | + And I select "Taxes" from "price_details__production_cost_id" within "#display-product-price-details" | |
55 | 55 | And I fill in "$" with "5.00" |
56 | - And I leave the ".price-details-price" field | |
56 | + And I leave the "#price_details__price" field | |
57 | 57 | And I press "Save" |
58 | 58 | Then I should not see "Save" |
59 | 59 | And I should see "Describe here the cost of production" |
... | ... | @@ -67,15 +67,15 @@ Feature: manage product price details |
67 | 67 | And I follow "Price composition" |
68 | 68 | And I follow "Describe here the cost of production" |
69 | 69 | And I follow "New cost" |
70 | - And I select "Taxes" | |
70 | + And I select "Taxes" from "price_details__production_cost_id" within "#display-product-price-details" | |
71 | 71 | And I fill in "$" with "20.00" |
72 | 72 | And I leave the ".price-details-price" field |
73 | 73 | And I press "Save" |
74 | 74 | Then I should not see "Save" |
75 | 75 | And I should see "Taxes" within "#display-price-details" |
76 | 76 | When I follow "Describe here the cost of production" |
77 | - And I select "Energy" | |
78 | - And I leave the ".price-details-price" field | |
77 | + And I select "Energy" from "price_details__production_cost_id" within "#display-product-price-details" | |
78 | + And I leave the "#price_details__price" field | |
79 | 79 | And I press "Save" |
80 | 80 | And I should not see "Taxes" within "#display-price-details" |
81 | 81 | And I should see "Energy" within "#display-price-details" |
... | ... | @@ -102,9 +102,10 @@ Feature: manage product price details |
102 | 102 | And I follow "Price composition" |
103 | 103 | And I follow "Describe here the cost of production" |
104 | 104 | And I follow "New cost" |
105 | - And I select "Taxes" | |
105 | + And I select "Taxes" from "price_details__production_cost_id" within "#display-product-price-details" | |
106 | 106 | And I fill in "$" with "20.00" |
107 | 107 | And I press "Save" |
108 | + And I go to Rede Moinho's page of product Abbey Road | |
108 | 109 | Then I should see "Inputs" within ".price-detail-name" |
109 | 110 | And I should see "60.0" within ".price-detail-price" |
110 | 111 | |
... | ... | @@ -114,10 +115,10 @@ Feature: manage product price details |
114 | 115 | And I follow "Price composition" |
115 | 116 | And I follow "Describe here the cost of production" |
116 | 117 | And I follow "New cost" |
118 | + And I select "Other cost" from "price_details__production_cost_id" within "#display-product-price-details" | |
117 | 119 | And I want to add "Energy" as cost |
118 | - And I select "Other cost" | |
119 | 120 | And I fill in "$" with "10.00" |
120 | - And I leave the ".price-details-price" field | |
121 | + And I leave the "#price_details__price" field | |
121 | 122 | And I press "Save" |
122 | 123 | When I follow "Describe here the cost of production" |
123 | 124 | Then I should see "Energy" within ".production-cost-selection" |
... | ... | @@ -127,9 +128,10 @@ Feature: manage product price details |
127 | 128 | Given I go to Rede Moinho's page of product Abbey Road |
128 | 129 | And I follow "Price composition" |
129 | 130 | And I follow "Describe here the cost of production" |
131 | + And I follow "New cost" | |
132 | + And I select "Other cost" from "price_details__production_cost_id" within "#display-product-price-details" | |
130 | 133 | And I want to add "Energy" as cost |
131 | - And I select "Other cost" | |
132 | - Then I should see "Energy" within "#new-cost-fields" | |
134 | + Then I should see "Energy" within "#display-product-price-details" | |
133 | 135 | |
134 | 136 | @selenium |
135 | 137 | Scenario: remove price detail |
... | ... | @@ -141,7 +143,7 @@ Feature: manage product price details |
141 | 143 | And I follow "Describe here the cost of production" |
142 | 144 | And I should see "Taxes" within "#manage-product-details-form" |
143 | 145 | When I follow "Remove" within "#manage-product-details-form" |
144 | - And I confirm | |
146 | + And I confirm the browser dialog | |
145 | 147 | And I press "Save" |
146 | 148 | And I follow "Describe here the cost of production" |
147 | 149 | Then I should not see "Taxes" within "#manage-product-details-form" |
... | ... | @@ -160,7 +162,7 @@ Feature: manage product price details |
160 | 162 | Then I should see "$ 60.00 of $ 80.00" within "#progressbar-text" |
161 | 163 | And I follow "New cost" |
162 | 164 | And I fill in "$" with "10.00" |
163 | - And I leave the ".price-details-price" field | |
165 | + And I leave the "#price_details__price" field | |
164 | 166 | Then I should see "$ 70.00 of $ 80.00" within "#progressbar-text" |
165 | 167 | |
166 | 168 | @selenium | ... | ... |
features/manage_products.feature
... | ... | @@ -13,7 +13,7 @@ Feature: manage products |
13 | 13 | |
14 | 14 | Scenario: display "create new product" button |
15 | 15 | Given I am logged in as "joaosilva" |
16 | - And I am on Rede Moinho's control panel | |
16 | + And I am on redemoinho's control panel | |
17 | 17 | When I follow "Manage Products and Services" |
18 | 18 | Then I should see "New product or service" |
19 | 19 | |
... | ... | @@ -34,7 +34,7 @@ Feature: manage products |
34 | 34 | | redemoinho | bicycle | Bike I | bicycle 9 | |
35 | 35 | | redemoinho | bicycle | Bike J | bicycle 10 | |
36 | 36 | | redemoinho | bicycle | Bike K | bicycle 11 | |
37 | - When I go to /catalog/redemoinho | |
37 | + When I go to redemoinho's products page | |
38 | 38 | Then I should see "Bike A" within "#product-list" |
39 | 39 | And I should see "Bike B" within "#product-list" |
40 | 40 | And I should see "Bike C" within "#product-list" |
... | ... | @@ -52,13 +52,13 @@ Feature: manage products |
52 | 52 | |
53 | 53 | Scenario: listing products and services |
54 | 54 | Given I am logged in as "joaosilva" |
55 | - And I am on Rede Moinho's control panel | |
55 | + And I am on redemoinho's control panel | |
56 | 56 | And I follow "Manage Products and Services" |
57 | 57 | Then I should see "Listing products and services" |
58 | 58 | |
59 | 59 | Scenario: see button to back in categories hierarchy |
60 | 60 | Given I am logged in as "joaosilva" |
61 | - And I am on Rede Moinho's control panel | |
61 | + And I am on redemoinho's control panel | |
62 | 62 | And I follow "Manage Products and Services" |
63 | 63 | When I follow "New product or service" |
64 | 64 | Then I should see "Back to the product listing" link |
... | ... | @@ -69,9 +69,7 @@ Feature: manage products |
69 | 69 | | Products | |
70 | 70 | | Services | |
71 | 71 | Given I am logged in as "joaosilva" |
72 | - And I am on Rede Moinho's control panel | |
73 | - And I follow "Manage Products and Services" | |
74 | - When I follow "New product or service" | |
72 | + And I go to redemoinho's new product page | |
75 | 73 | Then I should see "Products" |
76 | 74 | And I should see "Service" |
77 | 75 | |
... | ... | @@ -85,10 +83,8 @@ Feature: manage products |
85 | 83 | | Computers level1 | products-level0 | |
86 | 84 | | DVDs level1 | products-level0 | |
87 | 85 | Given I am logged in as "joaosilva" |
88 | - And I am on Rede Moinho's control panel | |
89 | - And I follow "Manage Products and Services" | |
90 | - When I follow "New product or service" | |
91 | - And I select "Products level0 »" and wait for jquery | |
86 | + And I go to redemoinho's new product page | |
87 | + And I select "Products level0 »" from "category_id" within "#categories_container_level0" | |
92 | 88 | Then I should see "Computers level1" |
93 | 89 | And I should see "DVDs level1" |
94 | 90 | |
... | ... | @@ -103,12 +99,12 @@ Feature: manage products |
103 | 99 | | Computers level1 | products-level0 | |
104 | 100 | | Software development level1 | services-level0 | |
105 | 101 | Given I am logged in as "joaosilva" |
106 | - And I am on Rede Moinho's control panel | |
107 | - And I follow "Manage Products and Services" | |
108 | - When I follow "New product or service" | |
109 | - And I select "Products level0 »" and wait for jquery | |
110 | - And I select "Computers level1" and wait for jquery | |
111 | - And I select "Services level0 »" and wait for jquery | |
102 | + And I go to redemoinho's new product page | |
103 | + And I should not see /Computers level/ | |
104 | + And I select "Products level0 »" from "category_id" within "#categories_container_wrapper" | |
105 | + And I should see /Computers level/ | |
106 | + And I should not see /Software develop/ | |
107 | + And I select "Services level0 »" from "category_id" within "#categories_container_wrapper" | |
112 | 108 | Then I should see /Software develop/ |
113 | 109 | And I should not see /Computers level/ |
114 | 110 | |
... | ... | @@ -121,11 +117,9 @@ Feature: manage products |
121 | 117 | | name | parent | |
122 | 118 | | Computers | products | |
123 | 119 | Given I am logged in as "joaosilva" |
124 | - And I am on Rede Moinho's control panel | |
125 | - And I follow "Manage Products and Services" | |
126 | - When I follow "New product or service" | |
127 | - And I select "Products »" and wait for jquery | |
128 | - And I select "Computers" and wait for jquery | |
120 | + And I go to redemoinho's new product page | |
121 | + And I select "Products »" from "category_id" within "#categories_container_level0" | |
122 | + And I select "Computers" from "category_id" within "#categories_container_level1" | |
129 | 123 | Then I should see "Products → Computers" |
130 | 124 | |
131 | 125 | @selenium |
... | ... | @@ -137,11 +131,9 @@ Feature: manage products |
137 | 131 | | name | parent | |
138 | 132 | | Category Level 1 | toplevel-product-categories | |
139 | 133 | Given I am logged in as "joaosilva" |
140 | - And I am on Rede Moinho's control panel | |
141 | - And I follow "Manage Products and Services" | |
142 | - When I follow "New product or service" | |
143 | - And I select "Toplevel Product Categories »" and wait for jquery | |
144 | - And I select "Category Level 1" and wait for jquery | |
134 | + And I go to redemoinho's new product page | |
135 | + And I select "Toplevel Product Categories »" from "category_id" within "#categories_container_level0" | |
136 | + And I select "Category Level 1" from "category_id" within "#categories_container_level1" | |
145 | 137 | Then I should see "Toplevel Product Categories" link |
146 | 138 | And I should not see "Category Level 1" link |
147 | 139 | |
... | ... | @@ -151,8 +143,8 @@ Feature: manage products |
151 | 143 | | name | |
152 | 144 | | Only for test | |
153 | 145 | And I am logged in as "joaosilva" |
154 | - When I go to /myprofile/redemoinho/manage_products/new | |
155 | - Then the "#save_and_continue" button should not be enabled | |
146 | + When I go to redemoinho's new product page | |
147 | + Then the "#save_and_continue" button should be disabled | |
156 | 148 | |
157 | 149 | @selenium |
158 | 150 | Scenario: enable save button when select one category |
... | ... | @@ -160,11 +152,9 @@ Feature: manage products |
160 | 152 | And the following product_category |
161 | 153 | | name | |
162 | 154 | | Browsers (accept categories) | |
163 | - And I am on Rede Moinho's control panel | |
164 | - And I follow "Manage Products and Services" | |
165 | - When I follow "New product or service" | |
166 | - And I select "Browsers (accept categories)" and wait for jquery | |
167 | - Then the "Save and continue" button should be enabled | |
155 | + When I go to redemoinho's new product page | |
156 | + And I select "Browsers (accept categories)" from "category_id" within "#categories_container_wrapper" | |
157 | + Then the "#save_and_continue" button should be enabled | |
168 | 158 | |
169 | 159 | @selenium |
170 | 160 | Scenario: dont enable save button when select category with not accept products |
... | ... | @@ -172,11 +162,9 @@ Feature: manage products |
172 | 162 | | name | accept_products | |
173 | 163 | | Browsers | false | |
174 | 164 | Given I am logged in as "joaosilva" |
175 | - And I am on Rede Moinho's control panel | |
176 | - And I follow "Manage Products and Services" | |
177 | - When I follow "New product or service" | |
178 | - And I select "Browsers" and wait for jquery | |
179 | - Then the "#save_and_continue" button should not be enabled | |
165 | + When I go to redemoinho's new product page | |
166 | + And I select "Browsers" from "category_id" within "#categories_container_wrapper" | |
167 | + Then the "#save_and_continue" button should be disabled | |
180 | 168 | |
181 | 169 | @selenium |
182 | 170 | Scenario: save product |
... | ... | @@ -184,32 +172,14 @@ Feature: manage products |
184 | 172 | | name | |
185 | 173 | | Bicycle | |
186 | 174 | Given I am logged in as "joaosilva" |
187 | - And I am on Rede Moinho's control panel | |
188 | - And I follow "Manage Products and Services" | |
189 | - When I follow "New product or service" | |
190 | - And I select "Bicycle" and wait for jquery | |
175 | + When I go to redemoinho's new product page | |
176 | + And I select "Bicycle" from "category_id" within "#categories_container_wrapper" | |
191 | 177 | And I press "Save and continue" |
192 | - Then I should see "Bicycle" | |
178 | + When I go to redemoinho's products page | |
179 | + And I follow "Bicycle" within "#product-list" | |
180 | + Then I should see "Bicycle" within "#show_product" | |
193 | 181 | And I should see "Change category" |
194 | 182 | |
195 | - @selenium | |
196 | - Scenario: stay on the same place after error on save | |
197 | - Given the following product_category | |
198 | - | name | | |
199 | - | Bicycle | | |
200 | - Given I am logged in as "joaosilva" | |
201 | - And I am on Rede Moinho's control panel | |
202 | - And I follow "Manage Products and Services" | |
203 | - And I follow "New product or service" | |
204 | - And I select "Bicycle" and wait for jquery | |
205 | - And I press "Save and continue" | |
206 | - When I follow "Back" | |
207 | - And I follow "New product or service" | |
208 | - And I select "Bicycle" and wait for jquery | |
209 | - And I press "Save and continue" | |
210 | - Then I should be on Rede Moinho's new product page | |
211 | - And I should see "Bicycle" | |
212 | - | |
213 | 183 | Scenario: a user with permission can see edit links |
214 | 184 | Given the following product_category |
215 | 185 | | name | |
... | ... | @@ -331,10 +301,11 @@ Feature: manage products |
331 | 301 | And I am logged in as "joaosilva" |
332 | 302 | When I go to Rede Moinho's page of product Generic pc |
333 | 303 | And I follow "Change category" |
334 | - And I select "Eletronics »" and wait for jquery | |
335 | - Then I select "DVDs" and wait for jquery | |
304 | + And I select "Eletronics »" from "category_id" within "#categories_container_level0" | |
305 | + Then I select "DVDs" from "category_id" within "#categories_container_level1" | |
336 | 306 | And I press "Save and continue" |
337 | - Then I should see "Eletronics → DVDs" | |
307 | + When I go to Rede Moinho's page of product Generic pc | |
308 | + Then I should see "Eletronics → DVDs" within ".hierarchy-category" | |
338 | 309 | |
339 | 310 | @selenium |
340 | 311 | Scenario: cancel edition of a product category |
... | ... | @@ -424,7 +395,9 @@ Feature: manage products |
424 | 395 | And I follow "Change category" |
425 | 396 | And I press "Save and continue" |
426 | 397 | Then I should not see "Product category can't be blank" |
427 | - And I should be on Rede Moinho's page of product Generic pc | |
398 | + When I go to Rede Moinho's page of product Generic pc | |
399 | + Then I should see "Eletronics → Computers" within ".hierarchy-category" | |
400 | + | |
428 | 401 | And I should see "Generic pc" |
429 | 402 | |
430 | 403 | @selenium |
... | ... | @@ -450,7 +423,7 @@ Feature: manage products |
450 | 423 | And I am logged in as "joaosilva" |
451 | 424 | When I go to Rede Moinho's page of product Generic pc |
452 | 425 | And I follow "Change category" |
453 | - Then the select for category "Netbook from Venus" should be visible | |
426 | + Then "Netbook from Venus" should be visible within "#categories_container_wrapper" | |
454 | 427 | |
455 | 428 | @selenium |
456 | 429 | Scenario: Truncate long category name in selection of category |
... | ... | @@ -462,7 +435,7 @@ Feature: manage products |
462 | 435 | | name | parent | |
463 | 436 | | Netbook Quantum | Super Quantum Computers with teraflops | |
464 | 437 | And I am logged in as "joaosilva" |
465 | - When I go to Rede Moinho's new product page | |
438 | + When I go to redemoinho's new product page | |
466 | 439 | Then I should see "Nanonote nanotech with long lo..." |
467 | 440 | And I should see "Super Quantum Computers with t... »" |
468 | 441 | |
... | ... | @@ -481,7 +454,7 @@ Feature: manage products |
481 | 454 | When I go to Rede Moinho's page of product Bike |
482 | 455 | And I follow "Edit name and unit" |
483 | 456 | And I fill in "Red bicycle" for "product_name" |
484 | - And I select "Kilo" | |
457 | + And I select "Kilo" from "product_unit_id" within "#product-name-form" | |
485 | 458 | And I press "Save" |
486 | 459 | Then I should see "Red bicycle - kilo" |
487 | 460 | |
... | ... | @@ -519,12 +492,14 @@ Feature: manage products |
519 | 492 | When I go to Rede Moinho's page of product Bike |
520 | 493 | And I follow "Add price and other basic information" |
521 | 494 | And I follow "Add new qualifier" |
522 | - And I select "Organic" and wait for jquery | |
495 | + And I select "Organic" from "selected_qualifier" within "#product-qualifiers-list" | |
523 | 496 | And I press "Save" |
497 | + And I go to Rede Moinho's page of product Bike | |
524 | 498 | Then I should see "Organic (Self declared)" |
525 | 499 | When I follow "Edit basic information" |
526 | 500 | And I follow "Delete qualifier" |
527 | 501 | And I press "Save" |
502 | + And I go to Rede Moinho's page of product Bike | |
528 | 503 | Then I should not see "Organic (Self declared)" |
529 | 504 | |
530 | 505 | @selenium | ... | ... |
features/my_network_block.feature
... | ... | @@ -20,11 +20,11 @@ Feature: my_network_block |
20 | 20 | | identifier | name | owner | public_profile | |
21 | 21 | | other-public-community | Other Public Community | joaosilva | true | |
22 | 22 | | private-community | Private Community | joaosilva | false | |
23 | - And I am on Joao Silva's homepage | |
23 | + And I am on joaosilva's homepage | |
24 | 24 | And I should see "2 communities" |
25 | - When I go to Public Community's homepage | |
25 | + When I go to public-community's homepage | |
26 | 26 | And I follow "Join" |
27 | - And I go to Joao Silva's homepage | |
27 | + And I go to joaosilva's homepage | |
28 | 28 | Then I should see "3 communities" |
29 | 29 | |
30 | 30 | @selenium |
... | ... | @@ -34,11 +34,11 @@ Feature: my_network_block |
34 | 34 | | identifier | name | owner | visible | |
35 | 35 | | visible-community | Visible Community | joaosilva | true | |
36 | 36 | | not-visible-community | Not Visible Community | joaosilva | false | |
37 | - And I am on Joao Silva's homepage | |
37 | + And I am on joaosilva's homepage | |
38 | 38 | And I should see "One community" |
39 | - When I go to Public Community's homepage | |
39 | + When I go to public-community's homepage | |
40 | 40 | And I follow "Join" |
41 | - And I go to Joao Silva's homepage | |
41 | + And I go to joaosilva's homepage | |
42 | 42 | Then I should see "2 communities" |
43 | 43 | |
44 | 44 | Scenario: display how many public/private friends I have |
... | ... | @@ -48,10 +48,10 @@ Feature: my_network_block |
48 | 48 | | josesilva | Jose Silva | false | |
49 | 49 | And "joaosilva" is friend of "mariasilva" |
50 | 50 | And I am logged in as "joaosilva" |
51 | - And I am on Joao Silva's homepage | |
51 | + And I am on joaosilva's homepage | |
52 | 52 | Then I should see "1 friend" |
53 | 53 | And "joaosilva" is friend of "josesilva" |
54 | - When I go to Joao Silva's homepage | |
54 | + When I go to joaosilva's homepage | |
55 | 55 | Then I should see "2 friends" |
56 | 56 | |
57 | 57 | Scenario: not display how many invisible friends I have |
... | ... | @@ -62,8 +62,8 @@ Feature: my_network_block |
62 | 62 | And "josesilva" is invisible |
63 | 63 | And "joaosilva" is friend of "mariasilva" |
64 | 64 | And I am logged in as "joaosilva" |
65 | - When I go to Joao Silva's homepage | |
65 | + When I go to joaosilva's homepage | |
66 | 66 | Then I should see "1 friend" |
67 | 67 | And "joaosilva" is friend of "josesilva" |
68 | - When I go to Joao Silva's homepage | |
68 | + When I go to joaosilva's homepage | |
69 | 69 | Then I should see "1 friend" | ... | ... |
features/new_content_on_cms.feature
... | ... | @@ -7,10 +7,10 @@ Feature: create content on cms |
7 | 7 | | login | name | |
8 | 8 | | joaosilva | Joao Silva | |
9 | 9 | And I am logged in as "joaosilva" |
10 | - And I am on Joao Silva's cms | |
10 | + And I am on joaosilva's cms | |
11 | 11 | |
12 | 12 | Scenario: open page to select type of content |
13 | - Given I follow "New Content" | |
13 | + Given I follow "New content" | |
14 | 14 | Then I should see "Choose the type of content" |
15 | 15 | |
16 | 16 | Scenario: list all content types |
... | ... | @@ -27,7 +27,7 @@ Feature: create content on cms |
27 | 27 | When I follow "Folder" |
28 | 28 | And I fill in "Title" with "My Folder" |
29 | 29 | And I press "Save" |
30 | - And I go to Joao Silva's cms | |
30 | + And I go to joaosilva's cms | |
31 | 31 | Then I should see "My Folder" |
32 | 32 | |
33 | 33 | Scenario: create a tiny_mce article |
... | ... | @@ -35,7 +35,7 @@ Feature: create content on cms |
35 | 35 | When I follow "Text article with visual editor" |
36 | 36 | And I fill in "Title" with "My tiny_mce article" |
37 | 37 | And I press "Save" |
38 | - And I go to Joao Silva's cms | |
38 | + And I go to joaosilva's cms | |
39 | 39 | Then I should see "My tiny_mce article" |
40 | 40 | |
41 | 41 | Scenario: create a textile article |
... | ... | @@ -43,7 +43,7 @@ Feature: create content on cms |
43 | 43 | When I follow "Text article with Textile markup" |
44 | 44 | And I fill in "Title" with "My textile article" |
45 | 45 | And I press "Save" |
46 | - And I go to Joao Silva's cms | |
46 | + And I go to joaosilva's cms | |
47 | 47 | Then I should see "My textile article" |
48 | 48 | |
49 | 49 | Scenario: create a Blog |
... | ... | @@ -51,7 +51,7 @@ Feature: create content on cms |
51 | 51 | When I follow "Blog" |
52 | 52 | And I fill in "Title" with "My blog" |
53 | 53 | And I press "Save" |
54 | - And I go to Joao Silva's cms | |
54 | + And I go to joaosilva's cms | |
55 | 55 | Then I should see "My blog" |
56 | 56 | |
57 | 57 | Scenario: create an event |
... | ... | @@ -59,7 +59,7 @@ Feature: create content on cms |
59 | 59 | When I follow "Event" |
60 | 60 | And I fill in "Title" with "My event" |
61 | 61 | And I press "Save" |
62 | - And I go to Joao Silva's cms | |
62 | + And I go to joaosilva's cms | |
63 | 63 | Then I should see "My event" |
64 | 64 | |
65 | 65 | Scenario: redirect to upload files if choose UploadedFile | ... | ... |
features/organization_custom_fields.feature
... | ... | @@ -9,7 +9,7 @@ Feature: organization custom fields |
9 | 9 | | joaosilva | Joao Silva | |
10 | 10 | And I am logged in as "joaosilva" |
11 | 11 | And feature "enterprise_registration" is enabled on environment |
12 | - And I go to the Control panel | |
12 | + And I go to joaosilva's control panel | |
13 | 13 | |
14 | 14 | Scenario Outline: organization active fields are not displayed on creation |
15 | 15 | Given the following <organization> fields are active fields |
... | ... | @@ -35,7 +35,7 @@ Feature: organization custom fields |
35 | 35 | | name | identifier | |
36 | 36 | | Organization | organization | |
37 | 37 | And "Joao Silva" is admin of "Organization" |
38 | - And I am on Organization's control panel | |
38 | + And I am on organization's control panel | |
39 | 39 | And I follow <information> |
40 | 40 | Then I should see "Display name" |
41 | 41 | Then I should see "Contact email" |
... | ... | @@ -70,7 +70,7 @@ Feature: organization custom fields |
70 | 70 | | name | identifier | display_name | contact_email | city | |
71 | 71 | | Organization | organization | organization | bla@bleee.com | city | |
72 | 72 | And "Joao Silva" is admin of "Organization" |
73 | - And I am on Organization's control panel | |
73 | + And I am on organization's control panel | |
74 | 74 | And I follow <information> |
75 | 75 | And I fill in the following: |
76 | 76 | | Display name | | | ... | ... |
features/plugins.feature
... | ... | @@ -23,36 +23,36 @@ Feature: plugins |
23 | 23 | |
24 | 24 | Scenario: a user must see the plugin\'s button in the control panel if the plugin is enabled |
25 | 25 | Given plugin TestPlugin is enabled on environment |
26 | - And I go to Joao Silva's control panel | |
26 | + And I go to joaosilva's control panel | |
27 | 27 | Then I should see "Test plugin button" |
28 | 28 | |
29 | 29 | Scenario: a user must see the plugin\'s tab in in the profile if the plugin is enabled |
30 | 30 | Given plugin TestPlugin is enabled on environment |
31 | - And I am on Joao Silva's profile | |
31 | + And I am on joaosilva's profile | |
32 | 32 | Then I should see "Test plugin tab" |
33 | 33 | |
34 | 34 | Scenario: a user must not see the plugin\'s button in the control panel if the plugin is disabled |
35 | 35 | Given plugin TestPlugin is disabled on environment |
36 | - And I go to Joao Silva's control panel | |
36 | + And I go to joaosilva's control panel | |
37 | 37 | Then I should not see "Test plugin button" |
38 | 38 | |
39 | 39 | Scenario: a user must not see the plugin\'s tab in in the profile if the plugin is disabled |
40 | 40 | Given plugin TestPlugin is disabled on environment |
41 | - And I am on Joao Silva's profile | |
41 | + And I am on joaosilva's profile | |
42 | 42 | Then I should not see "Test plugin tab" |
43 | 43 | |
44 | 44 | Scenario: an admin should be able to deactivate a plugin |
45 | 45 | Given plugin TestPlugin is enabled on environment |
46 | 46 | And I am logged in as admin |
47 | - When I go to the Control panel | |
47 | + When I go to admin_user's control panel | |
48 | 48 | Then I should see "Test plugin button" |
49 | - When I go to the profile | |
49 | + When I go to admin_user's profile | |
50 | 50 | Then I should see "Test plugin tab" |
51 | 51 | And I go to the environment control panel |
52 | 52 | And I follow "Plugins" |
53 | 53 | And I uncheck "Test plugin" |
54 | 54 | And I press "Save changes" |
55 | - When I go to the Control panel | |
55 | + When I go to admin_user's control panel | |
56 | 56 | Then I should not see "Test plugin button" |
57 | - When I go to the profile | |
57 | + When I go to admin_user's profile | |
58 | 58 | Then I should not see "Test plugin tab" | ... | ... |
features/private_profile.feature
... | ... | @@ -14,7 +14,7 @@ Feature: private profiles |
14 | 14 | |
15 | 15 | Scenario: joining a private community |
16 | 16 | Given I am logged in as "joao" |
17 | - When I go to Safernet's homepage | |
17 | + When I go to safernet's homepage | |
18 | 18 | Then I should see "members only" |
19 | 19 | When I follow "Join" |
20 | 20 | And "joao" is accepted on community "Safernet" | ... | ... |
features/profile_domain.feature
... | ... | @@ -12,62 +12,68 @@ Feature: domain for profile |
12 | 12 | | sample-community | Sample Community | localhost | |
13 | 13 | And the following blocks |
14 | 14 | | owner | type | |
15 | - | sample-community | ProfileImageBlock | | |
16 | - | sample-community | ProfileInfoBlock | | |
15 | + | joaosilva | ProfileInfoBlock | | |
17 | 16 | And the environment domain is "127.0.0.1" |
17 | + And "Joao Silva" is environment admin | |
18 | 18 | And "Joao Silva" is admin of "Sample Community" |
19 | 19 | |
20 | 20 | @selenium |
21 | 21 | Scenario: access profile control panel through profile blocks |
22 | 22 | Given I am logged in as "joaosilva" |
23 | - When I visit "/" and wait | |
24 | - And I follow "Control panel" within "div.profile-info-block" and wait | |
25 | - Then I should see "Sample Community" within "span.control-panel-title" | |
26 | - When I visit "/" and wait | |
27 | - And I follow "Control panel" within "div.profile-image-block" and wait | |
28 | - Then I should see "Sample Community" within "span.control-panel-title" | |
23 | + When I go to joaosilva's homepage | |
24 | + And I follow "Control panel" within ".profile-info-block" | |
25 | + Then I should see "Joao Silva" within "span.control-panel-title" | |
26 | + When I follow "Control panel" within ".profile-image-block" | |
27 | + Then I should see "Joao Silva" within "span.control-panel-title" | |
29 | 28 | |
30 | 29 | @selenium |
31 | 30 | Scenario: access user control panel |
32 | 31 | Given I am logged in as "joaosilva" |
33 | - When I visit "/" and wait | |
34 | - And I follow "joaosilva" and wait | |
32 | + When I go to the homepage | |
33 | + And I follow "joaosilva" | |
34 | + And I go to sample-community's homepage | |
35 | 35 | And I follow "Login" |
36 | 36 | And I fill in "joaosilva" for "Username" |
37 | 37 | And I fill in "123456" for "Password" |
38 | - And I press "Log in" and wait | |
39 | - And I follow "Control panel" within "div#user" and wait | |
38 | + And I press "Log in" | |
39 | + And I follow "Control panel" within "div#user" | |
40 | 40 | Then I should see "Joao Silva" within "span.control-panel-title" |
41 | 41 | |
42 | + # Looking for page title is problematic on selenium since it considers the | |
43 | + # title to be invibible. Checkout some information about this: | |
44 | + # * https://github.com/jnicklas/capybara/issues/863 | |
45 | + # * https://github.com/jnicklas/capybara/pull/953 | |
42 | 46 | @selenium |
43 | 47 | Scenario: access user page |
44 | 48 | Given I am logged in as "joaosilva" |
45 | - When I visit "/" and wait | |
46 | - And I follow "joaosilva" and wait | |
47 | - Then The page title should contain "Joao Silva" | |
49 | + When I go to the homepage | |
50 | + And I follow "joaosilva" | |
51 | + Then I should be on joaosilva's profile | |
52 | + And I should see "Joao Silva" within any "h1" | |
53 | + #And the page title should be "Joao Silva" | |
48 | 54 | |
49 | - @selenium | |
50 | 55 | Scenario: access community by domain |
51 | - When I go to the homepage | |
52 | - Then The page title should contain "Sample Community" | |
56 | + Given I go to the search communities page | |
57 | + When I follow "Sample Community" within ".search-profile-item" | |
58 | + Then the page title should be "Sample Community" | |
53 | 59 | |
54 | - @selenium | |
60 | + # This test is not working because the community domain isn't at all different | |
61 | + # from the environment (localhost / 127.0.0.1) | |
62 | + @fixme | |
55 | 63 | Scenario: Go to profile homepage after clicking on home button on not found page |
56 | - Given I am on the homepage | |
64 | + Given I am on sample-community's homepage | |
57 | 65 | When I go to /something-that-does-not-exist |
58 | 66 | And I follow "Go to the home page" |
59 | 67 | Then the page title should be "Sample Community - Colivre.net" |
60 | 68 | |
61 | - @selenium | |
62 | 69 | Scenario: Go to environment homepage after clicking on home button on not found page |
63 | 70 | Given I am on the homepage |
64 | - And I click on the logo | |
65 | - When I open /something-that-does-not-exist | |
71 | + When I go to /something-that-does-not-exist | |
66 | 72 | And I follow "Go to the home page" |
67 | - Then the page title should be "Colivre.net" | |
73 | + Then I should be on the homepage | |
74 | + And the page title should be "Colivre.net" | |
68 | 75 | |
69 | 76 | @selenium |
70 | 77 | Scenario: Compose link to administration with environment domain |
71 | 78 | Given I am logged in as "joaosilva" |
72 | - When I visit "/" and wait | |
73 | - Then I should see "Administration" linking to "http://127.0.0.1/admin" | |
79 | + Then I should see "Administration" linking to "http://127.0.0.1.*/admin" | ... | ... |
features/profile_search.feature
... | ... | @@ -14,7 +14,7 @@ Feature: search inside a profile |
14 | 14 | | joaosilva | whales and dolphins | this is an article about whales and dolphins | |
15 | 15 | |
16 | 16 | Scenario: search on profile |
17 | - Given I go to Joao Silva's profile | |
17 | + Given I go to joaosilva's profile | |
18 | 18 | And I fill in "q" with "bees" |
19 | 19 | And I press "Search" |
20 | 20 | Then I should see "bees and butterflies" within ".main-block" |
... | ... | @@ -25,7 +25,7 @@ Feature: search inside a profile |
25 | 25 | | owner | name | start_date | |
26 | 26 | | joaosilva | Group meeting | 2009-10-01 | |
27 | 27 | | joaosilva | John Doe's birthday | 2009-09-01 | |
28 | - When I go to Joao Silva's profile | |
28 | + When I go to joaosilva's profile | |
29 | 29 | And I fill in "q" with "birthday" |
30 | 30 | And I press "Search" |
31 | 31 | Then I should see "John Doe's birthday" within ".main-block" |
... | ... | @@ -35,7 +35,7 @@ Feature: search inside a profile |
35 | 35 | Given the following blocks |
36 | 36 | | owner | type | |
37 | 37 | | joaosilva | ProfileSearchBlock | |
38 | - When I go to Joao Silva's profile | |
38 | + When I go to joaosilva's profile | |
39 | 39 | And I fill in "q" with "bees" within ".profile-search-block" |
40 | 40 | And I press "Search" |
41 | 41 | Then I should see "bees and butterflies" within ".main-block" |
... | ... | @@ -45,14 +45,14 @@ Feature: search inside a profile |
45 | 45 | | owner | name | body | published | |
46 | 46 | | joaosilva | published article | this is a public article | true | |
47 | 47 | | joaosilva | unpublished article | this is a private article | false | |
48 | - And I go to Joao Silva's profile | |
48 | + And I go to joaosilva's profile | |
49 | 49 | And I fill in "q" with "article" |
50 | 50 | And I press "Search" |
51 | 51 | Then I should see "public article" within ".main-block" |
52 | 52 | And I should not see "private article" within ".main-block" |
53 | 53 | |
54 | 54 | Scenario: search on environment |
55 | - Given I go to Joao Silva's profile | |
55 | + Given I go to joaosilva's profile | |
56 | 56 | And I fill in "q" with "bees" |
57 | 57 | And I choose "General" |
58 | 58 | And I press "Search" | ... | ... |
features/publish_article.feature
... | ... | @@ -20,48 +20,48 @@ Feature: publish article |
20 | 20 | Scenario: publishing an article that doesn't exists in the community |
21 | 21 | Given I am logged in as "joaosilva" |
22 | 22 | And "Joao Silva" is a member of "Sample Community" |
23 | - And I am on Joao Silva's control panel | |
23 | + And I am on joaosilva's control panel | |
24 | 24 | And I follow "Manage Content" |
25 | 25 | And I follow "Spread" |
26 | 26 | And I check "Sample Community" |
27 | 27 | And I press "Spread this" |
28 | - And I go to Sample Community's sitemap | |
28 | + And I go to sample-community's sitemap | |
29 | 29 | When I follow "Sample Article" |
30 | 30 | Then I should see "This is the first published article" |
31 | 31 | |
32 | 32 | Scenario: publishing an article with a different name |
33 | 33 | Given I am logged in as "joaosilva" |
34 | 34 | And "Joao Silva" is a member of "Sample Community" |
35 | - And I am on Joao Silva's control panel | |
35 | + And I am on joaosilva's control panel | |
36 | 36 | And I follow "Manage Content" |
37 | 37 | And I follow "Spread" |
38 | 38 | And I check "Sample Community" |
39 | 39 | And I fill in "Title" with "Another name" |
40 | 40 | And I press "Spread this" |
41 | - When I go to Sample Community's sitemap | |
41 | + When I go to sample-community's sitemap | |
42 | 42 | Then I should see "Another name" |
43 | 43 | And I should not see "Sample Article" |
44 | 44 | |
45 | - @selenium | |
45 | + @selenium @ignore-hidden-elements | |
46 | 46 | Scenario: getting an error message when publishing article with same name |
47 | 47 | Given I am logged in as "joaosilva" |
48 | 48 | And "Joao Silva" is a member of "Sample Community" |
49 | - And I am on Joao Silva's control panel | |
50 | - And I follow "Manage Content" and wait | |
49 | + And I am on joaosilva's control panel | |
50 | + And I follow "Manage Content" | |
51 | 51 | And I follow "Spread" |
52 | 52 | And I check "Sample Community" |
53 | 53 | And I press "Spread this" |
54 | 54 | And I am not logged in |
55 | 55 | And I am logged in as "mariasilva" |
56 | 56 | And "Maria Silva" is a member of "Sample Community" |
57 | - And I am on Maria Silva's control panel | |
57 | + And I am on mariasilva's control panel | |
58 | 58 | And I follow "Manage Content" |
59 | 59 | And I follow "New content" |
60 | - And I follow "Text article with Textile markup language" and wait | |
60 | + And I follow "Text article with Textile markup language" | |
61 | 61 | And I fill in the following: |
62 | 62 | | Title | Sample Article | |
63 | 63 | | Text | this is Maria's first published article | |
64 | - And I press "Save" and wait | |
64 | + And I press "Save" | |
65 | 65 | And I follow "Spread" |
66 | 66 | And I check "Sample Community" |
67 | 67 | When I press "Spread this" |
... | ... | @@ -77,13 +77,13 @@ Feature: publish article |
77 | 77 | And "Joao Silva" is a member of "Sample Community" |
78 | 78 | And "Joao Silva" is a member of "Another Community1" |
79 | 79 | And "Joao Silva" is a member of "Another Community2" |
80 | - And I am on Joao Silva's control panel | |
80 | + And I am on joaosilva's control panel | |
81 | 81 | And I follow "Manage Content" |
82 | 82 | And I follow "Spread" |
83 | 83 | And I check "Sample Community" |
84 | 84 | And I press "Spread this" |
85 | 85 | And I should not see "This article name is already in use in the following community(ies):" |
86 | - And I am on Joao Silva's control panel | |
86 | + And I am on joaosilva's control panel | |
87 | 87 | And I follow "Manage Content" |
88 | 88 | And I follow "Spread" |
89 | 89 | And I check "Sample Community" |
... | ... | @@ -91,30 +91,30 @@ Feature: publish article |
91 | 91 | And I check "Another Community2" |
92 | 92 | When I press "Spread this" |
93 | 93 | Then I should see "The title (article name) is already being used by another article, please use another title." |
94 | - When I go to Another Community1's sitemap | |
94 | + When I go to another-community1's sitemap | |
95 | 95 | Then I should see "Sample Article" |
96 | - When I go to Another Community2's sitemap | |
96 | + When I go to another-community2's sitemap | |
97 | 97 | Then I should see "Sample Article" |
98 | 98 | |
99 | 99 | Scenario: publishing articles with the same name in a moderated community |
100 | 100 | Given I am logged in as "joaosilva" |
101 | 101 | And "Joao Silva" is a member of "Sample Community" |
102 | 102 | And "Joao Silva" is admin of "Sample Community" |
103 | - And I am on Sample Community's control panel | |
103 | + And I am on sample-community's control panel | |
104 | 104 | And I follow "Community Info and settings" |
105 | 105 | And I choose "profile_data_moderated_articles_true" |
106 | 106 | And I press "Save" |
107 | - And I am on Joao Silva's control panel | |
107 | + And I am on joaosilva's control panel | |
108 | 108 | And I follow "Manage Content" |
109 | 109 | And I follow "Spread" |
110 | 110 | And I check "Sample Community" |
111 | 111 | And I press "Spread this" |
112 | - And I am on Joao Silva's control panel | |
112 | + And I am on joaosilva's control panel | |
113 | 113 | And I follow "Manage Content" |
114 | 114 | And I follow "Spread" |
115 | 115 | And I check "Sample Community" |
116 | 116 | And I press "Spread this" |
117 | - And I am on Sample Community's control panel | |
117 | + And I am on sample-community's control panel | |
118 | 118 | And I follow "Tasks" |
119 | 119 | And I choose "Accept" |
120 | 120 | And I press "Apply!" |
... | ... | @@ -126,17 +126,17 @@ Feature: publish article |
126 | 126 | Scenario: ask to publish an article that was deleted before approval |
127 | 127 | Given I am logged in as "joaosilva" |
128 | 128 | And "Joao Silva" is admin of "Sample Community" |
129 | - And I am on Sample Community's control panel | |
129 | + And I am on sample-community's control panel | |
130 | 130 | And I follow "Community Info and settings" |
131 | 131 | And I choose "profile_data_moderated_articles_true" |
132 | 132 | And I press "Save" |
133 | - And I am on Joao Silva's control panel | |
133 | + And I am on joaosilva's control panel | |
134 | 134 | And I follow "Manage Content" |
135 | 135 | And I follow "Spread" |
136 | 136 | And I check "Sample Community" |
137 | 137 | And I press "Spread this" |
138 | 138 | And "joaosilva" has no articles |
139 | - And I am on Sample Community's control panel | |
139 | + And I am on sample-community's control panel | |
140 | 140 | When I follow "Tasks" |
141 | 141 | Then I should see "The article was removed." |
142 | 142 | And I press "Apply!" | ... | ... |
features/register_enterprise.feature
... | ... | @@ -9,7 +9,7 @@ Feature: register enterprise |
9 | 9 | | joaosilva | Joao Silva | joaosilva@example.com | |
10 | 10 | |
11 | 11 | And I am logged in as "joaosilva" |
12 | - And I am on Joao Silva's control panel | |
12 | + And I am on joaosilva's control panel | |
13 | 13 | And feature "enterprise_registration" is enabled on environment |
14 | 14 | |
15 | 15 | Scenario: enterprise registration is disabled by admin |
... | ... | @@ -92,7 +92,7 @@ Feature: register enterprise |
92 | 92 | And I press "Next" |
93 | 93 | Then I should see "Enterprise registration completed" |
94 | 94 | And I am logged in as admin |
95 | - And I go to the Control panel | |
95 | + And I go to admin_user's control panel | |
96 | 96 | When I follow "Tasks" within ".control-panel" |
97 | 97 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
98 | 98 | And the first mail is to admin_user@example.com |
... | ... | @@ -100,10 +100,11 @@ Feature: register enterprise |
100 | 100 | And I press "Apply!" |
101 | 101 | Then the last mail is to joaosilva@example.com |
102 | 102 | And I am logged in as "joaosilva" |
103 | - And I am on Joao Silva's control panel | |
103 | + And I am on joaosilva's control panel | |
104 | 104 | When I follow "Manage my groups" |
105 | 105 | Then I should see "My Enterprise" |
106 | 106 | |
107 | + @selenium | |
107 | 108 | Scenario: a user register an enterprise successfully through the admin |
108 | 109 | validator method and the admin rejects |
109 | 110 | Given organization_approval_method is "admin" on environment |
... | ... | @@ -119,7 +120,7 @@ Feature: register enterprise |
119 | 120 | And I press "Next" |
120 | 121 | Then I should see "Enterprise registration completed" |
121 | 122 | And I am logged in as admin |
122 | - And I go to the Control panel | |
123 | + And I go to admin_user's control panel | |
123 | 124 | When I follow "Tasks" within ".control-panel" |
124 | 125 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
125 | 126 | And the first mail is to admin_user@example.com |
... | ... | @@ -128,7 +129,7 @@ Feature: register enterprise |
128 | 129 | And I press "Apply!" |
129 | 130 | Then the last mail is to joaosilva@example.com |
130 | 131 | And I am logged in as "joaosilva" |
131 | - And I am on Joao Silva's control panel | |
132 | + And I am on joaosilva's control panel | |
132 | 133 | When I follow "Manage my groups" |
133 | 134 | Then I should not see "My Enterprise" |
134 | 135 | |
... | ... | @@ -156,15 +157,16 @@ Feature: register enterprise |
156 | 157 | When I choose "Validator" |
157 | 158 | And I press "Confirm" |
158 | 159 | Then I should see "Enterprise registration completed" |
159 | - And I am on Validator's control panel | |
160 | + And I am on validator's control panel | |
160 | 161 | When I follow "Tasks" |
161 | 162 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
162 | 163 | And I choose "Accept" |
163 | 164 | And I press "Apply!" |
164 | - And I am on Joao Silva's control panel | |
165 | + And I am on joaosilva's control panel | |
165 | 166 | When I follow "Manage my groups" |
166 | 167 | Then I should see "My Enterprise" |
167 | 168 | |
169 | + @selenium | |
168 | 170 | Scenario: a user register an enterprise successfully through the region |
169 | 171 | validator method and the validator rejects |
170 | 172 | Given organization_approval_method is "region" on environment |
... | ... | @@ -189,13 +191,13 @@ Feature: register enterprise |
189 | 191 | When I choose "Validator" |
190 | 192 | And I press "Confirm" |
191 | 193 | Then I should see "Enterprise registration completed" |
192 | - And I am on Validator's control panel | |
194 | + And I am on validator's control panel | |
193 | 195 | When I follow "Tasks" |
194 | 196 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
195 | 197 | And I choose "Reject" |
196 | 198 | And I fill in "Rejection explanation" with "This enterprise has some irregularities." |
197 | 199 | And I press "Apply" |
198 | - And I am on Joao Silva's control panel | |
200 | + And I am on joaosilva's control panel | |
199 | 201 | When I follow "Manage my groups" |
200 | 202 | Then I should not see "My Enterprise" |
201 | 203 | ... | ... |
features/search.feature
... | ... | @@ -9,7 +9,7 @@ Feature: search |
9 | 9 | |
10 | 10 | Scenario: show empty results in all enabled assets |
11 | 11 | Given I go to the search page |
12 | - And I fill in "query" with "Anything" | |
12 | + And I fill in "search-input" with "Anything" | |
13 | 13 | And I press "Search" |
14 | 14 | Then I should see "People" within ".search-results-people" |
15 | 15 | And I should see "None" within ".search-results-people" |
... | ... | @@ -30,7 +30,7 @@ Feature: search |
30 | 30 | | joaosilva | Joao Silva | |
31 | 31 | | josearaujo | Jose Araujo | |
32 | 32 | When I go to the search page |
33 | - And I fill in "query" with "Silva" | |
33 | + And I fill in "search-input" with "Silva" | |
34 | 34 | And I press "Search" |
35 | 35 | Then I should see "Joao Silva" within ".common-profile-list-block" |
36 | 36 | And I should not see "Jose Araujo" |
... | ... | @@ -51,7 +51,7 @@ Feature: search |
51 | 51 | | joaosilva | article #8 | |
52 | 52 | | joaosilva | article #9 | |
53 | 53 | When I go to the search page |
54 | - And I fill in "query" with "article" | |
54 | + And I fill in "search-input" with "article" | |
55 | 55 | And I press "Search" |
56 | 56 | Then I should see "article #8" within ".search-results-articles" |
57 | 57 | And I should not see "article #9" within ".search-results-articles" |
... | ... | @@ -65,7 +65,7 @@ Feature: search |
65 | 65 | | boring-community | Boring community | semterrinha | |
66 | 66 | | fancy-community | Fancy community | agrotox | |
67 | 67 | And I go to the search page |
68 | - And I fill in "query" with "fancy" | |
68 | + And I fill in "search-input" with "fancy" | |
69 | 69 | And I press "Search" |
70 | 70 | Then I should see "Fancy community" within ".common-profile-list-block" |
71 | 71 | And I should not see "Boring community" |
... | ... | @@ -76,7 +76,7 @@ Feature: search |
76 | 76 | | shop1 | Shoes shop | |
77 | 77 | | shop2 | Fruits shop | |
78 | 78 | And I go to the search page |
79 | - And I fill in "query" with "shoes" | |
79 | + And I fill in "search-input" with "shoes" | |
80 | 80 | And I press "Search" |
81 | 81 | Then I should see "Shoes shop" within ".common-profile-list-block" |
82 | 82 | And I should not see "Fruits shop" |
... | ... | @@ -90,7 +90,7 @@ Feature: search |
90 | 90 | | joaosilva | bees and butterflies | this is an article about bees and butterflies | |
91 | 91 | | joaosilva | whales and dolphins | this is an article about whales and dolphins | |
92 | 92 | When I go to the search page |
93 | - And I fill in "query" with "whales" | |
93 | + And I fill in "search-input" with "whales" | |
94 | 94 | And I press "Search" |
95 | 95 | Then I should see "whales and dolphins" within "div.search-results-articles" |
96 | 96 | And I should not see "bees and butterflies" |
... | ... | @@ -107,7 +107,7 @@ Feature: search |
107 | 107 | | colivre-ent | development | social networks consultancy | |
108 | 108 | | colivre-ent | development | wikis consultancy | |
109 | 109 | When I go to the search page |
110 | - And I fill in "query" with "wikis" | |
110 | + And I fill in "search-input" with "wikis" | |
111 | 111 | And I press "Search" |
112 | 112 | Then I should see "wikis consultancy" within "div.search-results-products" |
113 | 113 | And I should not see "social networks consultancy" |
... | ... | @@ -121,7 +121,7 @@ Feature: search |
121 | 121 | | nice-people | Group meeting | 2009-10-01 | |
122 | 122 | | nice-people | John Doe's birthday | 2009-09-01 | |
123 | 123 | When I go to the search page |
124 | - And I fill in "query" with "birthday" | |
124 | + And I fill in "search-input" with "birthday" | |
125 | 125 | And I press "Search" |
126 | 126 | Then I should see "John Doe's birthday" within "div.search-results-events" |
127 | 127 | And I should not see "Group meeting" |
... | ... | @@ -140,7 +140,7 @@ Feature: search |
140 | 140 | | owner | name | category | |
141 | 141 | | colivre_dev | Noosfero platform | Development | |
142 | 142 | When I go to the search page |
143 | - And I fill in "query" with "noosfero" | |
143 | + And I fill in "search-input" with "noosfero" | |
144 | 144 | And I press "Search" |
145 | 145 | Then I should see "Colivre - Noosfero dev." within "div.search-results-enterprises" |
146 | 146 | And I should see "Noosfero users" within "div.search-results-communities" | ... | ... |
features/search_communities.feature
... | ... | @@ -28,7 +28,7 @@ Feature: search communities |
28 | 28 | |
29 | 29 | Scenario: simple search for community |
30 | 30 | When I go to the search communities page |
31 | - And I fill in "query" with "noosfero" | |
31 | + And I fill in "search-input" with "noosfero" | |
32 | 32 | And I press "Search" |
33 | 33 | Then I should see "Noosfero Community" within "#search-results" |
34 | 34 | And I should see "Noosfero Community" within ".only-one-result-box" |
... | ... | @@ -42,7 +42,7 @@ Feature: search communities |
42 | 42 | | identifier | name | category | |
43 | 43 | | noos-comm | Noosfero Community | software-livre | |
44 | 44 | When I go to the search communities page |
45 | - And I fill in "query" with "software livre" | |
45 | + And I fill in "search-input" with "software livre" | |
46 | 46 | And I press "Search" |
47 | 47 | Then I should see "Noosfero" within "#search-results" |
48 | 48 | |
... | ... | @@ -57,7 +57,7 @@ Feature: search communities |
57 | 57 | | identifier | name | category | |
58 | 58 | | linux | Linux Community | software-livre | |
59 | 59 | When I go to the search communities page |
60 | - And I fill in "query" with "Linux" | |
60 | + And I fill in "search-input" with "Linux" | |
61 | 61 | And I press "Search" |
62 | 62 | Then I should see "Temáticas" within "#facets-menu" |
63 | 63 | |
... | ... | @@ -66,7 +66,7 @@ Feature: search communities |
66 | 66 | | identifier | name | |
67 | 67 | | luwac | Linux Users Without a Clue | |
68 | 68 | When I go to the search communities page |
69 | - And I fill in "query" with "Linux Clue" | |
69 | + And I fill in "search-input" with "Linux Clue" | |
70 | 70 | And I press "Search" |
71 | 71 | Then I should see "Linux Users Without a Clue" within "#search-results" |
72 | 72 | |
... | ... | @@ -83,7 +83,7 @@ Feature: search communities |
83 | 83 | | noos-dev | Noosfero Developers | software-livre | |
84 | 84 | | facebook | Facebook Developers | big-brother | |
85 | 85 | When I go to the search communities page |
86 | - And I fill in "query" with "Developers" | |
86 | + And I fill in "search-input" with "Developers" | |
87 | 87 | And I press "Search" |
88 | 88 | And I follow "Software Livre" within "#facets-menu" |
89 | 89 | Then I should see "Noosfero Developers" within "#search-results" |
... | ... | @@ -106,10 +106,10 @@ Feature: search communities |
106 | 106 | | rails-dev | Rails Developers | other-category | |
107 | 107 | | rails-usr | Rails Users | software-livre | |
108 | 108 | When I go to the search communities page |
109 | - And I fill in "query" with "Developers" | |
109 | + And I fill in "search-input" with "Developers" | |
110 | 110 | And I press "Search" |
111 | 111 | And I follow "Software Livre" within "#facets-menu" |
112 | - And I fill in "query" with "Rails" | |
112 | + And I fill in "search-input" with "Rails" | |
113 | 113 | And I press "Search" |
114 | 114 | Then I should see "Rails Users" within "#search-results" |
115 | 115 | And I should not see "Rails Developers" | ... | ... |
features/search_contents.feature
... | ... | @@ -26,7 +26,7 @@ Feature: search contents |
26 | 26 | Then I should see "whales and dolphins" within ".search-text-article-item" |
27 | 27 | And I should see "whales and dolphins" within ".only-one-result-box" |
28 | 28 | And I should not see "bees and butterflies" |
29 | - And I should see content inside ".icon-content-textile-article" | |
29 | + And The page should contain ".icon-content-textile-article" | |
30 | 30 | When I follow "whales and dolphins" |
31 | 31 | Then I should be on article "whales and dolphins" |
32 | 32 | |
... | ... | @@ -155,19 +155,19 @@ Feature: search contents |
155 | 155 | |
156 | 156 | Scenario: link to author on search results |
157 | 157 | When I go to the search articles page |
158 | - And I fill in "query" with "whales" | |
158 | + And I fill in "search-input" with "whales" | |
159 | 159 | And I press "Search" |
160 | 160 | Then I should see "Author" within ".search-article-author" |
161 | 161 | Then I should see "Joao Silva" within ".search-article-author-name" |
162 | 162 | When I follow "Joao Silva" |
163 | - Then I should be on Joao Silva's profile | |
163 | + Then I should be on joaosilva's profile | |
164 | 164 | |
165 | 165 | Scenario: show clean description excerpt on search results |
166 | 166 | Given the following articles |
167 | 167 | | owner | name | body | |
168 | 168 | | joaosilva | Herreninsel | The island <b>Herreninsel</b>, with an area of 238 hectares, is the biggest of the three main islands of the Chiemsee, a lake in the state of Bavaria, Germany. Together with the islands of Fraueninsel and Krautinsel it forms the municipality of Chiemsee. | |
169 | 169 | When I go to the search articles page |
170 | - And I fill in "query" with "island" | |
170 | + And I fill in "search-input" with "island" | |
171 | 171 | And I press "Search" |
172 | 172 | Then I should see "Description" within ".search-article-description" |
173 | 173 | And I should see "The island Herreninsel, with" within ".search-article-description" |
... | ... | @@ -178,7 +178,7 @@ Feature: search contents |
178 | 178 | | owner | name | body | |
179 | 179 | | joaosilva | Herreninsel | | |
180 | 180 | When I go to the search articles page |
181 | - And I fill in "query" with "Herreninsel" | |
181 | + And I fill in "search-input" with "Herreninsel" | |
182 | 182 | And I press "Search" |
183 | 183 | Then I should see "None" within ".search-article-description" |
184 | 184 | |
... | ... | @@ -188,7 +188,7 @@ Feature: search contents |
188 | 188 | | bees and butterflies | Hymenoptera | |
189 | 189 | | bees and butterflies | Lepidoptera | |
190 | 190 | When I go to the search articles page |
191 | - And I fill in "query" with "bees" | |
191 | + And I fill in "search-input" with "bees" | |
192 | 192 | And I press "Search" |
193 | 193 | Then I should see "Tags" within ".search-article-tags" |
194 | 194 | And I should see "Hymenoptera" within ".search-article-tags" |
... | ... | @@ -198,7 +198,7 @@ Feature: search contents |
198 | 198 | |
199 | 199 | Scenario: show empty tags in search results |
200 | 200 | When I go to the search articles page |
201 | - And I fill in "query" with "dolphins" | |
201 | + And I fill in "search-input" with "dolphins" | |
202 | 202 | And I press "Search" |
203 | 203 | Then I should see "None" within ".search-article-tags" |
204 | 204 | |
... | ... | @@ -210,14 +210,14 @@ Feature: search contents |
210 | 210 | | owner | name | body | category | |
211 | 211 | | joaosilva | Sergei Sorokin | Retired ice hockey player | soviet | |
212 | 212 | When I go to the search articles page |
213 | - And I fill in "query" with "hockey" | |
213 | + And I fill in "search-input" with "hockey" | |
214 | 214 | And I press "Search" |
215 | 215 | Then I should see "Categories" within ".search-article-categories" |
216 | 216 | And I should see "Soviet" within ".search-article-category" |
217 | 217 | |
218 | 218 | Scenario: show empty categories on search results |
219 | 219 | When I go to the search articles page |
220 | - And I fill in "query" with "whales" | |
220 | + And I fill in "search-input" with "whales" | |
221 | 221 | And I press "Search" |
222 | 222 | Then I should see "whales and dolphins" |
223 | 223 | And I should see "None" within ".search-article-categories-container" |
... | ... | @@ -243,7 +243,7 @@ Feature: search contents |
243 | 243 | | owner | name | body | category | |
244 | 244 | | joaosilva | using noosfero | noosfero is a great CMS | software-livre | |
245 | 245 | When I go to the search articles page |
246 | - And I fill in "query" with "Software" | |
246 | + And I fill in "search-input" with "Software" | |
247 | 247 | And I press "Search" |
248 | 248 | Then I should see "using noosfero" within "#search-results" |
249 | 249 | And I should not see "bees and butterflies" |
... | ... | @@ -255,7 +255,7 @@ Feature: search contents |
255 | 255 | | joaosilva | JSilva blog | |
256 | 256 | When I search contents for "JSilva" |
257 | 257 | Then I should see "JSilva blog" within ".search-result-title" |
258 | - And I should see content inside ".icon-content-blog" | |
258 | + And The page should contain ".icon-content-blog" | |
259 | 259 | |
260 | 260 | Scenario: show and link last posts on blog search results |
261 | 261 | Given the following blogs |
... | ... | @@ -286,7 +286,7 @@ Feature: search contents |
286 | 286 | |
287 | 287 | Scenario: see default facets when searching |
288 | 288 | When I go to the search articles page |
289 | - And I fill in "query" with "bees" | |
289 | + And I fill in "search-input" with "bees" | |
290 | 290 | And I press "Search" |
291 | 291 | Then I should see "Type" within "#facets-menu" |
292 | 292 | And I should see "Published date" within "#facets-menu" |
... | ... | @@ -295,7 +295,7 @@ Feature: search contents |
295 | 295 | |
296 | 296 | Scenario: find enterprises without exact query |
297 | 297 | When I go to the search articles page |
298 | - And I fill in "query" with "article bees" | |
298 | + And I fill in "search-input" with "article bees" | |
299 | 299 | And I press "Search" |
300 | 300 | Then I should see "bees and butterflies" within "#search-results" |
301 | 301 | |
... | ... | @@ -309,7 +309,7 @@ Feature: search contents |
309 | 309 | | joaosilva | noosfero and debian | this is an article about noosfero and debian | software-livre | |
310 | 310 | | joaosilva | facebook and 1984 | this is an article about facebook and 1984 | big-brother | |
311 | 311 | When I go to the search articles page |
312 | - And I fill in "query" with "this is an article" | |
312 | + And I fill in "search-input" with "this is an article" | |
313 | 313 | And I press "Search" |
314 | 314 | # Then show me the page |
315 | 315 | And I follow "Software Livre" within "#facets-menu" |
... | ... | @@ -329,10 +329,10 @@ Feature: search contents |
329 | 329 | | joaosilva | facebook and 1984 | this is an article about facebook and 1984 | big-brother | |
330 | 330 | | joaosilva | facebook defense | facebook is not so bad | software-livre | |
331 | 331 | When I go to the search articles page |
332 | - And I fill in "query" with "this is an article" | |
332 | + And I fill in "search-input" with "this is an article" | |
333 | 333 | And I press "Search" |
334 | 334 | And I follow "Software Livre" within "#facets-menu" |
335 | - And I fill in "query" with "facebook" | |
335 | + And I fill in "search-input" with "facebook" | |
336 | 336 | And I press "Search" |
337 | 337 | Then I should see "facebook defense" within "#search-results" |
338 | 338 | And I should not see "1984" | ... | ... |
features/search_enterprises.feature
... | ... | @@ -14,6 +14,7 @@ Feature: search enterprises |
14 | 14 | | Temáticas | |
15 | 15 | |
16 | 16 | Scenario: show recent enterprises on index |
17 | + Given there are no pending jobs | |
17 | 18 | When I go to the search enterprises page |
18 | 19 | Then I should see "Shoes shop" within "#search-results" |
19 | 20 | And I should see Shoes shop's profile image |
... | ... | @@ -26,7 +27,7 @@ Feature: search enterprises |
26 | 27 | |
27 | 28 | Scenario: simple search for enterprise |
28 | 29 | When I go to the search enterprises page |
29 | - And I fill in "query" with "shoes" | |
30 | + And I fill in "search-input" with "shoes" | |
30 | 31 | And I press "Search" |
31 | 32 | Then I should see "Shoes shop" within ".only-one-result-box" |
32 | 33 | And I should see Shoes shop's profile image |
... | ... | @@ -36,7 +37,7 @@ Feature: search enterprises |
36 | 37 | Scenario: link to enterprise homepage on search results |
37 | 38 | Given I search enterprises for "shoes" |
38 | 39 | When I follow "Shoes shop" |
39 | - Then I should be on Shoes shop's profile | |
40 | + Then I should be on shop1's profile | |
40 | 41 | |
41 | 42 | Scenario: show clean enterprise homepage on search results |
42 | 43 | Given the following articles |
... | ... | @@ -56,13 +57,13 @@ Feature: search enterprises |
56 | 57 | |
57 | 58 | Scenario: see default facets when searching |
58 | 59 | When I go to the search enterprises page |
59 | - And I fill in "query" with "shoes" | |
60 | + And I fill in "search-input" with "shoes" | |
60 | 61 | And I press "Search" |
61 | 62 | Then I should see "City" within "#facets-menu" |
62 | 63 | |
63 | 64 | Scenario: see category facets when searching |
64 | 65 | When I go to the search enterprises page |
65 | - And I fill in "query" with "shoes" | |
66 | + And I fill in "search-input" with "shoes" | |
66 | 67 | And I press "Search" |
67 | 68 | Then I should see "Temáticas" within "#facets-menu" |
68 | 69 | |
... | ... | @@ -74,7 +75,7 @@ Feature: search enterprises |
74 | 75 | | identifier | name | region | |
75 | 76 | | art-pp | Artesanato PP | Pres. Prudente | |
76 | 77 | When I go to the search enterprises page |
77 | - And I fill in "query" with "Artesanato" | |
78 | + And I fill in "search-input" with "Artesanato" | |
78 | 79 | And I press "Search" |
79 | 80 | Then I should see "Pres. Prudente" within "#facet-menu-f_region" |
80 | 81 | And I should see ", SP" within "#facet-menu-f_region" |
... | ... | @@ -89,7 +90,7 @@ Feature: search enterprises |
89 | 90 | | identifier | name | region | |
90 | 91 | | art-pp | Artesanato PP | Pres. Prudente | |
91 | 92 | When I go to the search enterprises page |
92 | - And I fill in "query" with "Prudente" | |
93 | + And I fill in "search-input" with "Prudente" | |
93 | 94 | And I press "Search" |
94 | 95 | Then I should see "Artesanato PP" within "#search-results" |
95 | 96 | |
... | ... | @@ -101,7 +102,7 @@ Feature: search enterprises |
101 | 102 | | identifier | name | category | |
102 | 103 | | noosfero | Noosfero | software-livre | |
103 | 104 | When I go to the search enterprises page |
104 | - And I fill in "query" with "software" | |
105 | + And I fill in "search-input" with "software" | |
105 | 106 | And I press "Search" |
106 | 107 | Then I should see "Noosfero" within "#search-results" |
107 | 108 | And I should see "Software Livre" within ".search-enterprise-category" |
... | ... | @@ -123,7 +124,7 @@ Feature: search enterprises |
123 | 124 | | identifier | name | |
124 | 125 | | noosfero | Noosfero Developers Association | |
125 | 126 | When I go to the search enterprises page |
126 | - And I fill in "query" with "Noosfero Association" | |
127 | + And I fill in "search-input" with "Noosfero Association" | |
127 | 128 | And I press "Search" |
128 | 129 | Then I should see "Noosfero Developers Association" within "#search-results" |
129 | 130 | |
... | ... | @@ -136,7 +137,7 @@ Feature: search enterprises |
136 | 137 | | noosfero | Noosfero Developers | software-livre | |
137 | 138 | | facebook | Facebook Developers | | |
138 | 139 | When I go to the search enterprises page |
139 | - And I fill in "query" with "Developers" | |
140 | + And I fill in "search-input" with "Developers" | |
140 | 141 | And I press "Search" |
141 | 142 | And I follow "Software Livre" within "#facets-menu" |
142 | 143 | Then I should see "Noosfero Developers" within "#search-results" |
... | ... | @@ -155,10 +156,10 @@ Feature: search enterprises |
155 | 156 | | rails-dev | Rails Developers | | |
156 | 157 | | rails-usr | Rails Users | software-livre | |
157 | 158 | When I go to the search enterprises page |
158 | - And I fill in "query" with "Developers" | |
159 | + And I fill in "search-input" with "Developers" | |
159 | 160 | And I press "Search" |
160 | 161 | And I follow "Software Livre" within "#facets-menu" |
161 | - And I fill in "query" with "Rails" | |
162 | + And I fill in "search-input" with "Rails" | |
162 | 163 | And I press "Search" |
163 | 164 | Then I should see "Rails Users" within "#search-results" |
164 | 165 | And I should not see "Rails Developers" | ... | ... |