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,16 +13,30 @@ Alessandro Palmeira + Caio Salgado <alessandro.palmeira@gmail.com> | ||
13 | Alessandro Palmeira + Caio Salgado <caio.csalgado@gmail.com> | 13 | Alessandro Palmeira + Caio Salgado <caio.csalgado@gmail.com> |
14 | Alessandro Palmeira + Caio Salgado + Diego Araújo + João M. M. da Silva <diegoamc90@gmail.com> | 14 | Alessandro Palmeira + Caio Salgado + Diego Araújo + João M. M. da Silva <diegoamc90@gmail.com> |
15 | Alessandro Palmeira + Carlos Morais <alessandro.palmeira@gmail.com> | 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 | Alessandro Palmeira + Diego Araújo <alessandro.palmeira@gmail.com> | 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 | Alessandro Palmeira + Diego Araújo <diegoamc90@gmail.com> | 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 | Alessandro Palmeira + Diego Araújo + Pedro Leal <diegoamc90@gmail.com> | 28 | Alessandro Palmeira + Diego Araújo + Pedro Leal <diegoamc90@gmail.com> |
19 | Alessandro Palmeira + Diego Araújo + Pedro Leal + João M. M. da Silva <diegoamc90@gmail.com> | 29 | Alessandro Palmeira + Diego Araújo + Pedro Leal + João M. M. da Silva <diegoamc90@gmail.com> |
20 | Alessandro Palmeira + Diego Araujo + Rafael Manzo <alessandro.palmeira@gmail.com> | 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 | Alessandro Palmeira + Jefferson Fernandes <alessandro.palmeira@gmail.com> | 33 | Alessandro Palmeira + Jefferson Fernandes <alessandro.palmeira@gmail.com> |
22 | Alessandro Palmeira + João M. M. da Silva <alessandro.palmeira@gmail.com> | 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 | Alessandro Palmeira + João M. M. da Silva + Renan Teruo <alessandro.palmeira@gmail.com> | 36 | Alessandro Palmeira + João M. M. da Silva + Renan Teruo <alessandro.palmeira@gmail.com> |
24 | Alessandro Palmeira + João M. M. Silva <alessandro.palmeira@gmail.com> | 37 | Alessandro Palmeira + João M. M. Silva <alessandro.palmeira@gmail.com> |
25 | Alessandro Palmeira + Paulo Meirelles <alessandro.palmeira@gmail.com> | 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 | Alessandro Palmeira + Rafael Manzo <alessandro.palmeira@gmail.com> | 40 | Alessandro Palmeira + Rafael Manzo <alessandro.palmeira@gmail.com> |
27 | Antonio Terceiro + Carlos Morais <terceiro@colivre.coop.br> | 41 | Antonio Terceiro + Carlos Morais <terceiro@colivre.coop.br> |
28 | Antonio Terceiro + Paulo Meirelles <terceiro@colivre.coop.br> | 42 | Antonio Terceiro + Paulo Meirelles <terceiro@colivre.coop.br> |
@@ -32,6 +46,7 @@ Braulio Bhavamitra <brauliobo@gmail.com> | @@ -32,6 +46,7 @@ Braulio Bhavamitra <brauliobo@gmail.com> | ||
32 | Bráulio Bhavamitra <brauliobo@gmail.com> | 46 | Bráulio Bhavamitra <brauliobo@gmail.com> |
33 | Caio <caio.csalgado@gmail.com> | 47 | Caio <caio.csalgado@gmail.com> |
34 | Caio + Diego + Pedro + João <caio.csalgado@gmail.com> | 48 | Caio + Diego + Pedro + João <caio.csalgado@gmail.com> |
49 | +Caio Formiga <caio.formiga@gmail.com> | ||
35 | Caio, Pedro <caio.csalgado@gmail.com> | 50 | Caio, Pedro <caio.csalgado@gmail.com> |
36 | Caio Salgado + Alessandro Palmeira <caio.csalgado@gmail.com> | 51 | Caio Salgado + Alessandro Palmeira <caio.csalgado@gmail.com> |
37 | Caio Salgado <caio.csalgado@gmail.com> | 52 | Caio Salgado <caio.csalgado@gmail.com> |
@@ -57,26 +72,42 @@ Carlos Morais + Diego Araújo <diegoamc90@gmail.com> | @@ -57,26 +72,42 @@ Carlos Morais + Diego Araújo <diegoamc90@gmail.com> | ||
57 | Carlos Morais + Eduardo Morais <carlos88morais@gmail.com> | 72 | Carlos Morais + Eduardo Morais <carlos88morais@gmail.com> |
58 | Carlos Morais + Paulo Meirelles <carlos88morais@gmail.com> | 73 | Carlos Morais + Paulo Meirelles <carlos88morais@gmail.com> |
59 | Carlos Morais + Pedro Leal <carlos88morais@gmail.com> | 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 | Daniela Soares Feitosa <danielafeitosa@colivre.coop.br> | 82 | Daniela Soares Feitosa <danielafeitosa@colivre.coop.br> |
61 | Daniel Cunha <daniel@colivre.coop.br> | 83 | Daniel Cunha <daniel@colivre.coop.br> |
62 | diegoamc <diegoamc90@gmail.com> | 84 | diegoamc <diegoamc90@gmail.com> |
63 | Diego Araújo + Alessandro Palmeira <diegoamc90@gmail.com> | 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 | Diego Araujo + Caio Salgado <diegoamc90@gmail.com> | 88 | Diego Araujo + Caio Salgado <diegoamc90@gmail.com> |
89 | +Diego Araújo + Daniel Alves + Rafael Manzo <rr.manzo@gmail.com> | ||
65 | Diego Araújo <diegoamc90@gmail.com> | 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 | Diego Araújo + Jefferson Fernandes <diegoamc90@gmail.com> | 93 | Diego Araújo + Jefferson Fernandes <diegoamc90@gmail.com> |
67 | Diego Araujo + Jefferson Fernandes <jeffs.fernandes@gmail.com> | 94 | Diego Araujo + Jefferson Fernandes <jeffs.fernandes@gmail.com> |
68 | Diego Araújo + João Machini <diegoamc90@gmail.com> | 95 | Diego Araújo + João Machini <diegoamc90@gmail.com> |
69 | Diego Araújo + João Machini <digoamc90@gmail.com> | 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 | Diego Araújo + João M. M. da Silva <diegoamc90@gmail.com> | 98 | Diego Araújo + João M. M. da Silva <diegoamc90@gmail.com> |
71 | Diego Araújo + João M. M. da Silva + João Machini <diegoamc90@gmail.com> | 99 | Diego Araújo + João M. M. da Silva + João Machini <diegoamc90@gmail.com> |
72 | Diego Araújo + João M. M. da Silva + Pedro Leal <diegoamc90@gmail.com> | 100 | Diego Araújo + João M. M. da Silva + Pedro Leal <diegoamc90@gmail.com> |
73 | Diego Araújo + Paulo Meirelles <diegoamc90@gmail.com> | 101 | Diego Araújo + Paulo Meirelles <diegoamc90@gmail.com> |
74 | Diego Araújo + Pedro Leal <diegoamc90@gmail.com> | 102 | Diego Araújo + Pedro Leal <diegoamc90@gmail.com> |
103 | +Diego Araujo + Rafael Manzo <diegoamc90@gmail.com> | ||
75 | Diego Araújo + Rafael Manzo <diegoamc90@gmail.com> | 104 | Diego Araújo + Rafael Manzo <diegoamc90@gmail.com> |
76 | Diego Araújo + Renan Teruo + Alessandro Palmeira <diegoamc90@gmail.com> | 105 | Diego Araújo + Renan Teruo + Alessandro Palmeira <diegoamc90@gmail.com> |
77 | Diego Araújo + Renan Teruo <diegoamc90@gmail.com> | 106 | Diego Araújo + Renan Teruo <diegoamc90@gmail.com> |
107 | +Diego Araujo + Rodrigo Souto + Rafael Manzo <rr.manzo@gmail.com> | ||
78 | Diego + Jefferson <diegoamc90@gmail.com> | 108 | Diego + Jefferson <diegoamc90@gmail.com> |
79 | Diego Martinez <diegoamc90@gmail.com> | 109 | Diego Martinez <diegoamc90@gmail.com> |
110 | +Diego Martinez <diego@diego-K55A.(none)> | ||
80 | Diego + Renan <renanteruoc@gmail.com> | 111 | Diego + Renan <renanteruoc@gmail.com> |
81 | Fernanda Lopes <nanda.listas+psl@gmail.com> | 112 | Fernanda Lopes <nanda.listas+psl@gmail.com> |
82 | Grazieno Pellegrino <grazieno@gmail.com> | 113 | Grazieno Pellegrino <grazieno@gmail.com> |
@@ -89,6 +120,7 @@ João da Silva <jaodsilv@linux.ime.usp.br> | @@ -89,6 +120,7 @@ João da Silva <jaodsilv@linux.ime.usp.br> | ||
89 | João Marco Maciel da Silva + Rafael Manzo + Renan Teruo <jaodsilv@linux.ime.usp.br> | 120 | João Marco Maciel da Silva + Rafael Manzo + Renan Teruo <jaodsilv@linux.ime.usp.br> |
90 | João M. M. da Silva + Alessandro Palmeira + Diego Araújo + Caio Salgado <jaodsilv@linux.ime.usp.br> | 121 | João M. M. da Silva + Alessandro Palmeira + Diego Araújo + Caio Salgado <jaodsilv@linux.ime.usp.br> |
91 | João M. M. da Silva + Alessandro Palmeira + Diego Araújo <jaodsilv@linux.ime.usp.br> | 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 | João M. M. da Silva + Alessandro Palmeira <jaodsilv@linux.ime.usp.br> | 124 | João M. M. da Silva + Alessandro Palmeira <jaodsilv@linux.ime.usp.br> |
93 | João M. M. da Silva + Alessandro Palmeira + João Machini <jaodsilv@linux.ime.usp.br> | 125 | João M. M. da Silva + Alessandro Palmeira + João Machini <jaodsilv@linux.ime.usp.br> |
94 | João M. M. da Silva + Caio Salgado + Alessandro Palmeira <jaodsilv@linux.ime.usp.br> | 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,17 +156,25 @@ Luis David Aguilar Carlos <ludwig9003@gmail.com> | ||
124 | Martín Olivera <molivera@solar.org.ar> | 156 | Martín Olivera <molivera@solar.org.ar> |
125 | Moises Machado <moises@colivre.coop.br> | 157 | Moises Machado <moises@colivre.coop.br> |
126 | Nanda Lopes <nanda.listas+psl@gmail.com> | 158 | Nanda Lopes <nanda.listas+psl@gmail.com> |
159 | +Paulo Meirelles + Alessandro Palmeira + João M. M. da Silva <paulo@softwarelivre.org> | ||
127 | Paulo Meirelles + Alessandro Palmeira <paulo@softwarelivre.org> | 160 | Paulo Meirelles + Alessandro Palmeira <paulo@softwarelivre.org> |
128 | Paulo Meirelles + Carlos Morais <paulo@softwarelivre.org> | 161 | Paulo Meirelles + Carlos Morais <paulo@softwarelivre.org> |
129 | Paulo Meirelles + Diego Araújo <paulo@softwarelivre.org> | 162 | Paulo Meirelles + Diego Araújo <paulo@softwarelivre.org> |
130 | Paulo Meirelles + João M. M. da Silva <paulo@softwarelivre.org> | 163 | Paulo Meirelles + João M. M. da Silva <paulo@softwarelivre.org> |
131 | Paulo Meirelles <paulo@softwarelivre.org> | 164 | Paulo Meirelles <paulo@softwarelivre.org> |
165 | +Paulo Meirelles + Rafael Manzo <paulo@softwarelivre.org> | ||
132 | Rafael Gomes <rafaelgomes@techfree.com.br> | 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 | Rafael Manzo + João M. M. Silva <rr.manzo@gmail.com> | 170 | Rafael Manzo + João M. M. Silva <rr.manzo@gmail.com> |
171 | +Rafael Manzo + Paulo Meirelles <rr.manzo@gmail.com> | ||
134 | Rafael Martins <rmmartins@gmail.com> | 172 | Rafael Martins <rmmartins@gmail.com> |
135 | Rafael Reggiani Manzo + Caio Salgado + Jefferson Fernandes <rr.manzo@gmail.com> | 173 | Rafael Reggiani Manzo + Caio Salgado + Jefferson Fernandes <rr.manzo@gmail.com> |
136 | Rafael Reggiani Manzo + Diego Araujo <diegoamc90@gmail.com> | 174 | Rafael Reggiani Manzo + Diego Araujo <diegoamc90@gmail.com> |
137 | Rafael Reggiani Manzo + Diego Araujo <rr.manzo@gmail.com> | 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 | Rafael Reggiani Manzo <rr.manzo@gmail.com> | 178 | Rafael Reggiani Manzo <rr.manzo@gmail.com> |
139 | Raphaël Rousseau <raph@r4f.org> | 179 | Raphaël Rousseau <raph@r4f.org> |
140 | Raquel Lira <raquel.lira@gmail.com> | 180 | Raquel Lira <raquel.lira@gmail.com> |
@@ -146,8 +186,10 @@ Renan Teruo + Paulo Meirelles <renanteruoc@gmail.com> | @@ -146,8 +186,10 @@ Renan Teruo + Paulo Meirelles <renanteruoc@gmail.com> | ||
146 | Renan Teruo + Rafael Manzo <renanteruoc@gmail.com> | 186 | Renan Teruo + Rafael Manzo <renanteruoc@gmail.com> |
147 | Rodrigo Souto <rodrigo@colivre.coop.br> | 187 | Rodrigo Souto <rodrigo@colivre.coop.br> |
148 | Ronny Kursawe <kursawe.ronny@googlemail.com> | 188 | Ronny Kursawe <kursawe.ronny@googlemail.com> |
189 | +root <root@debian.sdr.serpro> | ||
149 | Samuel R. C. Vale <srcvale@holoscopio.com> | 190 | Samuel R. C. Vale <srcvale@holoscopio.com> |
150 | Valessio Brito <valessio@gmail.com> | 191 | Valessio Brito <valessio@gmail.com> |
192 | +vfcosta <vfcosta@gmail.com> | ||
151 | Visita <visita@debian.(none)> | 193 | Visita <visita@debian.(none)> |
152 | Yann Lugrin <yann.lugrin@liquid-concept.ch> | 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 | gem 'exception_notification', '1.0.20090728' | 3 | gem 'exception_notification', '1.0.20090728' |
10 | gem 'system_timer' | 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 | def program(name) | 19 | def program(name) |
13 | unless system("which #{name} > /dev/null") | 20 | unless system("which #{name} > /dev/null") |
14 | puts "W: Program #{name} is needed, but was not found in your PATH" | 21 | puts "W: Program #{name} is needed, but was not found in your PATH" |
Gemfile.lock
1 | GEM | 1 | GEM |
2 | - remote: http://rubygems.org/ | 2 | + remote: https://rubygems.org/ |
3 | specs: | 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 | builder (>= 2.1.2) | 15 | builder (>= 2.1.2) |
8 | diff-lcs (>= 1.1.2) | 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 | diff-lcs (1.1.3) | 23 | diff-lcs (1.1.3) |
14 | exception_notification (1.0.20090728) | 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 | rspec (1.2.9) | 38 | rspec (1.2.9) |
19 | rspec-rails (1.2.9) | 39 | rspec-rails (1.2.9) |
20 | rack (>= 1.0.0) | 40 | rack (>= 1.0.0) |
21 | rspec (>= 1.2.9) | 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 | system_timer (1.2.4) | 48 | system_timer (1.2.4) |
24 | term-ansicolor (1.0.7) | 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 | PLATFORMS | 54 | PLATFORMS |
33 | ruby | 55 | ruby |
34 | 56 | ||
35 | DEPENDENCIES | 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 | database_cleaner | 61 | database_cleaner |
39 | exception_notification (= 1.0.20090728) | 62 | exception_notification (= 1.0.20090728) |
63 | + rake (= 0.8.7) | ||
40 | rspec (= 1.2.9) | 64 | rspec (= 1.2.9) |
41 | rspec-rails (= 1.2.9) | 65 | rspec-rails (= 1.2.9) |
42 | - selenium-client (>= 1.2.17) | ||
43 | system_timer | 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,6 +45,10 @@ Install the RPAF apache module (or skip this step if not using apache): | ||
45 | On manual installations, change "/etc/noosfero/*" to | 45 | On manual installations, change "/etc/noosfero/*" to |
46 | "{Rails.root}/etc/noosfero/*" | 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 | 4c) Restart Varnish | 52 | 4c) Restart Varnish |
49 | 53 | ||
50 | # invoke-rc.d varnish restart | 54 | # invoke-rc.d varnish restart |
RELEASING
@@ -31,6 +31,7 @@ To prepare a release of noosfero, you must follow the steps below: | @@ -31,6 +31,7 @@ To prepare a release of noosfero, you must follow the steps below: | ||
31 | sha1 of the package (with sha1sum and paste the SHA1 hash as comment in the | 31 | sha1 of the package (with sha1sum and paste the SHA1 hash as comment in the |
32 | attachment form) | 32 | attachment form) |
33 | * Download the attached and verify the MD5 hash | 33 | * Download the attached and verify the MD5 hash |
34 | +* Push the new version tag (with git push --tags) | ||
34 | * Update an eventual demonstration version that you run. | 35 | * Update an eventual demonstration version that you run. |
35 | * Write an announcement e-mail to the relevant mailing lists pointing to the | 36 | * Write an announcement e-mail to the relevant mailing lists pointing to the |
36 | release notes, and maybe to the demonstration version. | 37 | release notes, and maybe to the demonstration version. |
app/controllers/admin/environment_design_controller.rb
@@ -3,7 +3,8 @@ class EnvironmentDesignController < BoxOrganizerController | @@ -3,7 +3,8 @@ class EnvironmentDesignController < BoxOrganizerController | ||
3 | protect 'edit_environment_design', :environment | 3 | protect 'edit_environment_design', :environment |
4 | 4 | ||
5 | def available_blocks | 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 | end | 8 | end |
8 | 9 | ||
9 | end | 10 | end |
app/controllers/box_organizer_controller.rb
@@ -68,8 +68,8 @@ class BoxOrganizerController < ApplicationController | @@ -68,8 +68,8 @@ class BoxOrganizerController < ApplicationController | ||
68 | raise ArgumentError.new("Type %s is not allowed. Go away." % type) | 68 | raise ArgumentError.new("Type %s is not allowed. Go away." % type) |
69 | end | 69 | end |
70 | else | 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 | @boxes = boxes_holder.boxes | 73 | @boxes = boxes_holder.boxes |
74 | render :action => 'add_block', :layout => false | 74 | render :action => 'add_block', :layout => false |
75 | end | 75 | end |
app/controllers/my_profile/profile_design_controller.rb
@@ -7,17 +7,25 @@ class ProfileDesignController < BoxOrganizerController | @@ -7,17 +7,25 @@ class ProfileDesignController < BoxOrganizerController | ||
7 | def available_blocks | 7 | def available_blocks |
8 | blocks = [ ArticleBlock, TagsBlock, RecentDocumentsBlock, ProfileInfoBlock, LinkListBlock, MyNetworkBlock, FeedReaderBlock, ProfileImageBlock, LocationBlock, SlideshowBlock, ProfileSearchBlock, HighlightsBlock ] | 8 | blocks = [ ArticleBlock, TagsBlock, RecentDocumentsBlock, ProfileInfoBlock, LinkListBlock, MyNetworkBlock, FeedReaderBlock, ProfileImageBlock, LocationBlock, SlideshowBlock, ProfileSearchBlock, HighlightsBlock ] |
9 | 9 | ||
10 | + blocks += plugins.dispatch(:extra_blocks) | ||
11 | + | ||
10 | # blocks exclusive for organizations | 12 | # blocks exclusive for organizations |
11 | if profile.has_members? | 13 | if profile.has_members? |
12 | blocks << MembersBlock | 14 | blocks << MembersBlock |
13 | end | 15 | end |
14 | 16 | ||
15 | - # blocks exclusive to person | 17 | + # blocks exclusive to people |
16 | if profile.person? | 18 | if profile.person? |
17 | blocks << FriendsBlock | 19 | blocks << FriendsBlock |
18 | blocks << FavoriteEnterprisesBlock | 20 | blocks << FavoriteEnterprisesBlock |
19 | blocks << CommunitiesBlock | 21 | blocks << CommunitiesBlock |
20 | blocks << EnterprisesBlock | 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 | end | 29 | end |
22 | 30 | ||
23 | # blocks exclusive for enterprises | 31 | # blocks exclusive for enterprises |
@@ -26,6 +34,7 @@ class ProfileDesignController < BoxOrganizerController | @@ -26,6 +34,7 @@ class ProfileDesignController < BoxOrganizerController | ||
26 | blocks << HighlightsBlock | 34 | blocks << HighlightsBlock |
27 | blocks << FeaturedProductsBlock | 35 | blocks << FeaturedProductsBlock |
28 | blocks << FansBlock | 36 | blocks << FansBlock |
37 | + blocks += plugins.dispatch(:extra_blocks, :type => Enterprise) | ||
29 | end | 38 | end |
30 | 39 | ||
31 | # product block exclusive for enterprises in environments that permits it | 40 | # product block exclusive for enterprises in environments that permits it |
@@ -33,7 +42,7 @@ class ProfileDesignController < BoxOrganizerController | @@ -33,7 +42,7 @@ class ProfileDesignController < BoxOrganizerController | ||
33 | blocks << ProductsBlock | 42 | blocks << ProductsBlock |
34 | end | 43 | end |
35 | 44 | ||
36 | - # block exclusive to profile has blog | 45 | + # block exclusive to profiles that have blog |
37 | if profile.has_blog? | 46 | if profile.has_blog? |
38 | blocks << BlogArchivesBlock | 47 | blocks << BlogArchivesBlock |
39 | end | 48 | end |
app/helpers/application_helper.rb
@@ -30,6 +30,12 @@ module ApplicationHelper | @@ -30,6 +30,12 @@ module ApplicationHelper | ||
30 | 30 | ||
31 | include AccountHelper | 31 | include AccountHelper |
32 | 32 | ||
33 | + include BlogHelper | ||
34 | + | ||
35 | + include ContentViewerHelper | ||
36 | + | ||
37 | + include LayoutHelper | ||
38 | + | ||
33 | def locale | 39 | def locale |
34 | (@page && !@page.language.blank?) ? @page.language : FastGettext.locale | 40 | (@page && !@page.language.blank?) ? @page.language : FastGettext.locale |
35 | end | 41 | end |
@@ -260,7 +266,10 @@ module ApplicationHelper | @@ -260,7 +266,10 @@ module ApplicationHelper | ||
260 | end | 266 | end |
261 | 267 | ||
262 | def button_bar(options = {}, &block) | 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 | end | 273 | end |
265 | 274 | ||
266 | VIEW_EXTENSIONS = %w[.rhtml .html.erb] | 275 | VIEW_EXTENSIONS = %w[.rhtml .html.erb] |
@@ -352,10 +361,6 @@ module ApplicationHelper | @@ -352,10 +361,6 @@ module ApplicationHelper | ||
352 | end | 361 | end |
353 | end | 362 | end |
354 | 363 | ||
355 | - def theme_stylesheet_path | ||
356 | - theme_path + '/style.css' | ||
357 | - end | ||
358 | - | ||
359 | def current_theme | 364 | def current_theme |
360 | @current_theme ||= | 365 | @current_theme ||= |
361 | begin | 366 | begin |
@@ -874,14 +879,6 @@ module ApplicationHelper | @@ -874,14 +879,6 @@ module ApplicationHelper | ||
874 | content_tag('div', labelled_check_box(_('Public'), 'profile_data[fields_privacy]['+name+']', 'public', profile.public_fields.include?(name)), :class => 'field-privacy-selector') | 879 | content_tag('div', labelled_check_box(_('Public'), 'profile_data[fields_privacy]['+name+']', 'public', profile.public_fields.include?(name)), :class => 'field-privacy-selector') |
875 | end | 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 | def login_url | 882 | def login_url |
886 | options = Noosfero.url_options.merge({ :controller => 'account', :action => 'login' }) | 883 | options = Noosfero.url_options.merge({ :controller => 'account', :action => 'login' }) |
887 | url_for(options) | 884 | url_for(options) |
@@ -920,18 +917,6 @@ module ApplicationHelper | @@ -920,18 +917,6 @@ module ApplicationHelper | ||
920 | end | 917 | end |
921 | end | 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 | def page_title | 920 | def page_title |
936 | (@page ? @page.title + ' - ' : '') + | 921 | (@page ? @page.title + ' - ' : '') + |
937 | (profile ? profile.short_name + ' - ' : '') + | 922 | (profile ? profile.short_name + ' - ' : '') + |
@@ -943,40 +928,11 @@ module ApplicationHelper | @@ -943,40 +928,11 @@ module ApplicationHelper | ||
943 | (@category ? " - #{@category.full_name}" : '') | 928 | (@category ? " - #{@category.full_name}" : '') |
944 | end | 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 | # DEPRECATED. Do not use this· | 931 | # DEPRECATED. Do not use this· |
964 | def import_controller_stylesheets(options = {}) | 932 | def import_controller_stylesheets(options = {}) |
965 | stylesheet_import( "controller_"+ @controller.controller_name(), options ) | 933 | stylesheet_import( "controller_"+ @controller.controller_name(), options ) |
966 | end | 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 | def link_to_email(email) | 936 | def link_to_email(email) |
981 | javascript_tag('var array = ' + email.split('@').to_json + '; document.write("<a href=\'mailto:" + array.join("@") + "\'>" + array.join("@") + "</a>")'.html_safe) | 937 | javascript_tag('var array = ' + email.split('@').to_json + '; document.write("<a href=\'mailto:" + array.join("@") + "\'>" + array.join("@") + "</a>")'.html_safe) |
982 | end | 938 | end |
@@ -995,6 +951,36 @@ module ApplicationHelper | @@ -995,6 +951,36 @@ module ApplicationHelper | ||
995 | content | 951 | content |
996 | end | 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 | def colorpicker_field(object_name, method, options = {}) | 984 | def colorpicker_field(object_name, method, options = {}) |
999 | text_field(object_name, method, options.merge(:class => 'colorpicker_field')) | 985 | text_field(object_name, method, options.merge(:class => 'colorpicker_field')) |
1000 | end | 986 | end |
@@ -1019,10 +1005,6 @@ module ApplicationHelper | @@ -1019,10 +1005,6 @@ module ApplicationHelper | ||
1019 | theme_option(:jquery_theme) || 'smoothness_mod' | 1005 | theme_option(:jquery_theme) || 'smoothness_mod' |
1020 | end | 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 | def ui_error(message) | 1008 | def ui_error(message) |
1027 | content_tag('div', ui_icon('ui-icon-alert') + message, :class => 'alert fg-state-error ui-state-error') | 1009 | content_tag('div', ui_icon('ui-icon-alert') + message, :class => 'alert fg-state-error ui-state-error') |
1028 | end | 1010 | end |
@@ -1423,4 +1405,14 @@ module ApplicationHelper | @@ -1423,4 +1405,14 @@ module ApplicationHelper | ||
1423 | @no_design_blocks = true | 1405 | @no_design_blocks = true |
1424 | end | 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 | end | 1418 | end |
app/helpers/block_helper.rb
@@ -6,4 +6,21 @@ module BlockHelper | @@ -6,4 +6,21 @@ module BlockHelper | ||
6 | content_tag 'h3', content_tag('span', h(title)), :class => tag_class | 6 | content_tag 'h3', content_tag('span', h(title)), :class => tag_class |
7 | end | 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 | end | 26 | end |
app/helpers/blog_helper.rb
@@ -18,8 +18,9 @@ module BlogHelper | @@ -18,8 +18,9 @@ module BlogHelper | ||
18 | pagination = will_paginate(articles, { | 18 | pagination = will_paginate(articles, { |
19 | :param_name => 'npage', | 19 | :param_name => 'npage', |
20 | :previous_label => _('« Newer posts'), | 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 | content = [] | 24 | content = [] |
24 | artic_len = articles.length | 25 | artic_len = articles.length |
25 | articles.each_with_index{ |art,i| | 26 | articles.each_with_index{ |art,i| |
@@ -46,18 +47,6 @@ module BlogHelper | @@ -46,18 +47,6 @@ module BlogHelper | ||
46 | article_title(article, :no_comments => no_comments) + html | 47 | article_title(article, :no_comments => no_comments) + html |
47 | end | 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 | def display_full_format(article) | 50 | def display_full_format(article) |
62 | html = article_to_html(article) | 51 | html = article_to_html(article) |
63 | html = content_tag('p', html) if ! html.include?('</p>') | 52 | html = content_tag('p', html) if ! html.include?('</p>') |
app/helpers/content_viewer_helper.rb
@@ -36,7 +36,7 @@ module ContentViewerHelper | @@ -36,7 +36,7 @@ module ContentViewerHelper | ||
36 | 36 | ||
37 | def link_to_comments(article, args = {}) | 37 | def link_to_comments(article, args = {}) |
38 | return '' unless article.accept_comments? | 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 | end | 40 | end |
41 | 41 | ||
42 | def article_translations(article) | 42 | def article_translations(article) |
app/helpers/dates_helper.rb
@@ -23,11 +23,13 @@ module DatesHelper | @@ -23,11 +23,13 @@ module DatesHelper | ||
23 | end | 23 | end |
24 | 24 | ||
25 | # formats a date for displaying. | 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 | if date && use_numbers | 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 | elsif date | 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 | else | 33 | else |
32 | '' | 34 | '' |
33 | end | 35 | end |
@@ -46,7 +48,27 @@ module DatesHelper | @@ -46,7 +48,27 @@ module DatesHelper | ||
46 | if (date1 == date2) || (date2.nil?) | 48 | if (date1 == date2) || (date2.nil?) |
47 | show_date(date1, use_numbers) | 49 | show_date(date1, use_numbers) |
48 | else | 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 | end | 72 | end |
51 | end | 73 | end |
52 | 74 |
app/helpers/forms_helper.rb
@@ -142,38 +142,6 @@ module FormsHelper | @@ -142,38 +142,6 @@ module FormsHelper | ||
142 | content_tag('table',rows.join("\n")) | 142 | content_tag('table',rows.join("\n")) |
143 | end | 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 | def date_field(name, value, format = '%Y-%m-%d', datepicker_options = {}, html_options = {}) | 145 | def date_field(name, value, format = '%Y-%m-%d', datepicker_options = {}, html_options = {}) |
178 | datepicker_options[:disabled] ||= false | 146 | datepicker_options[:disabled] ||= false |
179 | datepicker_options[:alt_field] ||= '' | 147 | datepicker_options[:alt_field] ||= '' |
@@ -295,23 +263,28 @@ module FormsHelper | @@ -295,23 +263,28 @@ module FormsHelper | ||
295 | field_id, | 263 | field_id, |
296 | options_for_select( | 264 | options_for_select( |
297 | [[root, '']] + | 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 | html_options.merge(js_options) | 269 | html_options.merge(js_options) |
302 | ) | 270 | ) |
303 | ) | 271 | ) |
304 | end | 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 | result = labelled_form_field( | 280 | result = labelled_form_field( |
308 | label_text, | 281 | label_text, |
309 | select_tag( | 282 | select_tag( |
310 | field_id, | 283 | field_id, |
311 | options_for_select( | 284 | options_for_select( |
312 | [[profile.identifier, '']] + | 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 | html_options.merge(js_options) | 289 | html_options.merge(js_options) |
317 | ) | 290 | ) |
@@ -0,0 +1,88 @@ | @@ -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,6 +2,9 @@ require 'hpricot' | ||
2 | 2 | ||
3 | class Article < ActiveRecord::Base | 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 | # use for internationalizable human type names in search facets | 8 | # use for internationalizable human type names in search facets |
6 | # reimplement on subclasses | 9 | # reimplement on subclasses |
7 | def self.type_name | 10 | def self.type_name |
@@ -236,8 +239,13 @@ class Article < ActiveRecord::Base | @@ -236,8 +239,13 @@ class Article < ActiveRecord::Base | ||
236 | # The implementation in this class just provides the +body+ attribute as the | 239 | # The implementation in this class just provides the +body+ attribute as the |
237 | # HTML. Other article types can override this method to provide customized | 240 | # HTML. Other article types can override this method to provide customized |
238 | # views of themselves. | 241 | # views of themselves. |
242 | + # (To override short format representation, override the lead method) | ||
239 | def to_html(options = {}) | 243 | def to_html(options = {}) |
240 | - body || '' | 244 | + if options[:format] == 'short' |
245 | + display_short_format(self) | ||
246 | + else | ||
247 | + body || '' | ||
248 | + end | ||
241 | end | 249 | end |
242 | 250 | ||
243 | include ApplicationHelper | 251 | include ApplicationHelper |
app/models/article_block.rb
@@ -12,7 +12,11 @@ class ArticleBlock < Block | @@ -12,7 +12,11 @@ class ArticleBlock < Block | ||
12 | block = self | 12 | block = self |
13 | lambda do | 13 | lambda do |
14 | block_title(block.title) + | 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 | end | 20 | end |
17 | end | 21 | end |
18 | 22 | ||
@@ -49,4 +53,14 @@ class ArticleBlock < Block | @@ -49,4 +53,14 @@ class ArticleBlock < Block | ||
49 | self.box.owner.kind_of?(Environment) ? self.box.owner.portal_community.articles : self.box.owner.articles | 53 | self.box.owner.kind_of?(Environment) ? self.box.owner.portal_community.articles : self.box.owner.articles |
50 | end | 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 | end | 66 | end |
app/models/blog.rb
@@ -24,8 +24,9 @@ class Blog < Folder | @@ -24,8 +24,9 @@ class Blog < Folder | ||
24 | # FIXME isn't this too much including just to be able to generate some HTML? | 24 | # FIXME isn't this too much including just to be able to generate some HTML? |
25 | include ActionView::Helpers::TagHelper | 25 | include ActionView::Helpers::TagHelper |
26 | def to_html(options = {}) | 26 | def to_html(options = {}) |
27 | + me = self | ||
27 | lambda do | 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 | end | 30 | end |
30 | end | 31 | end |
31 | 32 |
app/models/enterprise.rb
@@ -185,4 +185,8 @@ class Enterprise < Organization | @@ -185,4 +185,8 @@ class Enterprise < Organization | ||
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") | 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 | end | 186 | end |
187 | 187 | ||
188 | + def catalog_url | ||
189 | + { :profile => identifier, :controller => 'catalog'} | ||
190 | + end | ||
191 | + | ||
188 | end | 192 | end |
app/models/environment.rb
@@ -618,12 +618,10 @@ class Environment < ActiveRecord::Base | @@ -618,12 +618,10 @@ class Environment < ActiveRecord::Base | ||
618 | end | 618 | end |
619 | 619 | ||
620 | def top_url | 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 | end | 625 | end |
628 | 626 | ||
629 | def to_s | 627 | def to_s |
app/models/event.rb
@@ -104,18 +104,30 @@ class Event < Article | @@ -104,18 +104,30 @@ class Event < Article | ||
104 | } | 104 | } |
105 | } | 105 | } |
106 | 106 | ||
107 | + # TODO: some good soul, please clean this ugly hack: | ||
107 | if self.body | 108 | if self.body |
108 | html.div('_____XXXX_DESCRIPTION_GOES_HERE_XXXX_____', :class => 'event-description') | 109 | html.div('_____XXXX_DESCRIPTION_GOES_HERE_XXXX_____', :class => 'event-description') |
109 | end | 110 | end |
110 | } | 111 | } |
111 | 112 | ||
112 | if self.body | 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 | end | 119 | end |
115 | 120 | ||
116 | result | 121 | result |
117 | end | 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 | def event? | 131 | def event? |
120 | true | 132 | true |
121 | end | 133 | end |
app/models/tags_block.rb
@@ -20,7 +20,8 @@ class TagsBlock < Block | @@ -20,7 +20,8 @@ class TagsBlock < Block | ||
20 | end | 20 | end |
21 | 21 | ||
22 | def content(args={}) | 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 | return '' if tags.empty? | 25 | return '' if tags.empty? |
25 | 26 | ||
26 | if limit | 27 | if limit |
@@ -29,18 +30,28 @@ class TagsBlock < Block | @@ -29,18 +30,28 @@ class TagsBlock < Block | ||
29 | tags_tmp.map{ |k,v| tags[k] = v } | 30 | tags_tmp.map{ |k,v| tags[k] = v } |
30 | end | 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 | block_title(title) + | 37 | block_title(title) + |
33 | "\n<div class='tag_cloud'>\n".html_safe+ | 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 | "\n</div><!-- end class='tag_cloud' -->\n".html_safe | 40 | "\n</div><!-- end class='tag_cloud' -->\n".html_safe |
38 | end | 41 | end |
39 | 42 | ||
40 | def footer | 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 | end | 55 | end |
45 | end | 56 | end |
46 | 57 |
app/models/user.rb
@@ -15,7 +15,7 @@ class User < ActiveRecord::Base | @@ -15,7 +15,7 @@ class User < ActiveRecord::Base | ||
15 | # FIXME ugly workaround | 15 | # FIXME ugly workaround |
16 | def self.human_attribute_name(attrib) | 16 | def self.human_attribute_name(attrib) |
17 | case attrib.to_sym | 17 | case attrib.to_sym |
18 | - when :login: return _('Username') | 18 | + when :login: return [_('Username'), _('Email')].join(' / ') |
19 | when :email: return _('e-Mail') | 19 | when :email: return _('e-Mail') |
20 | else _(self.superclass.human_attribute_name(attrib)) | 20 | else _(self.superclass.human_attribute_name(attrib)) |
21 | end | 21 | end |
@@ -116,10 +116,11 @@ class User < ActiveRecord::Base | @@ -116,10 +116,11 @@ class User < ActiveRecord::Base | ||
116 | 116 | ||
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 | 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 | def self.authenticate(login, password, environment = nil) | 120 | def self.authenticate(login, password, environment = nil) |
121 | environment ||= Environment.default | 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 | u && u.authenticated?(password) ? u : nil | 124 | u && u.authenticated?(password) ? u : nil |
124 | end | 125 | end |
125 | 126 |
app/views/account/_signup_form.rhtml
@@ -32,7 +32,8 @@ | @@ -32,7 +32,8 @@ | ||
32 | <span id="signup-domain"><%= environment.default_hostname %>/</span> | 32 | <span id="signup-domain"><%= environment.default_hostname %>/</span> |
33 | <div id='signup-login'> | 33 | <div id='signup-login'> |
34 | <div id='signup-login-field' class='formfield'> | 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 | <div id='url-check'><p> </p></div> | 37 | <div id='url-check'><p> </p></div> |
37 | </div> | 38 | </div> |
38 | <%= 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') %> | 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,7 +5,7 @@ | ||
5 | <% labelled_form_for :change_password, @change_password, :url => { :action => 'forgot_password' } do |f| %> | 5 | <% labelled_form_for :change_password, @change_password, :url => { :action => 'forgot_password' } do |f| %> |
6 | 6 | ||
7 | <%= f.text_field :login, | 7 | <%= f.text_field :login, |
8 | - :onchange => 'this.value = convToValidLogin( this.value )' %> | 8 | + :onchange => 'this.value = convToValidUsername( this.value )' %> |
9 | 9 | ||
10 | <%= f.text_field :email %> | 10 | <%= f.text_field :email %> |
11 | 11 |
app/views/admin_panel/site_info.rhtml
@@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
4 | 4 | ||
5 | <%= render :file => 'shared/tiny_mce' %> | 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 | <% tabs = [] %> | 8 | <% tabs = [] %> |
9 | <% tabs << {:title => _('Site info'), :id => 'site-info', | 9 | <% tabs << {:title => _('Site info'), :id => 'site-info', |
10 | :content => (render :partial => 'site_info', :locals => {:f => f})} %> | 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 | <% if @block.box.owner.kind_of?(Environment) and @block.box.owner.portal_community.nil? %> | 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 | <%= _("You don't have an community defined as the portal community. Define it before use this block properly.") %> | 4 | <%= _("You don't have an community defined as the portal community. Define it before use this block properly.") %> |
5 | </p> | 5 | </p> |
6 | <% else %> | 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 | <% end %> | 40 | <% end %> |
10 | </div> | 41 | </div> |
app/views/box_organizer/_block_types.rhtml
@@ -1,10 +0,0 @@ | @@ -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 | <strong><%= _('Highlights') %></strong> | 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 | <% for image in @block.images do %> | 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 | <% end %> | 7 | <% end %> |
15 | -</table> | ||
16 | -</div> | 8 | +</tbody></table> |
17 | 9 | ||
18 | <%= link_to_function(_('New highlight'), nil, :class => 'button icon-add with-text') do |page| | 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 | end %> | 12 | end %> |
27 | 13 | ||
28 | <%= 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]}) %> | 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 | <% form_tag do %> | 2 | <% form_tag do %> |
3 | 3 | ||
4 | <p><%= _('In what area do you want to put your new block?') %></p> | 4 | <p><%= _('In what area do you want to put your new block?') %></p> |
5 | 5 | ||
6 | + <div id="box-position"> | ||
6 | <% @boxes.each do |box| %> | 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 | <% end %> | 10 | <% end %> |
11 | + </div> | ||
9 | 12 | ||
10 | <script type="text/javascript"> | 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 | </script> | 21 | </script> |
24 | 22 | ||
25 | <p><%= _('Select the type of block you want to add to your page.') %></p> | 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 | </div> | 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 | </div> | 39 | </div> |
34 | 40 | ||
35 | <br style='clear: both'/> | 41 | <br style='clear: both'/> |
app/views/box_organizer/edit.rhtml
1 | -<div style='width: 500px;'> | ||
2 | - <h2><%= _('Editing block') %></h2> | 1 | +<div class="block-config-options <%= @block.class.name %>-options"> |
2 | + <h2 class="title"><%= _('Editing block') %></h2> | ||
3 | 3 | ||
4 | <% form_tag(:action => 'save', :id => @block.id) do %> | 4 | <% form_tag(:action => 'save', :id => @block.id) do %> |
5 | 5 |
app/views/box_organizer/index.rhtml
1 | <h1><%= _('Editing sideboxes')%></h1> | 1 | <h1><%= _('Editing sideboxes')%></h1> |
2 | 2 | ||
3 | -<% button_bar do %> | 3 | +<% button_bar :class=>'design-menu' do %> |
4 | <%= colorbox_button('add', _('Add a block'), { :action => 'add_block' }) %> | 4 | <%= colorbox_button('add', _('Add a block'), { :action => 'add_block' }) %> |
5 | <%= button(:back, _('Back to control panel'), :controller => (profile.nil? ? 'admin_panel': 'profile_editor')) %> | 5 | <%= button(:back, _('Back to control panel'), :controller => (profile.nil? ? 'admin_panel': 'profile_editor')) %> |
6 | <% end %> | 6 | <% end %> |
app/views/catalog/index.rhtml
@@ -7,13 +7,17 @@ | @@ -7,13 +7,17 @@ | ||
7 | 7 | ||
8 | <div class='l-sidebar-left-bar'> | 8 | <div class='l-sidebar-left-bar'> |
9 | <ul> | 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 | <% @categories.each do |category| %> | 13 | <% @categories.each do |category| %> |
12 | <%= category_link(category) %> | 14 | <%= category_link(category) %> |
13 | <%= category_sub_links(category) %> | 15 | <%= category_sub_links(category) %> |
14 | <% end %> | 16 | <% end %> |
17 | + <% elsif @category.present? %> | ||
18 | + <%= content_tag('li', _('There are no sub-categories for %s') % @category.name, :id => 'catalog-categories-notice') %> | ||
15 | <% else %> | 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 | <% end %> | 21 | <% end %> |
18 | </ul> | 22 | </ul> |
19 | </div> | 23 | </div> |
@@ -64,20 +68,20 @@ | @@ -64,20 +68,20 @@ | ||
64 | 68 | ||
65 | <% if product.description %> | 69 | <% if product.description %> |
66 | <li class="product-description expand-box"> | 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 | <div class="arrow"></div> | 73 | <div class="arrow"></div> |
70 | - <div class="content" id="product-description"><%= txt2html(product.description || '') %></div> | 74 | + <div class="content"><%= product.description %></div> |
71 | </div> | 75 | </div> |
72 | </li> | 76 | </li> |
73 | <% end %> | 77 | <% end %> |
74 | 78 | ||
75 | <% if product.price_described? %> | 79 | <% if product.price_described? %> |
76 | <li class="product-price-composition expand-box"> | 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 | <div class="arrow"></div> | 83 | <div class="arrow"></div> |
80 | - <div class="content" id="product-price-composition"> | 84 | + <div class="content"> |
81 | <% product.inputs.relevant_to_price.each do |i| %> | 85 | <% product.inputs.relevant_to_price.each do |i| %> |
82 | <div class="search-product-input-dots-to-price"> | 86 | <div class="search-product-input-dots-to-price"> |
83 | <div class="search-product-input-name"><%= i.product_category.name %></div> | 87 | <div class="search-product-input-name"><%= i.product_category.name %></div> |
@@ -98,9 +102,9 @@ | @@ -98,9 +102,9 @@ | ||
98 | <% if product.inputs.count > 0 %> | 102 | <% if product.inputs.count > 0 %> |
99 | <li class="product-inputs expand-box"> | 103 | <li class="product-inputs expand-box"> |
100 | <span id="inputs-button"><%= _('inputs and raw materials') %></span> | 104 | <span id="inputs-button"><%= _('inputs and raw materials') %></span> |
101 | - <div> | 105 | + <div class="float-box"> |
102 | <div class="arrow"></div> | 106 | <div class="arrow"></div> |
103 | - <div class="content" id="inputs-description"> | 107 | + <div class="content"> |
104 | <% product.inputs.each do |i| %> | 108 | <% product.inputs.each do |i| %> |
105 | <div> | 109 | <div> |
106 | <%= _('%{amount_used} %{unit} of') % {:amount_used => i.amount_used, :unit => i.unit.singular} + ' ' if i.has_all_price_details? %> | 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,7 +9,12 @@ | ||
9 | <div id='media-upload-form'> | 9 | <div id='media-upload-form'> |
10 | <% form_tag({ :action => 'media_upload' }, :multipart => true) do %> | 10 | <% form_tag({ :action => 'media_upload' }, :multipart => true) do %> |
11 | <div class='formfield'> | 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 | </div> | 18 | </div> |
14 | <p><%= file_field_tag('file1') %></p> | 19 | <p><%= file_field_tag('file1') %></p> |
15 | <p><%= file_field_tag('file2') %></p> | 20 | <p><%= file_field_tag('file2') %></p> |
app/views/cms/select_article_type.rhtml
1 | +<div class="select-article-type"> | ||
2 | + | ||
1 | <h2> <%= _('Choose the type of content:') %> </h2> | 3 | <h2> <%= _('Choose the type of content:') %> </h2> |
2 | 4 | ||
3 | -<ul id="article_types"> | 5 | +<ul class="article-types"> |
4 | <% for type in @article_types %> | 6 | <% for type in @article_types %> |
5 | <% action = type[:class].name == 'UploadedFile' ? {:action => 'upload_files'} : {:action => 'new', :type => type[:class].name} %> | 7 | <% action = type[:class].name == 'UploadedFile' ? {:action => 'upload_files'} : {:action => 'new', :type => type[:class].name} %> |
6 | <% content_tag('a', :href => url_for(action.merge(:parent_id => @parent_id, :back_to => @back_to))) do %> | 8 | <% content_tag('a', :href => url_for(action.merge(:parent_id => @parent_id, :back_to => @back_to))) do %> |
@@ -14,3 +16,5 @@ | @@ -14,3 +16,5 @@ | ||
14 | <br style="clear:both" /> | 16 | <br style="clear:both" /> |
15 | 17 | ||
16 | <%= colorbox_close_button(_('Cancel')) %> | 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,8 +21,6 @@ function submit_comment_form(button) { | ||
21 | } | 21 | } |
22 | </script> | 22 | </script> |
23 | 23 | ||
24 | -<% focus_on = logged_in? ? 'title' : 'name' %> | ||
25 | - | ||
26 | <% if @comment && @comment.errors.any? && @comment.reply_of_id.blank? %> | 24 | <% if @comment && @comment.errors.any? && @comment.reply_of_id.blank? %> |
27 | <%= error_messages_for :comment %> | 25 | <%= error_messages_for :comment %> |
28 | <script type="text/javascript">jQuery(function() { document.location.href = '#page-comment-form'; });</script> | 26 | <script type="text/javascript">jQuery(function() { document.location.href = '#page-comment-form'; });</script> |
@@ -32,17 +30,7 @@ function submit_comment_form(button) { | @@ -32,17 +30,7 @@ function submit_comment_form(button) { | ||
32 | 30 | ||
33 | <div class="post_comment_box <%= @form_div %>"> | 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 | <% unless pass_without_comment_captcha? %> | 35 | <% unless pass_without_comment_captcha? %> |
48 | <div id="recaptcha-container" style="display: none"> | 36 | <div id="recaptcha-container" style="display: none"> |
@@ -62,8 +50,6 @@ function submit_comment_form(button) { | @@ -62,8 +50,6 @@ function submit_comment_form(button) { | ||
62 | <% end %> | 50 | <% end %> |
63 | 51 | ||
64 | <% form_tag( url, { :class => 'comment_form' } ) do %> | 52 | <% form_tag( url, { :class => 'comment_form' } ) do %> |
65 | - <%= hidden_field_tag(:confirm, 'false') %> | ||
66 | - | ||
67 | <%= required_fields_message %> | 53 | <%= required_fields_message %> |
68 | 54 | ||
69 | <% unless logged_in? %> | 55 | <% unless logged_in? %> |
@@ -84,10 +70,13 @@ function submit_comment_form(button) { | @@ -84,10 +70,13 @@ function submit_comment_form(button) { | ||
84 | <%= labelled_form_field(_('Title'), text_field(:comment, :title)) %> | 70 | <%= labelled_form_field(_('Title'), text_field(:comment, :title)) %> |
85 | <%= required labelled_form_field(_('Enter your comment'), text_area(:comment, :body, :rows => 5)) %> | 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 | <% button_bar do %> | 76 | <% button_bar do %> |
88 | <%= submit_button('add', _('Post comment'), :onclick => "submit_comment_form(this); return false") %> | 77 | <%= submit_button('add', _('Post comment'), :onclick => "submit_comment_form(this); return false") %> |
89 | <% if cancel_triggers_hide %> | 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 | <% else %> | 80 | <% else %> |
92 | <%= button('cancel', _('Cancel'), {:action => 'view_page', :profile => profile.identifier, :page => @comment.article.explode_path})%> | 81 | <%= button('cancel', _('Cancel'), {:action => 'view_page', :profile => profile.identifier, :page => @comment.article.explode_path})%> |
93 | <% end %> | 82 | <% end %> |
@@ -95,3 +84,5 @@ function submit_comment_form(button) { | @@ -95,3 +84,5 @@ function submit_comment_form(button) { | ||
95 | <% end %> | 84 | <% end %> |
96 | 85 | ||
97 | </div><!-- end class="post_comment_box" --> | 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 | <div> | 5 | <div> |
6 | <div class='blog-description'> | 6 | <div class='blog-description'> |
7 | - <%= @page.body %> | 7 | + <%= blog.body %> |
8 | </div> | 8 | </div> |
9 | </div> | 9 | </div> |
10 | <hr class="pre-posts"/> | 10 | <hr class="pre-posts"/> |
11 | <div class="blog-posts"> | 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 | </div> | 21 | </div> |
app/views/content_viewer/view_page.rhtml
@@ -90,7 +90,7 @@ | @@ -90,7 +90,7 @@ | ||
90 | <% end %> | 90 | <% end %> |
91 | 91 | ||
92 | <% if @page.accept_comments? && @comments_count > 1 %> | 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 | <% end %> | 94 | <% end %> |
95 | 95 | ||
96 | <ul class="article-comments-list"> | 96 | <ul class="article-comments-list"> |
@@ -0,0 +1,24 @@ | @@ -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,38 +8,19 @@ | ||
8 | <meta name="description" content="<%= @environment.name %>" /> | 8 | <meta name="description" content="<%= @environment.name %>" /> |
9 | <link rel="shortcut icon" href="<%= image_path(theme_favicon) %>" type="image/x-icon" /> | 9 | <link rel="shortcut icon" href="<%= image_path(theme_favicon) %>" type="image/x-icon" /> |
10 | <%= noosfero_javascript %> | 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 | <%# Add custom tags/styles/etc via content_for %> | 13 | <%# Add custom tags/styles/etc via content_for %> |
22 | <%= yield :head %> | 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 | @plugins.dispatch(:head_ending).collect do |content| | 16 | @plugins.dispatch(:head_ending).collect do |content| |
30 | content.respond_to?(:call) ? content.call : content | 17 | content.respond_to?(:call) ? content.call : content |
31 | end.join("\n") | 18 | end.join("\n") |
32 | %> | 19 | %> |
33 | </head> | 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 | <a href="#content" id="link-go-content"><span><%= _("Go to the content") %></span></a> | 22 | <a href="#content" id="link-go-content"><span><%= _("Go to the content") %></span></a> |
23 | + | ||
43 | <%= | 24 | <%= |
44 | @plugins.dispatch(:body_beginning).collect do |content| | 25 | @plugins.dispatch(:body_beginning).collect do |content| |
45 | content.respond_to?(:call) ? content.call : content | 26 | content.respond_to?(:call) ? content.call : content |
@@ -51,30 +32,7 @@ | @@ -51,30 +32,7 @@ | ||
51 | <%= theme_header %> | 32 | <%= theme_header %> |
52 | </div> | 33 | </div> |
53 | <div id="wrap-2"> | 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 | <h1 id="site-title"> | 37 | <h1 id="site-title"> |
80 | <%= theme_site_title %> | 38 | <%= theme_site_title %> |
app/views/users/send_mail.rhtml
@@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
4 | 4 | ||
5 | <%= render :file => 'shared/tiny_mce' %> | 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 | <%= labelled_form_field(_('Subject:'), f.text_field(:subject)) %> | 8 | <%= labelled_form_field(_('Subject:'), f.text_field(:subject)) %> |
9 | <%= labelled_form_field(_('Body:'), f.text_area(:body, :class => 'mceEditor')) %> | 9 | <%= labelled_form_field(_('Body:'), f.text_area(:body, :class => 'mceEditor')) %> |
10 | <%= submit_button(:send, _('Send')) %> | 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,7 +5,7 @@ | ||
5 | #ENV['RAILS_ENV'] ||= 'production' | 5 | #ENV['RAILS_ENV'] ||= 'production' |
6 | 6 | ||
7 | # Specifies gem version of Rails to use when vendor/rails is not present | 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 | # Bootstrap the Rails environment, frameworks, and default configuration | 10 | # Bootstrap the Rails environment, frameworks, and default configuration |
11 | require File.join(File.dirname(__FILE__), 'boot') | 11 | require File.join(File.dirname(__FILE__), 'boot') |
config/environments/cucumber.rb
1 | -# IMPORTANT: This file was generated by Cucumber 0.4.0 | ||
2 | # Edit at your own peril - it's recommended to regenerate this file | 1 | # Edit at your own peril - it's recommended to regenerate this file |
3 | # in the future when you upgrade to a newer version of Cucumber. | 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 | # Log error messages when you accidentally call methods on nil. | 9 | # Log error messages when you accidentally call methods on nil. |
8 | config.whiny_nils = true | 10 | config.whiny_nils = true |
@@ -18,3 +20,8 @@ config.action_controller.allow_forgery_protection = false | @@ -18,3 +20,8 @@ config.action_controller.allow_forgery_protection = false | ||
18 | # The :test delivery method accumulates sent emails in the | 20 | # The :test delivery method accumulates sent emails in the |
19 | # ActionMailer::Base.deliveries array. | 21 | # ActionMailer::Base.deliveries array. |
20 | config.action_mailer.delivery_method = :test | 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,10 +14,11 @@ Feature: accept member | ||
14 | And the community "My Community" is closed | 14 | And the community "My Community" is closed |
15 | And "Mario Souto" is admin of "My Community" | 15 | And "Mario Souto" is admin of "My Community" |
16 | 16 | ||
17 | + @selenium | ||
17 | Scenario: approve a task to accept a member as admin in a closed community | 18 | Scenario: approve a task to accept a member as admin in a closed community |
18 | Given "Marie Curie" asked to join "My Community" | 19 | Given "Marie Curie" asked to join "My Community" |
19 | And I am logged in as "mario" | 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 | And I follow "Process requests" | 22 | And I follow "Process requests" |
22 | And I should see "Marie Curie wants to be a member" | 23 | And I should see "Marie Curie wants to be a member" |
23 | When I choose "Accept" | 24 | When I choose "Accept" |
@@ -25,10 +26,11 @@ Feature: accept member | @@ -25,10 +26,11 @@ Feature: accept member | ||
25 | And I press "Apply!" | 26 | And I press "Apply!" |
26 | Then "Marie Curie" should be admin of "My Community" | 27 | Then "Marie Curie" should be admin of "My Community" |
27 | 28 | ||
29 | + @selenium | ||
28 | Scenario: approve a task to accept a member as member in a closed community | 30 | Scenario: approve a task to accept a member as member in a closed community |
29 | Given "Marie Curie" asked to join "My Community" | 31 | Given "Marie Curie" asked to join "My Community" |
30 | And I am logged in as "mario" | 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 | And I follow "Process requests" | 34 | And I follow "Process requests" |
33 | And I should see "Marie Curie wants to be a member" | 35 | And I should see "Marie Curie wants to be a member" |
34 | When I choose "Accept" | 36 | When I choose "Accept" |
@@ -36,10 +38,11 @@ Feature: accept member | @@ -36,10 +38,11 @@ Feature: accept member | ||
36 | And I press "Apply!" | 38 | And I press "Apply!" |
37 | Then "Marie Curie" should be a member of "My Community" | 39 | Then "Marie Curie" should be a member of "My Community" |
38 | 40 | ||
41 | + @selenium | ||
39 | Scenario: approve a task to accept a member as moderator in a closed community | 42 | Scenario: approve a task to accept a member as moderator in a closed community |
40 | Given "Marie Curie" asked to join "My Community" | 43 | Given "Marie Curie" asked to join "My Community" |
41 | And I am logged in as "mario" | 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 | And I follow "Process requests" | 46 | And I follow "Process requests" |
44 | And I should see "Marie Curie wants to be a member" | 47 | And I should see "Marie Curie wants to be a member" |
45 | When I choose "Accept" | 48 | When I choose "Accept" |
features/activate_enterprise.feature
@@ -11,7 +11,7 @@ Feature: activate enterprise | @@ -11,7 +11,7 @@ Feature: activate enterprise | ||
11 | 11 | ||
12 | Scenario: added an unexistent code | 12 | Scenario: added an unexistent code |
13 | Given feature "enterprise_activation" is enabled on environment | 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 | And I fill in "Enterprise activation code" with "abcde" | 15 | And I fill in "Enterprise activation code" with "abcde" |
16 | When I press "Activate" | 16 | When I press "Activate" |
17 | Then I should see "Invalid enterprise code" | 17 | Then I should see "Invalid enterprise code" |
@@ -21,7 +21,7 @@ Feature: activate enterprise | @@ -21,7 +21,7 @@ Feature: activate enterprise | ||
21 | And the following enterprises | 21 | And the following enterprises |
22 | | identifier | name | enabled | | 22 | | identifier | name | enabled | |
23 | | products-factory | Products Factory | false | | 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 | And enterprise "Products Factory" is enabled | 25 | And enterprise "Products Factory" is enabled |
26 | And I fill in "Enterprise activation code" with code of "Products Factory" | 26 | And I fill in "Enterprise activation code" with code of "Products Factory" |
27 | When I press "Activate" | 27 | When I press "Activate" |
@@ -32,7 +32,7 @@ Feature: activate enterprise | @@ -32,7 +32,7 @@ Feature: activate enterprise | ||
32 | And the following enterprises | 32 | And the following enterprises |
33 | | identifier | name | enabled | | 33 | | identifier | name | enabled | |
34 | | products-factory | Products Factory | false | | 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 | And I fill in "Enterprise activation code" with code of "Products Factory" | 36 | And I fill in "Enterprise activation code" with code of "Products Factory" |
37 | When I press "Activate" | 37 | When I press "Activate" |
38 | Then I should see "We don't have enough information about your enterprise to identify you." | 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,7 +43,7 @@ Feature: activate enterprise | ||
43 | And the following enterprises | 43 | And the following enterprises |
44 | | identifier | name | enabled | foundation_year | | 44 | | identifier | name | enabled | foundation_year | |
45 | | services-provider | Services Provider | false | 2000 | | 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 | And I fill in "Enterprise activation code" with code of "Services Provider" | 47 | And I fill in "Enterprise activation code" with code of "Services Provider" |
48 | And I press "Activate" | 48 | And I press "Activate" |
49 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "1999" | 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,7 +56,7 @@ Feature: activate enterprise | ||
56 | And the following enterprises | 56 | And the following enterprises |
57 | | identifier | name | enabled | cnpj | | 57 | | identifier | name | enabled | cnpj | |
58 | | services-provider | Services Provider | false | 94.132.024/0001-48 | | 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 | And I fill in "Enterprise activation code" with code of "Services Provider" | 60 | And I fill in "Enterprise activation code" with code of "Services Provider" |
61 | And I press "Activate" | 61 | And I press "Activate" |
62 | And I fill in "What is the CNPJ of your enterprise?" with "12345678912345" | 62 | And I fill in "What is the CNPJ of your enterprise?" with "12345678912345" |
@@ -70,9 +70,9 @@ Feature: activate enterprise | @@ -70,9 +70,9 @@ Feature: activate enterprise | ||
70 | And the following enterprises | 70 | And the following enterprises |
71 | | identifier | name | enabled | foundation_year | | 71 | | identifier | name | enabled | foundation_year | |
72 | | services-provider | Services Provider | false | 2000 | | 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 | And I fill in "Enterprise activation code" with code of "Services Provider" | 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 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" | 76 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" |
77 | And I press "Continue" | 77 | And I press "Continue" |
78 | And I check "I read the terms of use and accepted them" | 78 | And I check "I read the terms of use and accepted them" |
@@ -91,9 +91,9 @@ Feature: activate enterprise | @@ -91,9 +91,9 @@ Feature: activate enterprise | ||
91 | | active-template | Active Template | false | 2000 | | 91 | | active-template | Active Template | false | 2000 | |
92 | And "Active Template" is the active enterprise template | 92 | And "Active Template" is the active enterprise template |
93 | And "Services Provider 2" doesnt have "Active Template" as template | 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 | And I fill in "Enterprise activation code" with code of "Services Provider 2" | 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 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" | 97 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" |
98 | And I press "Continue" | 98 | And I press "Continue" |
99 | And I check "I read the terms of use and accepted them" | 99 | And I check "I read the terms of use and accepted them" |
@@ -113,9 +113,9 @@ Feature: activate enterprise | @@ -113,9 +113,9 @@ Feature: activate enterprise | ||
113 | | active-template | Active Template | false | 2000 | | 113 | | active-template | Active Template | false | 2000 | |
114 | And "Active Template" is the active enterprise template | 114 | And "Active Template" is the active enterprise template |
115 | And "Services Provider 3" doesnt have "Active Template" as template | 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 | And I fill in "Enterprise activation code" with code of "Services Provider 3" | 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 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" | 119 | And I fill in "What year your enterprise was founded? It must have 4 digits, eg 1990." with "2000" |
120 | And I press "Continue" | 120 | And I press "Continue" |
121 | And I check "I read the terms of use and accepted them" | 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,22 +16,22 @@ Feature: manage categories | ||
16 | @selenium | 16 | @selenium |
17 | Scenario: admin user could access new category | 17 | Scenario: admin user could access new category |
18 | Given I follow "Administration" | 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 | Then I should be on /admin/categories/new | 21 | Then I should be on /admin/categories/new |
22 | 22 | ||
23 | @selenium | 23 | @selenium |
24 | Scenario: admin user could create a category | 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 | @selenium | 31 | @selenium |
32 | Scenario: admin user could see all the category tree | 32 | Scenario: admin user could see all the category tree |
33 | Given I follow "Administration" | 33 | Given I follow "Administration" |
34 | - And I follow "Manage Categories" | 34 | + And I follow "Categories" |
35 | When I follow "Show" | 35 | When I follow "Show" |
36 | Then I should see "Vegetarian" | 36 | Then I should see "Vegetarian" |
37 | And I should see "Steak" | 37 | And I should see "Steak" |
@@ -39,13 +39,13 @@ Feature: manage categories | @@ -39,13 +39,13 @@ Feature: manage categories | ||
39 | @selenium | 39 | @selenium |
40 | Scenario: admin user could hide the category tree | 40 | Scenario: admin user could hide the category tree |
41 | Given I follow "Administration" | 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 | Then I should see "Vegetarian" | 44 | Then I should see "Vegetarian" |
45 | And I should see "Steak" | 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 | @selenium | 50 | @selenium |
51 | Scenario: the show link is available just for categories with category tree | 51 | Scenario: the show link is available just for categories with category tree |
@@ -54,7 +54,7 @@ Feature: manage categories | @@ -54,7 +54,7 @@ Feature: manage categories | ||
54 | | Steak | Pig | true | | 54 | | Steak | Pig | true | |
55 | And I am on the homepage | 55 | And I am on the homepage |
56 | When I follow "Administration" | 56 | When I follow "Administration" |
57 | - And I follow "Manage Categories" | 57 | + And I follow "Categories" |
58 | Then I should see "Food Show" | 58 | Then I should see "Food Show" |
59 | When I follow "Show" | 59 | When I follow "Show" |
60 | Then I should see "Vegetarian" | 60 | Then I should see "Vegetarian" |
features/approve_article.feature
@@ -19,52 +19,52 @@ Feature: approve article | @@ -19,52 +19,52 @@ Feature: approve article | ||
19 | And "Maria Silva" is a member of "Sample Community" | 19 | And "Maria Silva" is a member of "Sample Community" |
20 | And "Joao Silva" is admin of "Sample Community" | 20 | And "Joao Silva" is admin of "Sample Community" |
21 | 21 | ||
22 | - @selenium | 22 | + @selenium-fixme |
23 | Scenario: edit an article before approval | 23 | Scenario: edit an article before approval |
24 | Given I am logged in as "mariasilva" | 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 | And I check "Sample Community" | 27 | And I check "Sample Community" |
28 | And I press "Spread this" | 28 | And I press "Spread this" |
29 | And I am logged in as "joaosilva" | 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 | And I fill in "Text" with "This is an article edited" | 32 | And I fill in "Text" with "This is an article edited" |
33 | And I choose "Accept" | 33 | And I choose "Accept" |
34 | And I press "Apply!" | 34 | And I press "Apply!" |
35 | - And I go to Sample Community's sitemap | 35 | + And I go to sample-community's sitemap |
36 | And I follow "Sample Article" | 36 | And I follow "Sample Article" |
37 | Then I should see "This is an article edited" | 37 | Then I should see "This is an article edited" |
38 | 38 | ||
39 | @selenium | 39 | @selenium |
40 | Scenario: reject an article with explanation | 40 | Scenario: reject an article with explanation |
41 | Given I am logged in as "mariasilva" | 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 | And I follow "Sample Article" | 43 | And I follow "Sample Article" |
44 | - And I follow "Spread" and wait | 44 | + And I follow "Spread" |
45 | And I check "Sample Community" | 45 | And I check "Sample Community" |
46 | And I press "Spread this" | 46 | And I press "Spread this" |
47 | And I am logged in as "joaosilva" | 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 | And I choose "Reject" | 50 | And I choose "Reject" |
51 | And I fill in "Rejection explanation" with "This is not an appropriate article for this community." | 51 | And I fill in "Rejection explanation" with "This is not an appropriate article for this community." |
52 | And I press "Apply!" | 52 | And I press "Apply!" |
53 | - When I go to Sample Community's sitemap | 53 | + When I go to sample-community's sitemap |
54 | Then I should not see "Sample Article" | 54 | Then I should not see "Sample Article" |
55 | 55 | ||
56 | @selenium | 56 | @selenium |
57 | Scenario: reject an article that was removed | 57 | Scenario: reject an article that was removed |
58 | Given I am logged in as "mariasilva" | 58 | Given I am logged in as "mariasilva" |
59 | And I follow "Dub Wars" | 59 | And I follow "Dub Wars" |
60 | - And I follow "Spread" and wait | 60 | + And I follow "Spread" |
61 | And I check "Sample Community" | 61 | And I check "Sample Community" |
62 | And I press "Spread this" | 62 | And I press "Spread this" |
63 | And I follow "Delete" | 63 | And I follow "Delete" |
64 | - And I press "Yes, I want." | 64 | + And I confirm the browser dialog |
65 | When I am logged in as "joaosilva" | 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 | And I choose "Reject" | 68 | And I choose "Reject" |
69 | And I fill in "Rejection explanation" with "Article was removed." | 69 | And I fill in "Rejection explanation" with "Article was removed." |
70 | And I press "Apply!" | 70 | And I press "Apply!" |
features/balloon.feature
@@ -12,33 +12,29 @@ Feature: balloon | @@ -12,33 +12,29 @@ Feature: balloon | ||
12 | @selenium | 12 | @selenium |
13 | Scenario: I should not see trigger if not enabled | 13 | Scenario: I should not see trigger if not enabled |
14 | Given feature "show_balloon_with_profile_links_when_clicked" is disabled on environment | 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 | Then I should not see "Profile links" | 16 | Then I should not see "Profile links" |
17 | 17 | ||
18 | @selenium | 18 | @selenium |
19 | Scenario: I should not see trigger by default | 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 | Then I should not see "Friends" | 22 | Then I should not see "Friends" |
26 | 23 | ||
27 | @selenium | 24 | @selenium |
28 | Scenario: I should see balloon when clicked on people block trigger | 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 | Then I should see "Friends" | 30 | Then I should see "Friends" |
36 | 31 | ||
37 | @selenium | 32 | @selenium |
38 | Scenario: I should see balloon when clicked on community block trigger | 33 | Scenario: I should see balloon when clicked on community block trigger |
39 | Given feature "show_balloon_with_profile_links_when_clicked" is enabled on environment | 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 | Then I should see "Members" | 38 | Then I should see "Members" |
43 | 39 | ||
44 | @selenium | 40 | @selenium |
@@ -56,7 +52,8 @@ Feature: balloon | @@ -56,7 +52,8 @@ Feature: balloon | ||
56 | @selenium | 52 | @selenium |
57 | Scenario: I should see balloon when clicked on page trigger | 53 | Scenario: I should see balloon when clicked on page trigger |
58 | Given feature "show_balloon_with_profile_links_when_clicked" is enabled on environment | 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 | Then I should see "Members" | 58 | Then I should see "Members" |
62 | And I should see "Agenda" | 59 | And I should see "Agenda" |
features/blog.feature
@@ -11,16 +11,16 @@ Feature: blog | @@ -11,16 +11,16 @@ Feature: blog | ||
11 | And I am logged in as "joaosilva" | 11 | And I am logged in as "joaosilva" |
12 | 12 | ||
13 | Scenario: create a blog | 13 | Scenario: create a blog |
14 | - Given I go to the Control panel | 14 | + Given I go to joaosilva's control panel |
15 | And I follow "Create blog" | 15 | And I follow "Create blog" |
16 | Then I should see "My Blog" | 16 | Then I should see "My Blog" |
17 | When I fill in "Title" with "My Blog" | 17 | When I fill in "Title" with "My Blog" |
18 | And I press "Save" | 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 | Then I should see "Configure blog" | 20 | Then I should see "Configure blog" |
21 | 21 | ||
22 | Scenario: redirect to blog after create blog from control panel | 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 | And I follow "Create blog" | 24 | And I follow "Create blog" |
25 | Then I should see "My Blog" | 25 | Then I should see "My Blog" |
26 | When I fill in "Title" with "My Blog" | 26 | When I fill in "Title" with "My Blog" |
@@ -28,7 +28,7 @@ Feature: blog | @@ -28,7 +28,7 @@ Feature: blog | ||
28 | Then I should be on /joaosilva/my-blog | 28 | Then I should be on /joaosilva/my-blog |
29 | 29 | ||
30 | Scenario: redirect to blog after create blog from cms | 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 | And I follow "Manage Content" | 32 | And I follow "Manage Content" |
33 | And I follow "New content" | 33 | And I follow "New content" |
34 | When I follow "Blog" | 34 | When I follow "Blog" |
@@ -37,13 +37,13 @@ Feature: blog | @@ -37,13 +37,13 @@ Feature: blog | ||
37 | Then I should be on /joaosilva/blog-from-cms | 37 | Then I should be on /joaosilva/blog-from-cms |
38 | 38 | ||
39 | Scenario: create multiple blogs | 39 | Scenario: create multiple blogs |
40 | - Given I go to the Control panel | 40 | + Given I go to joaosilva's control panel |
41 | And I follow "Manage Content" | 41 | And I follow "Manage Content" |
42 | And I follow "New content" | 42 | And I follow "New content" |
43 | And I follow "Blog" | 43 | And I follow "Blog" |
44 | And I fill in "Title" with "Blog One" | 44 | And I fill in "Title" with "Blog One" |
45 | And I press "Save" | 45 | And I press "Save" |
46 | - Then I go to the Control panel | 46 | + Then I go to joaosilva's control panel |
47 | And I follow "Manage Content" | 47 | And I follow "Manage Content" |
48 | And I follow "New content" | 48 | And I follow "New content" |
49 | And I follow "Blog" | 49 | And I follow "Blog" |
@@ -53,7 +53,7 @@ Feature: blog | @@ -53,7 +53,7 @@ Feature: blog | ||
53 | And I should be on /joaosilva/blog-two | 53 | And I should be on /joaosilva/blog-two |
54 | 54 | ||
55 | Scenario: cancel button back to cms | 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 | And I follow "Manage Content" | 57 | And I follow "Manage Content" |
58 | And I follow "New content" | 58 | And I follow "New content" |
59 | And I follow "Blog" | 59 | And I follow "Blog" |
@@ -61,7 +61,7 @@ Feature: blog | @@ -61,7 +61,7 @@ Feature: blog | ||
61 | Then I should be on /myprofile/joaosilva/cms | 61 | Then I should be on /myprofile/joaosilva/cms |
62 | 62 | ||
63 | Scenario: cancel button back to myprofile | 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 | And I follow "Create blog" | 65 | And I follow "Create blog" |
66 | When I follow "Cancel" within ".main-block" | 66 | When I follow "Cancel" within ".main-block" |
67 | Then I should be on /myprofile/joaosilva | 67 | Then I should be on /myprofile/joaosilva |
@@ -71,7 +71,7 @@ Feature: blog | @@ -71,7 +71,7 @@ Feature: blog | ||
71 | | owner | name | | 71 | | owner | name | |
72 | | joaosilva | Blog One | | 72 | | joaosilva | Blog One | |
73 | | joaosilva | Blog Two | | 73 | | joaosilva | Blog Two | |
74 | - And I go to the Control panel | 74 | + And I go to joaosilva's control panel |
75 | When I follow "Configure blog" | 75 | When I follow "Configure blog" |
76 | Then I should be on /myprofile/joaosilva/cms | 76 | Then I should be on /myprofile/joaosilva/cms |
77 | 77 | ||
@@ -79,7 +79,7 @@ Feature: blog | @@ -79,7 +79,7 @@ Feature: blog | ||
79 | Given the following blogs | 79 | Given the following blogs |
80 | | owner | name | | 80 | | owner | name | |
81 | | joaosilva | Blog One | | 81 | | joaosilva | Blog One | |
82 | - And I go to the Control panel | 82 | + And I go to joaosilva's control panel |
83 | When I follow "Configure blog" | 83 | When I follow "Configure blog" |
84 | Then I should be on edit "Blog One" by joaosilva | 84 | Then I should be on edit "Blog One" by joaosilva |
85 | 85 | ||
@@ -89,14 +89,14 @@ Feature: blog | @@ -89,14 +89,14 @@ Feature: blog | ||
89 | | owner | name | | 89 | | owner | name | |
90 | | joaosilva | Blog One | | 90 | | joaosilva | Blog One | |
91 | And I go to /joaosilva/blog-one | 91 | And I go to /joaosilva/blog-one |
92 | - When I follow "Configure blog" and wait | 92 | + When I follow "Configure blog" |
93 | Then I should be on edit "Blog One" by joaosilva | 93 | Then I should be on edit "Blog One" by joaosilva |
94 | 94 | ||
95 | Scenario: change address of blog | 95 | Scenario: change address of blog |
96 | Given the following blogs | 96 | Given the following blogs |
97 | | owner | name | | 97 | | owner | name | |
98 | | joaosilva | Blog One | | 98 | | joaosilva | Blog One | |
99 | - And I go to the Control panel | 99 | + And I go to joaosilva's control panel |
100 | And I follow "Configure blog" | 100 | And I follow "Configure blog" |
101 | And I fill in "Address" with "blog-two" | 101 | And I fill in "Address" with "blog-two" |
102 | And I press "Save" | 102 | And I press "Save" |
@@ -104,7 +104,7 @@ Feature: blog | @@ -104,7 +104,7 @@ Feature: blog | ||
104 | Then I should see "Blog One" | 104 | Then I should see "Blog One" |
105 | 105 | ||
106 | Scenario: display tag list field when creating new blog | 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 | And I follow "Manage Content" | 108 | And I follow "Manage Content" |
109 | And I follow "New content" | 109 | And I follow "New content" |
110 | When I follow "Blog" | 110 | When I follow "Blog" |
features/browse.feature
@@ -17,32 +17,34 @@ Feature: browse | @@ -17,32 +17,34 @@ Feature: browse | ||
17 | 17 | ||
18 | @selenium | 18 | @selenium |
19 | Scenario: Show people browse menu | 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 | @selenium | 29 | @selenium |
29 | Scenario: People browse menu should add logged information | 30 | Scenario: People browse menu should add logged information |
30 | Given I am logged in as "joaosilva" | 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 | And I should not see "Invite friends" | 35 | And I should not see "Invite friends" |
35 | And I should not see "My friends" | 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 | And I should see "Invite friends" | 42 | And I should see "Invite friends" |
41 | And I should see "My friends" | 43 | And I should see "My friends" |
42 | 44 | ||
43 | Scenario: Browse people by query | 45 | Scenario: Browse people by query |
44 | Given I go to /search/people | 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 | And I press "Search" | 48 | And I press "Search" |
47 | Then I should see "Joao Silva" | 49 | Then I should see "Joao Silva" |
48 | And I should see "Pedro Silva" | 50 | And I should see "Pedro Silva" |
@@ -54,31 +56,33 @@ Feature: browse | @@ -54,31 +56,33 @@ Feature: browse | ||
54 | Scenario: Communities browse menu should add logged information | 56 | Scenario: Communities browse menu should add logged information |
55 | Given I am logged in as "joaosilva" | 57 | Given I am logged in as "joaosilva" |
56 | When I go to /joaosilva | 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 | And I should not see "My communities" | 62 | And I should not see "My communities" |
61 | And I should not see "New community" | 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 | And I should see "My communities" | 69 | And I should see "My communities" |
67 | And I should see "New community" | 70 | And I should see "New community" |
68 | 71 | ||
69 | @selenium | 72 | @selenium |
70 | Scenario: Show communities browse menu | 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 | Scenario: Browse communities by query | 83 | Scenario: Browse communities by query |
80 | When I go to /search/communities | 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 | And I press "Search" | 86 | And I press "Search" |
83 | Then I should see "Community Neto" | 87 | Then I should see "Community Neto" |
84 | And I should not see "Joao Silva" | 88 | And I should not see "Joao Silva" |
@@ -88,13 +92,14 @@ Feature: browse | @@ -88,13 +92,14 @@ Feature: browse | ||
88 | 92 | ||
89 | @selenium | 93 | @selenium |
90 | Scenario: Show contents browse menu | 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 | Scenario: Browse contents by query | 104 | Scenario: Browse contents by query |
100 | Given the following articles | 105 | Given the following articles |
@@ -103,7 +108,7 @@ Feature: browse | @@ -103,7 +108,7 @@ Feature: browse | ||
103 | | joaosilva | Bees and ants are insects | this is another article | | 108 | | joaosilva | Bees and ants are insects | this is another article | |
104 | | joaosilva | Ants are small | this is another article | | 109 | | joaosilva | Ants are small | this is another article | |
105 | When I go to /search/contents | 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 | And I press "Search" | 112 | And I press "Search" |
108 | Then I should see "Bees can fly" | 113 | Then I should see "Bees can fly" |
109 | And I should see "Bees and ants are insects" | 114 | And I should see "Bees and ants are insects" |
features/browse_catalogs.feature
@@ -18,7 +18,7 @@ Feature: browse catalogs | @@ -18,7 +18,7 @@ Feature: browse catalogs | ||
18 | 18 | ||
19 | Scenario: display titles | 19 | Scenario: display titles |
20 | Then I should see "Associação de Artesanato de Bonito" | 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 | Scenario: display the simplest possible product | 23 | Scenario: display the simplest possible product |
24 | Given the following products | 24 | Given the following products |
@@ -132,7 +132,7 @@ Feature: browse catalogs | @@ -132,7 +132,7 @@ Feature: browse catalogs | ||
132 | And I should not see "qualifiers" | 132 | And I should not see "qualifiers" |
133 | And I should not see "price composition" | 133 | And I should not see "price composition" |
134 | 134 | ||
135 | - @selenium | 135 | + @selenium-fixme |
136 | Scenario: display description button when needed (but not the description) | 136 | Scenario: display description button when needed (but not the description) |
137 | Given the following products | 137 | Given the following products |
138 | | owner | category | name | price | description | | 138 | | owner | category | name | price | description | |
@@ -142,22 +142,22 @@ Feature: browse catalogs | @@ -142,22 +142,22 @@ Feature: browse catalogs | ||
142 | Then I should see "Produto2" within "li.product-link" | 142 | Then I should see "Produto2" within "li.product-link" |
143 | And I should see "12.34" within "span.product-price" | 143 | And I should see "12.34" within "span.product-price" |
144 | And I should see "description" within "#product-description-button" | 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 | And I should see "A small description" within "#product-description" | 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 | Scenario: display description when button is clicked | 150 | Scenario: display description when button is clicked |
151 | Given the following products | 151 | Given the following products |
152 | | owner | category | name | price | description | | 152 | | owner | category | name | price | description | |
153 | | artebonito | categ1 | Produto3 | 12.34 | A small description for a product that doesn't exist. | | 153 | | artebonito | categ1 | Produto3 | 12.34 | A small description for a product that doesn't exist. | |
154 | And I am on /catalog/artebonito | 154 | And I am on /catalog/artebonito |
155 | And I reload and wait for the page | 155 | And I reload and wait for the page |
156 | - When I click "product-description-button" | 156 | + When I follow "product-description-button" |
157 | Then I should see "A small description" within "#product-description" | 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 | Scenario: hide description | 161 | Scenario: hide description |
162 | Given the following products | 162 | Given the following products |
163 | | owner | category | name | price | description | | 163 | | owner | category | name | price | description | |
@@ -198,7 +198,7 @@ Feature: browse catalogs | @@ -198,7 +198,7 @@ Feature: browse catalogs | ||
198 | And I should see "Organic" within "span.search-product-qualifier" | 198 | And I should see "Organic" within "span.search-product-qualifier" |
199 | And I should not see "price composition" | 199 | And I should not see "price composition" |
200 | 200 | ||
201 | - @selenium | 201 | + @selenium-fixme |
202 | Scenario: not display price composition button if price is not described | 202 | Scenario: not display price composition button if price is not described |
203 | Given the following product | 203 | Given the following product |
204 | | owner | category | name | price | | 204 | | owner | category | name | price | |
@@ -212,7 +212,7 @@ Feature: browse catalogs | @@ -212,7 +212,7 @@ Feature: browse catalogs | ||
212 | And I should see "10.00" within "span.product-price" | 212 | And I should see "10.00" within "span.product-price" |
213 | And the "#product-price-composition-button" should not be visible | 213 | And the "#product-price-composition-button" should not be visible |
214 | 214 | ||
215 | - @selenium | 215 | + @selenium-fixme |
216 | Scenario: display price composition button (but not inputs) | 216 | Scenario: display price composition button (but not inputs) |
217 | Given the following product | 217 | Given the following product |
218 | | owner | category | name | price | | 218 | | owner | category | name | price | |
@@ -229,7 +229,7 @@ Feature: browse catalogs | @@ -229,7 +229,7 @@ Feature: browse catalogs | ||
229 | And I should see "food" within "#product-price-composition" | 229 | And I should see "food" within "#product-price-composition" |
230 | And I should see "10.00" within "#product-price-composition" | 230 | And I should see "10.00" within "#product-price-composition" |
231 | 231 | ||
232 | - @selenium | 232 | + @selenium-fixme |
233 | Scenario: display price composition when button is clicked | 233 | Scenario: display price composition when button is clicked |
234 | Given the following product | 234 | Given the following product |
235 | | owner | category | name | price | | 235 | | owner | category | name | price | |
@@ -244,7 +244,7 @@ Feature: browse catalogs | @@ -244,7 +244,7 @@ Feature: browse catalogs | ||
244 | And I should see "food" within "#product-price-composition" | 244 | And I should see "food" within "#product-price-composition" |
245 | And I should see "10.88" within "#product-price-composition" | 245 | And I should see "10.88" within "#product-price-composition" |
246 | 246 | ||
247 | - @selenium | 247 | + @selenium-fixme |
248 | Scenario: display inputs and raw materials button when not completely filled | 248 | Scenario: display inputs and raw materials button when not completely filled |
249 | Given the following product | 249 | Given the following product |
250 | | owner | category | name | price | | 250 | | owner | category | name | price | |
@@ -260,7 +260,7 @@ Feature: browse catalogs | @@ -260,7 +260,7 @@ Feature: browse catalogs | ||
260 | Then the "#inputs-button" should be visible | 260 | Then the "#inputs-button" should be visible |
261 | And I should see "inputs and raw materials" within "#inputs-button" | 261 | And I should see "inputs and raw materials" within "#inputs-button" |
262 | 262 | ||
263 | - @selenium | 263 | + @selenium-fixme |
264 | Scenario: display inputs and raw materials button | 264 | Scenario: display inputs and raw materials button |
265 | Given the following product | 265 | Given the following product |
266 | | owner | category | name | price | | 266 | | owner | category | name | price | |
@@ -280,7 +280,7 @@ Feature: browse catalogs | @@ -280,7 +280,7 @@ Feature: browse catalogs | ||
280 | And the "#inputs-description" should not be visible | 280 | And the "#inputs-description" should not be visible |
281 | And I should see "7.0 Liter of food" within "#inputs-description" | 281 | And I should see "7.0 Liter of food" within "#inputs-description" |
282 | 282 | ||
283 | - @selenium | 283 | + @selenium-fixme |
284 | Scenario: display inputs and raw materials description | 284 | Scenario: display inputs and raw materials description |
285 | Given the following product | 285 | Given the following product |
286 | | owner | category | name | price | | 286 | | owner | category | name | price | |
@@ -297,7 +297,7 @@ Feature: browse catalogs | @@ -297,7 +297,7 @@ Feature: browse catalogs | ||
297 | Then the "#inputs-description" should be visible | 297 | Then the "#inputs-description" should be visible |
298 | And I should see "7.0 Liter of food" within "#inputs-description" | 298 | And I should see "7.0 Liter of food" within "#inputs-description" |
299 | 299 | ||
300 | - @selenium | 300 | + @selenium-fixme |
301 | Scenario: hide inputs and raw materials | 301 | Scenario: hide inputs and raw materials |
302 | Given the following product | 302 | Given the following product |
303 | | owner | category | name | price | | 303 | | owner | category | name | price | |
features/browse_enterprises.feature
@@ -24,7 +24,7 @@ Scenario: show profile links button | @@ -24,7 +24,7 @@ Scenario: show profile links button | ||
24 | And I should not see "Members" | 24 | And I should not see "Members" |
25 | And I should not see "Agenda" | 25 | And I should not see "Agenda" |
26 | 26 | ||
27 | -@selenium | 27 | +@selenium-fixme |
28 | Scenario: show profile links when clicked | 28 | Scenario: show profile links when clicked |
29 | Given I am on /assets/enterprises | 29 | Given I am on /assets/enterprises |
30 | When I follow "Profile links" | 30 | When I follow "Profile links" |
@@ -32,7 +32,7 @@ Scenario: show profile links when clicked | @@ -32,7 +32,7 @@ Scenario: show profile links when clicked | ||
32 | And I should see "Members" within "ul.menu-submenu-list" | 32 | And I should see "Members" within "ul.menu-submenu-list" |
33 | And I should see "Agenda" within "ul.menu-submenu-list" | 33 | And I should see "Agenda" within "ul.menu-submenu-list" |
34 | 34 | ||
35 | -@selenium | 35 | +@selenium-fixme |
36 | Scenario: go to catalog when click on products link | 36 | Scenario: go to catalog when click on products link |
37 | Given I am on /assets/enterprises | 37 | Given I am on /assets/enterprises |
38 | When I follow "Profile links" | 38 | When I follow "Profile links" |
features/categories_block.feature
@@ -25,7 +25,7 @@ Feature: categories_block | @@ -25,7 +25,7 @@ Feature: categories_block | ||
25 | | environment | CategoriesBlock | | 25 | | environment | CategoriesBlock | |
26 | And I am logged in as admin | 26 | And I am logged in as admin |
27 | 27 | ||
28 | - @selenium | 28 | + @selenium @ignore-hidden-elements |
29 | Scenario: List just product categories | 29 | Scenario: List just product categories |
30 | Given I go to /admin/environment_design | 30 | Given I go to /admin/environment_design |
31 | And I follow "Edit" within ".categories-block" | 31 | And I follow "Edit" within ".categories-block" |
@@ -33,11 +33,11 @@ Feature: categories_block | @@ -33,11 +33,11 @@ Feature: categories_block | ||
33 | When I press "Save" | 33 | When I press "Save" |
34 | Then I should see "Food" | 34 | Then I should see "Food" |
35 | And I should see "Book" | 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 | Scenario: Show submenu if it exists | 41 | Scenario: Show submenu if it exists |
42 | Given I go to /admin/environment_design | 42 | Given I go to /admin/environment_design |
43 | And I follow "Edit" within ".categories-block" | 43 | And I follow "Edit" within ".categories-block" |
@@ -45,40 +45,39 @@ Feature: categories_block | @@ -45,40 +45,39 @@ Feature: categories_block | ||
45 | And I press "Save" | 45 | And I press "Save" |
46 | Then I should see "Food" | 46 | Then I should see "Food" |
47 | And I should see "Book" | 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 | Then I should see "Literature" | 52 | Then I should see "Literature" |
53 | - When I click ".category-link-expand category-root" | 53 | + When I follow "block_2_category_1" |
54 | Then I should see "Vegetarian" | 54 | Then I should see "Vegetarian" |
55 | And I should see "Steak" | 55 | And I should see "Steak" |
56 | And I should not see "Fiction" | 56 | And I should not see "Fiction" |
57 | 57 | ||
58 | - @selenium | 58 | + @selenium @ignore-hidden-elements |
59 | Scenario: Show only one submenu per time | 59 | Scenario: Show only one submenu per time |
60 | Given I go to /admin/environment_design | 60 | Given I go to /admin/environment_design |
61 | And I follow "Edit" within ".categories-block" | 61 | And I follow "Edit" within ".categories-block" |
62 | And I check "Product" | 62 | And I check "Product" |
63 | And I press "Save" | 63 | And I press "Save" |
64 | Then I should see "Book" | 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 | Then I should see "Literature" | 67 | Then I should see "Literature" |
68 | 68 | ||
69 | - @selenium | 69 | + @selenium @ignore-hidden-elements |
70 | Scenario: List just general categories | 70 | Scenario: List just general categories |
71 | Given I go to /admin/environment_design | 71 | Given I go to /admin/environment_design |
72 | And I follow "Edit" within ".categories-block" | 72 | And I follow "Edit" within ".categories-block" |
73 | - And I check "Generic Category" | 73 | + And I check "Generic category" |
74 | When I press "Save" | 74 | When I press "Save" |
75 | Then I should see "Wood" | 75 | Then I should see "Wood" |
76 | 76 | ||
77 | - @selenium | 77 | + @selenium @ignore-hidden-elements |
78 | Scenario: List just regions | 78 | Scenario: List just regions |
79 | Given I go to /admin/environment_design | 79 | Given I go to /admin/environment_design |
80 | And I follow "Edit" within ".categories-block" | 80 | And I follow "Edit" within ".categories-block" |
81 | And I check "Region" | 81 | And I check "Region" |
82 | When I press "Save" | 82 | When I press "Save" |
83 | Then I should see "Bahia" | 83 | Then I should see "Bahia" |
84 | - |
features/change_organization_name.feature
@@ -12,12 +12,12 @@ Feature: change organization name | @@ -12,12 +12,12 @@ Feature: change organization name | ||
12 | | joaosilva | Joao Silva | | 12 | | joaosilva | Joao Silva | |
13 | And "Joao Silva" is admin of "Sample Community" | 13 | And "Joao Silva" is admin of "Sample Community" |
14 | And I am logged in as "joaosilva" | 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 | And I follow "Community Info and settings" | 16 | And I follow "Community Info and settings" |
17 | And I fill in "Name" with "New Sample Community" | 17 | And I fill in "Name" with "New Sample Community" |
18 | When I press "Save" | 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 | Scenario: changing enterprise's name | 22 | Scenario: changing enterprise's name |
23 | Given the following enterprises | 23 | Given the following enterprises |
@@ -28,8 +28,9 @@ Feature: change organization name | @@ -28,8 +28,9 @@ Feature: change organization name | ||
28 | | joaosilva | Joao Silva | | 28 | | joaosilva | Joao Silva | |
29 | And "Joao Silva" is admin of "Sample Enterprise" | 29 | And "Joao Silva" is admin of "Sample Enterprise" |
30 | And I am logged in as "joaosilva" | 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 | And I follow "Enterprise Info and settings" | 32 | And I follow "Enterprise Info and settings" |
33 | And I fill in "Name" with "New Sample Enterprise" | 33 | And I fill in "Name" with "New Sample Enterprise" |
34 | When I press "Save" | 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,7 +17,7 @@ Feature: chat | ||
17 | Scenario: provide link to open chat | 17 | Scenario: provide link to open chat |
18 | Given feature "xmpp_chat" is enabled on environment | 18 | Given feature "xmpp_chat" is enabled on environment |
19 | And I am logged in as "tame" | 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 | @selenium | 22 | @selenium |
23 | Scenario: provide the chat online users content | 23 | Scenario: provide the chat online users content |
@@ -30,18 +30,18 @@ Feature: chat | @@ -30,18 +30,18 @@ Feature: chat | ||
30 | Given the profile "tame" has no blocks | 30 | Given the profile "tame" has no blocks |
31 | And feature "xmpp_chat" is enabled on environment | 31 | And feature "xmpp_chat" is enabled on environment |
32 | And I am logged in as "tame" | 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 | Then I should see "Maria Silva" | 35 | Then I should see "Maria Silva" |
36 | And I should see "Jose Silva" | 36 | And I should see "Jose Silva" |
37 | 37 | ||
38 | Scenario: not provide link to chat when environment not support that | 38 | Scenario: not provide link to chat when environment not support that |
39 | Given I am logged in as "tame" | 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 | Scenario: not provide link to chat when the user is logged out | 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 | @selenium | 46 | @selenium |
47 | Scenario: not provide the chat online users list when environment not support that | 47 | Scenario: not provide the chat online users list when environment not support that |
@@ -71,8 +71,8 @@ Feature: chat | @@ -71,8 +71,8 @@ Feature: chat | ||
71 | Given the profile "tame" has no blocks | 71 | Given the profile "tame" has no blocks |
72 | And feature "xmpp_chat" is enabled on environment | 72 | And feature "xmpp_chat" is enabled on environment |
73 | And I am logged in as "tame" | 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 | And I follow "Maria Silva" | 76 | And I follow "Maria Silva" |
77 | And I select window "noosfero_chat" | 77 | And I select window "noosfero_chat" |
78 | Then I should see "Chat - Colivre.net - Friends online (0)" | 78 | Then I should see "Chat - Colivre.net - Friends online (0)" |
@@ -83,7 +83,7 @@ Feature: chat | @@ -83,7 +83,7 @@ Feature: chat | ||
83 | And I am logged in as "tame" | 83 | And I am logged in as "tame" |
84 | When I follow "Open chat" | 84 | When I follow "Open chat" |
85 | And I select window "noosfero_chat" | 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 | @selenium | 88 | @selenium |
89 | Scenario: view options to change my chat status through menu | 89 | Scenario: view options to change my chat status through menu |
@@ -91,13 +91,13 @@ Feature: chat | @@ -91,13 +91,13 @@ Feature: chat | ||
91 | And I am logged in as "tame" | 91 | And I am logged in as "tame" |
92 | And I follow "Open chat" | 92 | And I follow "Open chat" |
93 | When I select window "noosfero_chat" | 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 | When I follow "Offline" | 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 | @selenium | 102 | @selenium |
103 | Scenario: link to open chatroom of a community | 103 | Scenario: link to open chatroom of a community |
@@ -107,8 +107,8 @@ Feature: chat | @@ -107,8 +107,8 @@ Feature: chat | ||
107 | And "Tame" is a member of "Autoramas" | 107 | And "Tame" is a member of "Autoramas" |
108 | And feature "xmpp_chat" is enabled on environment | 108 | And feature "xmpp_chat" is enabled on environment |
109 | And I am logged in as "tame" | 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 | @selenium | 113 | @selenium |
114 | Scenario: not see link to open chatroom of a community if not a member | 114 | Scenario: not see link to open chatroom of a community if not a member |
@@ -117,8 +117,8 @@ Feature: chat | @@ -117,8 +117,8 @@ Feature: chat | ||
117 | | autoramas | Autoramas | | 117 | | autoramas | Autoramas | |
118 | And feature "xmpp_chat" is enabled on environment | 118 | And feature "xmpp_chat" is enabled on environment |
119 | And I am logged in as "tame" | 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 | @selenium | 123 | @selenium |
124 | Scenario: not see link to open chatroom of a community if xmpp_chat disabled | 124 | Scenario: not see link to open chatroom of a community if xmpp_chat disabled |
@@ -127,8 +127,8 @@ Feature: chat | @@ -127,8 +127,8 @@ Feature: chat | ||
127 | | autoramas | Autoramas | | 127 | | autoramas | Autoramas | |
128 | And "Tame" is a member of "Autoramas" | 128 | And "Tame" is a member of "Autoramas" |
129 | And I am logged in as "tame" | 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 | @selenium | 133 | @selenium |
134 | Scenario: open chatroom of a community in a new window | 134 | Scenario: open chatroom of a community in a new window |
@@ -138,7 +138,7 @@ Feature: chat | @@ -138,7 +138,7 @@ Feature: chat | ||
138 | | autoramas | Autoramas | | 138 | | autoramas | Autoramas | |
139 | And "Tame" is a member of "Autoramas" | 139 | And "Tame" is a member of "Autoramas" |
140 | And I am logged in as "tame" | 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 | And I follow "Enter chat room" | 142 | And I follow "Enter chat room" |
143 | And I select window "noosfero_chat" | 143 | And I select window "noosfero_chat" |
144 | Then I should see "Chat - Colivre.net - Friends online (0)" | 144 | Then I should see "Chat - Colivre.net - Friends online (0)" |
features/clickable_images.feature
@@ -22,7 +22,7 @@ Feature: clickable images | @@ -22,7 +22,7 @@ Feature: clickable images | ||
22 | | owner | name | image | dimensions | | 22 | | owner | name | image | dimensions | |
23 | | booking | real | rails.png | 50x64 | | 23 | | booking | real | rails.png | 50x64 | |
24 | When I go to /booking/real | 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 | @selenium | 27 | @selenium |
28 | Scenario: not show link if image does not have dimensions set | 28 | Scenario: not show link if image does not have dimensions set |
@@ -30,9 +30,9 @@ Feature: clickable images | @@ -30,9 +30,9 @@ Feature: clickable images | ||
30 | | owner | name | image | | 30 | | owner | name | image | |
31 | | booking | not set | rails.png | | 31 | | booking | not set | rails.png | |
32 | When I go to /booking/not-set | 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 | Scenario: copy style from image | 36 | Scenario: copy style from image |
37 | Given the following article with image | 37 | Given the following article with image |
38 | | owner | name | image | style | dimensions | | 38 | | owner | name | image | style | dimensions | |
@@ -40,11 +40,11 @@ Feature: clickable images | @@ -40,11 +40,11 @@ Feature: clickable images | ||
40 | When I go to /booking/with-style | 40 | When I go to /booking/with-style |
41 | Then "zoomable-image" should be right aligned | 41 | Then "zoomable-image" should be right aligned |
42 | 42 | ||
43 | - @selenium | 43 | + @selenium-fixme |
44 | Scenario: zoom image | 44 | Scenario: zoom image |
45 | Given the following article with image | 45 | Given the following article with image |
46 | | owner | name | image | dimensions | | 46 | | owner | name | image | dimensions | |
47 | | booking | zoom | rails.png | 25x32 | | 47 | | booking | zoom | rails.png | 25x32 | |
48 | When I go to /booking/zoom | 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,19 +14,23 @@ Feature: comment | ||
14 | | article | author | title | body | | 14 | | article | author | title | body | |
15 | | article with comment | booking | hi | how are you? | | 15 | | article with comment | booking | hi | how are you? | |
16 | | article with comment | booking | hello | i am fine | | 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 | Scenario: not post a comment without javascript | 20 | Scenario: not post a comment without javascript |
19 | Given I am on /booking/article-to-comment | 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 | And I fill in "Title" with "Hey ho, let's go!" | 23 | And I fill in "Title" with "Hey ho, let's go!" |
23 | And I fill in "Enter your comment" with "Hey ho, let's go!" | 24 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
24 | When I press "Post comment" | 25 | When I press "Post comment" |
25 | Then I should not see "Hey ho, let's go" | 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 | Scenario: post a comment while not authenticated | 31 | Scenario: post a comment while not authenticated |
29 | Given I am on /booking/article-to-comment | 32 | Given I am on /booking/article-to-comment |
33 | + And I follow "Post a comment" | ||
30 | And I fill in "Name" with "Joey Ramone" | 34 | And I fill in "Name" with "Joey Ramone" |
31 | And I fill in "e-mail" with "joey@ramones.com" | 35 | And I fill in "e-mail" with "joey@ramones.com" |
32 | And I fill in "Title" with "Hey ho, let's go!" | 36 | And I fill in "Title" with "Hey ho, let's go!" |
@@ -36,8 +40,8 @@ Feature: comment | @@ -36,8 +40,8 @@ Feature: comment | ||
36 | 40 | ||
37 | @selenium | 41 | @selenium |
38 | Scenario: post comment while authenticated | 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 | And I fill in "Title" with "Hey ho, let's go!" | 45 | And I fill in "Title" with "Hey ho, let's go!" |
42 | And I fill in "Enter your comment" with "Hey ho, let's go!" | 46 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
43 | When I press "Post comment" | 47 | When I press "Post comment" |
@@ -48,8 +52,8 @@ Feature: comment | @@ -48,8 +52,8 @@ Feature: comment | ||
48 | Given the following files | 52 | Given the following files |
49 | | owner | file | mime | | 53 | | owner | file | mime | |
50 | | booking | rails.png | image/png | | 54 | | booking | rails.png | image/png | |
51 | - Given I am logged in as "booking" | ||
52 | And I am on /booking/rails.png?view=true | 55 | And I am on /booking/rails.png?view=true |
56 | + And I follow "Post a comment" | ||
53 | And I fill in "Title" with "Hey ho, let's go!" | 57 | And I fill in "Title" with "Hey ho, let's go!" |
54 | And I fill in "Enter your comment" with "Hey ho, let's go!" | 58 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
55 | When I press "Post comment" | 59 | When I press "Post comment" |
@@ -57,35 +61,34 @@ Feature: comment | @@ -57,35 +61,34 @@ Feature: comment | ||
57 | 61 | ||
58 | @selenium | 62 | @selenium |
59 | Scenario: show error messages when make a blank comment | 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 | When I press "Post comment" | 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 | Scenario: disable post comment button | 70 | Scenario: disable post comment button |
68 | Given I am on /booking/article-to-comment | 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 | And I fill in "Title" with "Hey ho, let's go!" | 73 | And I fill in "Title" with "Hey ho, let's go!" |
72 | And I fill in "Enter your comment" with "Hey ho, let's go!" | 74 | And I fill in "Enter your comment" with "Hey ho, let's go!" |
73 | When I press "Post comment" | 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 | @selenium | 80 | @selenium |
78 | Scenario: render comment form and go to bottom | 81 | Scenario: render comment form and go to bottom |
79 | Given I am on /booking/article-with-comment | 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 | @selenium | 87 | @selenium |
86 | Scenario: keep comments field filled while trying to do a comment | 88 | Scenario: keep comments field filled while trying to do a comment |
87 | Given I am on /booking/article-with-comment | 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 | When I press "Post comment" | 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,7 +25,7 @@ Feature: comment | ||
25 | Then I should not see "Enter your comment" within "div.comment-balloon" | 25 | Then I should not see "Enter your comment" within "div.comment-balloon" |
26 | And I should see "Reply" within "div.comment-balloon" | 26 | And I should see "Reply" within "div.comment-balloon" |
27 | 27 | ||
28 | - @selenium | 28 | + @selenium-fixme |
29 | Scenario: show error messages when make a blank comment reply | 29 | Scenario: show error messages when make a blank comment reply |
30 | Given I am logged in as "booking" | 30 | Given I am logged in as "booking" |
31 | And I go to /booking/article-to-comment | 31 | And I go to /booking/article-to-comment |
@@ -51,9 +51,9 @@ Feature: comment | @@ -51,9 +51,9 @@ Feature: comment | ||
51 | Given I am on /booking/article-to-comment | 51 | Given I am on /booking/article-to-comment |
52 | When I follow "Reply" within ".comment-balloon" | 52 | When I follow "Reply" within ".comment-balloon" |
53 | And I follow "Cancel" within ".comment-balloon" | 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 | Scenario: not render same reply form twice | 57 | Scenario: not render same reply form twice |
58 | Given I am on /booking/article-to-comment | 58 | Given I am on /booking/article-to-comment |
59 | When I follow "Reply" within ".comment-balloon" | 59 | When I follow "Reply" within ".comment-balloon" |
@@ -62,7 +62,7 @@ Feature: comment | @@ -62,7 +62,7 @@ Feature: comment | ||
62 | Then there should be 1 "comment_form" within "comment_reply" | 62 | Then there should be 1 "comment_form" within "comment_reply" |
63 | And I should see "Enter your comment" within "div.comment_reply.opened" | 63 | And I should see "Enter your comment" within "div.comment_reply.opened" |
64 | 64 | ||
65 | - @selenium | 65 | + @selenium-fixme |
66 | Scenario: reply a comment | 66 | Scenario: reply a comment |
67 | Given I go to /booking/another-article | 67 | Given I go to /booking/another-article |
68 | And I follow "Reply" within ".comment-balloon" | 68 | And I follow "Reply" within ".comment-balloon" |
@@ -74,7 +74,7 @@ Feature: comment | @@ -74,7 +74,7 @@ Feature: comment | ||
74 | Then I should see "Hey ho, let's go" within "ul.comment-replies" | 74 | Then I should see "Hey ho, let's go" within "ul.comment-replies" |
75 | And there should be 1 "comment-replies" within "article-comment" | 75 | And there should be 1 "comment-replies" within "article-comment" |
76 | 76 | ||
77 | - @selenium | 77 | + @selenium-fixme |
78 | Scenario: redirect to right place after reply a picture comment | 78 | Scenario: redirect to right place after reply a picture comment |
79 | Given the following files | 79 | Given the following files |
80 | | owner | file | mime | | 80 | | owner | file | mime | |
features/contact.feature
@@ -14,8 +14,8 @@ In order to ask questions and solve problems | @@ -14,8 +14,8 @@ In order to ask questions and solve problems | ||
14 | 14 | ||
15 | @selenium | 15 | @selenium |
16 | Scenario: without states | 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 | Then I should not see "City and state" | 19 | Then I should not see "City and state" |
20 | 20 | ||
21 | @selenium | 21 | @selenium |
@@ -23,7 +23,6 @@ In order to ask questions and solve problems | @@ -23,7 +23,6 @@ In order to ask questions and solve problems | ||
23 | Given the following states | 23 | Given the following states |
24 | | name | | 24 | | name | |
25 | | Bahia | | 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 | Then I should see "City and state" | 28 | Then I should see "City and state" |
29 | - |
features/create_community.feature
@@ -11,7 +11,7 @@ Feature: create community | @@ -11,7 +11,7 @@ Feature: create community | ||
11 | Scenario: a user creates a community | 11 | Scenario: a user creates a community |
12 | Given I am logged in as "joaosilva" | 12 | Given I am logged in as "joaosilva" |
13 | And feature "admin_must_approve_new_communities" is disabled on environment | 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 | And I follow "Manage my groups" | 15 | And I follow "Manage my groups" |
16 | When I follow "Create a new community" | 16 | When I follow "Create a new community" |
17 | And I fill in "Name" with "Fancy community" | 17 | And I fill in "Name" with "Fancy community" |
@@ -22,7 +22,7 @@ Feature: create community | @@ -22,7 +22,7 @@ Feature: create community | ||
22 | Scenario: a user creates a community when environment moderates it | 22 | Scenario: a user creates a community when environment moderates it |
23 | Given I am logged in as "joaosilva" | 23 | Given I am logged in as "joaosilva" |
24 | And feature "admin_must_approve_new_communities" is enabled on environment | 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 | And I follow "Manage my groups" | 26 | And I follow "Manage my groups" |
27 | And I follow "Create a new community" | 27 | And I follow "Create a new community" |
28 | And I fill in "Name" with "Community for moderation" | 28 | And I fill in "Name" with "Community for moderation" |
@@ -32,7 +32,7 @@ Feature: create community | @@ -32,7 +32,7 @@ Feature: create community | ||
32 | Scenario: a user tries to create a community without a name | 32 | Scenario: a user tries to create a community without a name |
33 | Given I am logged in as "joaosilva" | 33 | Given I am logged in as "joaosilva" |
34 | And feature "admin_must_approve_new_communities" is disabled on environment | 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 | And I follow "Manage my groups" | 36 | And I follow "Manage my groups" |
37 | When I follow "Create a new community" | 37 | When I follow "Create a new community" |
38 | And I press "Create" | 38 | And I press "Create" |
@@ -42,20 +42,20 @@ Feature: create community | @@ -42,20 +42,20 @@ Feature: create community | ||
42 | Given I am logged in as admin | 42 | Given I am logged in as admin |
43 | And feature "admin_must_approve_new_communities" is enabled on environment | 43 | And feature "admin_must_approve_new_communities" is enabled on environment |
44 | When I create community "Community for approval" | 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 | Then I should see "admin_user wants to create community Community for approval" | 46 | Then I should see "admin_user wants to create community Community for approval" |
47 | 47 | ||
48 | Scenario: environment admin accepts new community task | 48 | Scenario: environment admin accepts new community task |
49 | Given I am logged in as admin | 49 | Given I am logged in as admin |
50 | And feature "admin_must_approve_new_communities" is enabled on environment | 50 | And feature "admin_must_approve_new_communities" is enabled on environment |
51 | When I create community "Community for approval" | 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 | And I follow "Process requests" | 53 | And I follow "Process requests" |
54 | And I should see "admin_user wants to create community Community for approval" | 54 | And I should see "admin_user wants to create community Community for approval" |
55 | And I choose "Accept" | 55 | And I choose "Accept" |
56 | When I press "Apply!" | 56 | When I press "Apply!" |
57 | Then I should not see "admin_user wants to create community Community for approval" | 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 | And I follow "Manage my groups" | 59 | And I follow "Manage my groups" |
60 | Then I should see "Community for approval" | 60 | Then I should see "Community for approval" |
61 | 61 | ||
@@ -63,13 +63,13 @@ Feature: create community | @@ -63,13 +63,13 @@ Feature: create community | ||
63 | Given I am logged in as admin | 63 | Given I am logged in as admin |
64 | And feature "admin_must_approve_new_communities" is enabled on environment | 64 | And feature "admin_must_approve_new_communities" is enabled on environment |
65 | When I create community "Community for approval" | 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 | And I follow "Process requests" | 67 | And I follow "Process requests" |
68 | And I should see "admin_user wants to create community Community for approval" | 68 | And I should see "admin_user wants to create community Community for approval" |
69 | And I choose "Reject" | 69 | And I choose "Reject" |
70 | When I press "Apply!" | 70 | When I press "Apply!" |
71 | Then I should not see "admin_user wants to create community Community for approval" | 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 | And I follow "Manage my groups" | 73 | And I follow "Manage my groups" |
74 | Then I should not see "Community for approval" | 74 | Then I should not see "Community for approval" |
75 | 75 | ||
@@ -78,7 +78,7 @@ Feature: create community | @@ -78,7 +78,7 @@ Feature: create community | ||
78 | And feature "admin_must_approve_new_communities" is enabled on environment | 78 | And feature "admin_must_approve_new_communities" is enabled on environment |
79 | When I create community "Community for approval" | 79 | When I create community "Community for approval" |
80 | And I approve community "Community for approval" | 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 | And I follow "Manage my groups" | 82 | And I follow "Manage my groups" |
83 | Then I should see "Community for approval" | 83 | Then I should see "Community for approval" |
84 | 84 | ||
@@ -87,6 +87,6 @@ Feature: create community | @@ -87,6 +87,6 @@ Feature: create community | ||
87 | And feature "admin_must_approve_new_communities" is enabled on environment | 87 | And feature "admin_must_approve_new_communities" is enabled on environment |
88 | When I create community "Community for approval" | 88 | When I create community "Community for approval" |
89 | And I reject community "Community for approval" | 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 | And I follow "Manage my groups" | 91 | And I follow "Manage my groups" |
92 | Then I should not see "Community for approval" | 92 | Then I should not see "Community for approval" |
features/delete_profile.feature
@@ -13,9 +13,10 @@ Feature: delete profile | @@ -13,9 +13,10 @@ Feature: delete profile | ||
13 | | sample-community | Sample Community | | 13 | | sample-community | Sample Community | |
14 | And "Maria Silva" is a member of "Sample Community" | 14 | And "Maria Silva" is a member of "Sample Community" |
15 | 15 | ||
16 | + @selenium | ||
16 | Scenario: deleting profile | 17 | Scenario: deleting profile |
17 | Given I am logged in as "joaosilva" | 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 | And I follow "Edit Profile" | 20 | And I follow "Edit Profile" |
20 | And I follow "Delete profile" | 21 | And I follow "Delete profile" |
21 | Then I should see "Are you sure you want to delete this profile?" | 22 | Then I should see "Are you sure you want to delete this profile?" |
@@ -31,24 +32,25 @@ Feature: delete profile | @@ -31,24 +32,25 @@ Feature: delete profile | ||
31 | 32 | ||
32 | Scenario: giving up of deleting profile | 33 | Scenario: giving up of deleting profile |
33 | Given I am logged in as "joaosilva" | 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 | And I follow "Edit Profile" | 36 | And I follow "Edit Profile" |
36 | And I follow "Delete profile" | 37 | And I follow "Delete profile" |
37 | Then I should see "Are you sure you want to delete this profile?" | 38 | Then I should see "Are you sure you want to delete this profile?" |
38 | When I follow "No, I gave up" | 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 | Scenario: community admin can see link to delete profile | 42 | Scenario: community admin can see link to delete profile |
42 | Given "Joao Silva" is admin of "Sample Community" | 43 | Given "Joao Silva" is admin of "Sample Community" |
43 | And I am logged in as "joaosilva" | 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 | When I follow "Community Info and settings" | 46 | When I follow "Community Info and settings" |
46 | Then I should see "Delete profile" | 47 | Then I should see "Delete profile" |
47 | 48 | ||
49 | + @selenium | ||
48 | Scenario: community admin deletes the community | 50 | Scenario: community admin deletes the community |
49 | Given "Joao Silva" is admin of "Sample Community" | 51 | Given "Joao Silva" is admin of "Sample Community" |
50 | And I am logged in as "joaosilva" | 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 | And I follow "Community Info and settings" | 54 | And I follow "Community Info and settings" |
53 | And I follow "Delete profile" | 55 | And I follow "Delete profile" |
54 | Then I should see "Are you sure you want to delete this profile?" | 56 | Then I should see "Are you sure you want to delete this profile?" |
@@ -69,17 +71,18 @@ Feature: delete profile | @@ -69,17 +71,18 @@ Feature: delete profile | ||
69 | | sample-enterprise | Sample Enterprise | | 71 | | sample-enterprise | Sample Enterprise | |
70 | And "Joao Silva" is admin of "Sample Enterprise" | 72 | And "Joao Silva" is admin of "Sample Enterprise" |
71 | And I am logged in as "joaosilva" | 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 | When I follow "Enterprise Info and settings" | 75 | When I follow "Enterprise Info and settings" |
74 | Then I should see "Delete profile" | 76 | Then I should see "Delete profile" |
75 | 77 | ||
78 | + @selenium | ||
76 | Scenario: enterprise admin deletes the enterprise | 79 | Scenario: enterprise admin deletes the enterprise |
77 | Given the following enterprise | 80 | Given the following enterprise |
78 | | identifier | name | | 81 | | identifier | name | |
79 | | sample-enterprise | Sample Enterprise | | 82 | | sample-enterprise | Sample Enterprise | |
80 | And "Joao Silva" is admin of "Sample Enterprise" | 83 | And "Joao Silva" is admin of "Sample Enterprise" |
81 | And I am logged in as "joaosilva" | 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 | When I follow "Enterprise Info and settings" | 86 | When I follow "Enterprise Info and settings" |
84 | And I follow "Delete profile" | 87 | And I follow "Delete profile" |
85 | Then I should see "Are you sure you want to delete this profile?" | 88 | Then I should see "Are you sure you want to delete this profile?" |
@@ -98,9 +101,10 @@ Feature: delete profile | @@ -98,9 +101,10 @@ Feature: delete profile | ||
98 | And I go to /myprofile/sample-enterprise/profile_editor/destroy_profile | 101 | And I go to /myprofile/sample-enterprise/profile_editor/destroy_profile |
99 | Then I should see "Access denied" | 102 | Then I should see "Access denied" |
100 | 103 | ||
104 | + @selenium | ||
101 | Scenario: environment admin deletes profile | 105 | Scenario: environment admin deletes profile |
102 | Given I am logged in as admin | 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 | And I follow "Edit Profile" | 108 | And I follow "Edit Profile" |
105 | And I follow "Delete profile" | 109 | And I follow "Delete profile" |
106 | Then I should see "Are you sure you want to delete this profile?" | 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,17 +13,17 @@ Feature: edit article | ||
13 | And I am logged in as "joaosilva" | 13 | And I am logged in as "joaosilva" |
14 | 14 | ||
15 | Scenario: create a folder | 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 | And I follow "Manage Content" | 17 | And I follow "Manage Content" |
18 | And I follow "New content" | 18 | And I follow "New content" |
19 | When I follow "Folder" | 19 | When I follow "Folder" |
20 | And I fill in "Title" with "My Folder" | 20 | And I fill in "Title" with "My Folder" |
21 | And I press "Save" | 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 | Then I should see "My Folder" | 23 | Then I should see "My Folder" |
24 | 24 | ||
25 | Scenario: redirect to the created folder | 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 | And I follow "Manage Content" | 27 | And I follow "Manage Content" |
28 | And I follow "New content" | 28 | And I follow "New content" |
29 | When I follow "Folder" | 29 | When I follow "Folder" |
@@ -33,29 +33,29 @@ Feature: edit article | @@ -33,29 +33,29 @@ Feature: edit article | ||
33 | And I should be on /joaosilva/my-folder | 33 | And I should be on /joaosilva/my-folder |
34 | 34 | ||
35 | Scenario: cancel button back to cms | 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 | And I follow "Manage Content" | 37 | And I follow "Manage Content" |
38 | And I follow "New content" | 38 | And I follow "New content" |
39 | And I follow "Folder" | 39 | And I follow "Folder" |
40 | When I follow "Cancel" within ".main-block" | 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 | Scenario: display tag list field when creating event | 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 | And I follow "Manage Content" | 45 | And I follow "Manage Content" |
46 | And I follow "New content" | 46 | And I follow "New content" |
47 | When I follow "Event" | 47 | When I follow "Event" |
48 | Then I should see "Tag list" | 48 | Then I should see "Tag list" |
49 | 49 | ||
50 | Scenario: display tag list field when creating folder | 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 | And I follow "Manage Content" | 52 | And I follow "Manage Content" |
53 | And I follow "New content" | 53 | And I follow "New content" |
54 | When I follow "Folder" | 54 | When I follow "Folder" |
55 | Then I should see "Tag list" | 55 | Then I should see "Tag list" |
56 | 56 | ||
57 | Scenario: create new article with tags | 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 | And I follow "Manage Content" | 59 | And I follow "Manage Content" |
60 | And I follow "New content" | 60 | And I follow "New content" |
61 | When I follow "Text article with Textile markup language" | 61 | When I follow "Text article with Textile markup language" |
@@ -68,7 +68,7 @@ Feature: edit article | @@ -68,7 +68,7 @@ Feature: edit article | ||
68 | And I should see "bug" within "#article-tags a:last" | 68 | And I should see "bug" within "#article-tags a:last" |
69 | 69 | ||
70 | Scenario: redirect to the created article | 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 | And I follow "Manage Content" | 72 | And I follow "Manage Content" |
73 | When I follow "New content" | 73 | When I follow "New content" |
74 | When I follow "Text article with visual editor" | 74 | When I follow "Text article with visual editor" |
@@ -79,62 +79,62 @@ Feature: edit article | @@ -79,62 +79,62 @@ Feature: edit article | ||
79 | 79 | ||
80 | @selenium | 80 | @selenium |
81 | Scenario: edit an article | 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 | And I fill in "Title" with "My Article edited" | 85 | And I fill in "Title" with "My Article edited" |
86 | - And I press "Save" and wait | 86 | + And I press "Save" |
87 | Then I should be on /joaosilva/my-article-edited | 87 | Then I should be on /joaosilva/my-article-edited |
88 | 88 | ||
89 | @selenium | 89 | @selenium |
90 | Scenario: cancel button back to article when edit | 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 | Then I should be on /joaosilva/save-the-whales | 95 | Then I should be on /joaosilva/save-the-whales |
96 | 96 | ||
97 | @selenium | 97 | @selenium |
98 | Scenario: create an article inside a folder | 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 | When I follow "Manage Content" | 100 | When I follow "Manage Content" |
101 | And I follow "New content" | 101 | And I follow "New content" |
102 | - And I follow "Folder" and wait | 102 | + And I follow "Folder" |
103 | And I fill in "Title" with "My Folder" | 103 | And I fill in "Title" with "My Folder" |
104 | - And I press "Save" and wait | 104 | + And I press "Save" |
105 | Then I should be on /joaosilva/my-folder | 105 | Then I should be on /joaosilva/my-folder |
106 | When I follow "New article" | 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 | And I fill in "Title" with "My Article" | 108 | And I fill in "Title" with "My Article" |
109 | - And I press "Save" and wait | 109 | + And I press "Save" |
110 | Then I should see "My Article" | 110 | Then I should see "My Article" |
111 | And I should be on /joaosilva/my-folder/my-article | 111 | And I should be on /joaosilva/my-folder/my-article |
112 | 112 | ||
113 | @selenium | 113 | @selenium |
114 | Scenario: cancel button back to folder after giving up creating | 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 | When I follow "Manage Content" | 116 | When I follow "Manage Content" |
117 | And I follow "New content" | 117 | And I follow "New content" |
118 | - And I follow "Folder" and wait | 118 | + And I follow "Folder" |
119 | And I fill in "Title" with "My Folder" | 119 | And I fill in "Title" with "My Folder" |
120 | - And I press "Save" and wait | 120 | + And I press "Save" |
121 | Then I should be on /joaosilva/my-folder | 121 | Then I should be on /joaosilva/my-folder |
122 | When I follow "New article" | 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 | Then I should be on /joaosilva/my-folder | 125 | Then I should be on /joaosilva/my-folder |
126 | 126 | ||
127 | @selenium | 127 | @selenium |
128 | Scenario: save and continue | 128 | Scenario: save and continue |
129 | Given I am on /joaosilva/save-the-whales | 129 | Given I am on /joaosilva/save-the-whales |
130 | - And I follow "Edit" and wait | 130 | + And I follow "Edit" |
131 | When I fill in "Text" with "new text" | 131 | When I fill in "Text" with "new text" |
132 | And I press "Save and continue" | 132 | And I press "Save and continue" |
133 | Then the "Text" field should contain "new text" | 133 | Then the "Text" field should contain "new text" |
134 | And I should be on "Save the whales" edit page | 134 | And I should be on "Save the whales" edit page |
135 | 135 | ||
136 | Scenario: save and continue when creating a new article | 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 | When I follow "Manage Content" | 138 | When I follow "Manage Content" |
139 | And I follow "New content" | 139 | And I follow "New content" |
140 | And I follow "Text article with visual editor" | 140 | And I follow "Text article with visual editor" |
@@ -147,16 +147,16 @@ Feature: edit article | @@ -147,16 +147,16 @@ Feature: edit article | ||
147 | 147 | ||
148 | @selenium | 148 | @selenium |
149 | Scenario: add a translation to an article | 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 | And I follow "Save the whales" | 151 | And I follow "Save the whales" |
152 | Then I should not see "Add translation" | 152 | Then I should not see "Add translation" |
153 | - And I follow "Edit" and wait | 153 | + And I follow "Edit" |
154 | And I select "English" from "Language" | 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 | And I fill in "Title" with "Mi neuvo artículo" | 157 | And I fill in "Title" with "Mi neuvo artículo" |
158 | And I select "Español" from "Language" | 158 | And I select "Español" from "Language" |
159 | - When I press "Save" and wait | 159 | + When I press "Save" |
160 | Then I should be on /joaosilva/mi-neuvo-articulo | 160 | Then I should be on /joaosilva/mi-neuvo-articulo |
161 | And I should see "Translations" | 161 | And I should see "Translations" |
162 | 162 | ||
@@ -165,13 +165,13 @@ Feature: edit article | @@ -165,13 +165,13 @@ Feature: edit article | ||
165 | Given the following articles | 165 | Given the following articles |
166 | | owner | name | language | | 166 | | owner | name | language | |
167 | | joaosilva | Article in English | en | | 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 | And I fill in "Title" with "Article in Portuguese" | 171 | And I fill in "Title" with "Article in Portuguese" |
172 | - And I press "Save" and wait | 172 | + And I press "Save" |
173 | Then I should see "Language must be choosen" | 173 | Then I should see "Language must be choosen" |
174 | When I select "Português" from "Language" | 174 | When I select "Português" from "Language" |
175 | - And I press "Save" and wait | 175 | + And I press "Save" |
176 | Then I should not see "Language must be choosen" | 176 | Then I should not see "Language must be choosen" |
177 | And I should be on /joaosilva/article-in-portuguese | 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,7 +12,7 @@ Feature: edit_block_of_links | ||
12 | | eddievedder | LinkListBlock | | 12 | | eddievedder | LinkListBlock | |
13 | And I am logged in as "eddievedder" | 13 | And I am logged in as "eddievedder" |
14 | 14 | ||
15 | - @selenium | 15 | + @selenium-fixme |
16 | Scenario: show the icon selector | 16 | Scenario: show the icon selector |
17 | Given I follow "Edit sideboxes" | 17 | Given I follow "Edit sideboxes" |
18 | And I follow "Edit" within ".link-list-block" | 18 | And I follow "Edit" within ".link-list-block" |
features/edit_environment_templates.feature
@@ -4,50 +4,46 @@ Feature: edit environment templates | @@ -4,50 +4,46 @@ Feature: edit environment templates | ||
4 | 4 | ||
5 | Background: | 5 | Background: |
6 | Given that the default environment have all profile templates | 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 | Scenario: See links to edit all templates | 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 | Scenario: Go to control panel of person template | 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 | And I follow "Person template" | 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 | Scenario: Go to control panel of enterprise template | 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 | And I follow "Enterprise template" | 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 | Scenario: Go to control panel of inactive enterprise template | 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 | Scenario: Go to control panel of community template | 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 | Scenario: Not see link to edit an unexistent template | 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,25 +15,25 @@ Feature: edit language of block | ||
15 | Scenario: display in all languages | 15 | Scenario: display in all languages |
16 | Given I go to edit ArticleBlock of joaosilva | 16 | Given I go to edit ArticleBlock of joaosilva |
17 | And I fill in "Custom title for this block" with "Block displayed" | 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 | And I press "Save" | 19 | And I press "Save" |
20 | - When I go to Jose Silva's homepage | 20 | + When I go to joaosilva's homepage |
21 | Then I should see "Block displayed" | 21 | Then I should see "Block displayed" |
22 | 22 | ||
23 | Scenario: display in the selected language | 23 | Scenario: display in the selected language |
24 | Given I go to edit LinkListBlock of joaosilva | 24 | Given I go to edit LinkListBlock of joaosilva |
25 | And I fill in "Custom title for this block" with "Block displayed" | 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 | And I press "Save" | 27 | And I press "Save" |
28 | And my browser prefers English | 28 | And my browser prefers English |
29 | - When I go to Jose Silva's homepage | 29 | + When I go to joaosilva's homepage |
30 | Then I should see "Block displayed" | 30 | Then I should see "Block displayed" |
31 | 31 | ||
32 | Scenario: not display in a not selected language | 32 | Scenario: not display in a not selected language |
33 | Given I go to edit LinkListBlock of joaosilva | 33 | Given I go to edit LinkListBlock of joaosilva |
34 | And I fill in "Custom title for this block" with "Block not displayed" | 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 | And I press "Save" | 36 | And I press "Save" |
37 | And my browser prefers Portuguese | 37 | And my browser prefers Portuguese |
38 | - When I go to Jose Silva's homepage | 38 | + When I go to joaosilva's homepage |
39 | Then I should not see "Block displayed" | 39 | Then I should not see "Block displayed" |
features/edit_profile.feature
@@ -12,8 +12,8 @@ Feature: edit profile | @@ -12,8 +12,8 @@ Feature: edit profile | ||
12 | | birth_date | | 12 | | birth_date | |
13 | When I go to joao's control panel | 13 | When I go to joao's control panel |
14 | And I follow "Edit Profile" | 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 | And I press "Save" | 17 | And I press "Save" |
18 | Then I should see "Birth date is invalid" | 18 | Then I should see "Birth date is invalid" |
19 | And I should not see "Birth date can't be blank" | 19 | And I should not see "Birth date can't be blank" |
@@ -24,8 +24,8 @@ Feature: edit profile | @@ -24,8 +24,8 @@ Feature: edit profile | ||
24 | | birth_date | | 24 | | birth_date | |
25 | When I go to joao's control panel | 25 | When I go to joao's control panel |
26 | And I follow "Edit Profile" | 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 | And I press "Save" | 29 | And I press "Save" |
30 | Then I should see "Birth date is invalid" | 30 | Then I should see "Birth date is invalid" |
31 | And I should not see "Birth date can't be blank" | 31 | And I should not see "Birth date can't be blank" |
@@ -36,9 +36,9 @@ Feature: edit profile | @@ -36,9 +36,9 @@ Feature: edit profile | ||
36 | | birth_date | | 36 | | birth_date | |
37 | When I go to joao's control panel | 37 | When I go to joao's control panel |
38 | And I follow "Edit Profile" | 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 | And I press "Save" | 42 | And I press "Save" |
43 | Then I should not see "Birth date is invalid" | 43 | Then I should not see "Birth date is invalid" |
44 | And I should not see "Birth date is mandatory" | 44 | And I should not see "Birth date is mandatory" |
@@ -49,9 +49,9 @@ Feature: edit profile | @@ -49,9 +49,9 @@ Feature: edit profile | ||
49 | | birth_date | | 49 | | birth_date | |
50 | When I go to joao's control panel | 50 | When I go to joao's control panel |
51 | And I follow "Edit Profile" | 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 | And I press "Save" | 55 | And I press "Save" |
56 | Then I should not see "Birth date is invalid" | 56 | Then I should not see "Birth date is invalid" |
57 | And I should not see "Birth date is mandatory" | 57 | And I should not see "Birth date is mandatory" |
@@ -62,11 +62,11 @@ Feature: edit profile | @@ -62,11 +62,11 @@ Feature: edit profile | ||
62 | | identifier | name | owner | | 62 | | identifier | name | owner | |
63 | | o-rappa | O Rappa | joao | | 63 | | o-rappa | O Rappa | joao | |
64 | And feature "enable_organization_url_change" is enabled on environment | 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 | When I fill in "Address" with "banda-o-rappa" | 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 | @selenium | 71 | @selenium |
72 | Scenario: Confirm url change | 72 | Scenario: Confirm url change |
@@ -74,12 +74,12 @@ Feature: edit profile | @@ -74,12 +74,12 @@ Feature: edit profile | ||
74 | | identifier | name | owner | | 74 | | identifier | name | owner | |
75 | | o-rappa | O Rappa | joao | | 75 | | o-rappa | O Rappa | joao | |
76 | And feature "enable_organization_url_change" is enabled on environment | 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 | When I fill in "Address" with "banda-o-rappa" | 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 | When I follow "Yes" | 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 | @selenium | 84 | @selenium |
85 | Scenario: Cancel url change | 85 | Scenario: Cancel url change |
@@ -87,9 +87,9 @@ Feature: edit profile | @@ -87,9 +87,9 @@ Feature: edit profile | ||
87 | | identifier | name | owner | | 87 | | identifier | name | owner | |
88 | | o-rappa | O Rappa | joao | | 88 | | o-rappa | O Rappa | joao | |
89 | And feature "enable_organization_url_change" is enabled on environment | 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 | When I fill in "Address" with "banda-o-rappa" | 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 | When I follow "No" | 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,6 +3,7 @@ Feature: setting environment name | ||
3 | I want to change the name of the environment | 3 | I want to change the name of the environment |
4 | So that it appears in the window's title bar | 4 | So that it appears in the window's title bar |
5 | 5 | ||
6 | + @selenium-fixme | ||
6 | Scenario: setting environment name through administration panel | 7 | Scenario: setting environment name through administration panel |
7 | Given I am logged in as admin | 8 | Given I am logged in as admin |
8 | When I follow "Administration" | 9 | When I follow "Administration" |
features/events.feature
@@ -184,7 +184,7 @@ Feature: events | @@ -184,7 +184,7 @@ Feature: events | ||
184 | And "josesilva" is a member of "Sample Community" | 184 | And "josesilva" is a member of "Sample Community" |
185 | And I go to josesilva's control panel | 185 | And I go to josesilva's control panel |
186 | And I follow "Manage Content" | 186 | And I follow "Manage Content" |
187 | - And I follow "Another Conference" and wait | 187 | + And I follow "Another Conference" |
188 | And I follow "Spread" | 188 | And I follow "Spread" |
189 | And I check "Sample Community" | 189 | And I check "Sample Community" |
190 | And I press "Spread this" | 190 | And I press "Spread this" |
@@ -213,15 +213,15 @@ Feature: events | @@ -213,15 +213,15 @@ Feature: events | ||
213 | And I am on josesilva's Event creation | 213 | And I am on josesilva's Event creation |
214 | Then I should see "Lead" | 214 | Then I should see "Lead" |
215 | 215 | ||
216 | - @selenium | 216 | + @selenium-fixme |
217 | Scenario: events lead should be shown on blogs with short format | 217 | Scenario: events lead should be shown on blogs with short format |
218 | Given I am logged in as "josesilva" | 218 | Given I am logged in as "josesilva" |
219 | And I am on josesilva's control panel | 219 | And I am on josesilva's control panel |
220 | - And I follow "Configure blog" and wait | 220 | + And I follow "Configure blog" |
221 | And I select "First paragraph" from "How to display posts:" | 221 | And I select "First paragraph" from "How to display posts:" |
222 | And I press "Save" | 222 | And I press "Save" |
223 | And I follow "New post" | 223 | And I follow "New post" |
224 | - And I follow "A calendar event" and wait | 224 | + And I follow "A calendar event" |
225 | And I fill in "Title" with "Leaded event" | 225 | And I fill in "Title" with "Leaded event" |
226 | And I type "This is the abstract." in TinyMCE field "article_abstract" | 226 | And I type "This is the abstract." in TinyMCE field "article_abstract" |
227 | And I type "This is the real text." in TinyMCE field "article_body" | 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,15 +9,13 @@ Feature: export users | ||
9 | 9 | ||
10 | Scenario: Export users as XML | 10 | Scenario: Export users as XML |
11 | Given I am logged in as admin | 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 | And I follow "[XML]" | 13 | And I follow "[XML]" |
15 | Then I should see "ultraje" | 14 | Then I should see "ultraje" |
16 | 15 | ||
17 | Scenario: Export users as CSV | 16 | Scenario: Export users as CSV |
18 | Given I am logged in as admin | 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 | And I follow "[CSV]" | 19 | And I follow "[CSV]" |
22 | Then I should see "name;email" | 20 | Then I should see "name;email" |
23 | And I should see "ultraje" | 21 | And I should see "ultraje" |
features/featured_products_block.feature
@@ -23,7 +23,7 @@ Feature: featured_products_block | @@ -23,7 +23,7 @@ Feature: featured_products_block | ||
23 | | redemoinho | automobile | Moto | Very long description of and auto-mobile moto to be truncated | true | | 23 | | redemoinho | automobile | Moto | Very long description of and auto-mobile moto to be truncated | true | |
24 | And I am logged in as "eddievedder" | 24 | And I am logged in as "eddievedder" |
25 | 25 | ||
26 | - @selenium | 26 | + @selenium-fixme |
27 | Scenario: select a product to be featured | 27 | Scenario: select a product to be featured |
28 | And I follow "Manage my groups" | 28 | And I follow "Manage my groups" |
29 | And I follow "Control panel of this group" | 29 | And I follow "Control panel of this group" |
@@ -35,7 +35,7 @@ Feature: featured_products_block | @@ -35,7 +35,7 @@ Feature: featured_products_block | ||
35 | And I should not see "float_to_currency" | 35 | And I should not see "float_to_currency" |
36 | And I should not see "product_path" | 36 | And I should not see "product_path" |
37 | 37 | ||
38 | - @selenium | 38 | + @selenium-fixme |
39 | Scenario: display block with long description | 39 | Scenario: display block with long description |
40 | Given I follow "Manage my groups" | 40 | Given I follow "Manage my groups" |
41 | And I follow "Control panel of this group" | 41 | And I follow "Control panel of this group" |
features/forum.feature
@@ -10,18 +10,18 @@ Feature: forum | @@ -10,18 +10,18 @@ Feature: forum | ||
10 | And "joaosilva" has no articles | 10 | And "joaosilva" has no articles |
11 | And I am logged in as "joaosilva" | 11 | And I am logged in as "joaosilva" |
12 | 12 | ||
13 | - @selenium | 13 | + @selenium @ignore-hidden-elements |
14 | Scenario: create a forum | 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 | And I follow "Manage Content" | 16 | And I follow "Manage Content" |
17 | And I follow "New content" | 17 | And I follow "New content" |
18 | - When I follow "Forum" and wait | 18 | + When I follow "Forum" |
19 | And I fill in "Title" with "My Forum" | 19 | And I fill in "Title" with "My Forum" |
20 | - And I press "Save" and wait | 20 | + And I press "Save" |
21 | Then I should see "Configure forum" | 21 | Then I should see "Configure forum" |
22 | 22 | ||
23 | Scenario: redirect to forum after create forum from cms | 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 | And I follow "Manage Content" | 25 | And I follow "Manage Content" |
26 | And I follow "New content" | 26 | And I follow "New content" |
27 | When I follow "Forum" | 27 | When I follow "Forum" |
@@ -30,13 +30,13 @@ Feature: forum | @@ -30,13 +30,13 @@ Feature: forum | ||
30 | Then I should be on /joaosilva/forum-from-cms | 30 | Then I should be on /joaosilva/forum-from-cms |
31 | 31 | ||
32 | Scenario: create multiple forums | 32 | Scenario: create multiple forums |
33 | - Given I go to the Control panel | 33 | + Given I go to joaosilva's control panel |
34 | And I follow "Manage Content" | 34 | And I follow "Manage Content" |
35 | And I follow "New content" | 35 | And I follow "New content" |
36 | And I follow "Forum" | 36 | And I follow "Forum" |
37 | And I fill in "Title" with "Forum One" | 37 | And I fill in "Title" with "Forum One" |
38 | And I press "Save" | 38 | And I press "Save" |
39 | - Then I go to the Control panel | 39 | + Then I go to joaosilva's control panel |
40 | And I follow "Manage Content" | 40 | And I follow "Manage Content" |
41 | And I follow "New content" | 41 | And I follow "New content" |
42 | And I follow "Forum" | 42 | And I follow "Forum" |
@@ -46,7 +46,7 @@ Feature: forum | @@ -46,7 +46,7 @@ Feature: forum | ||
46 | And I should be on /joaosilva/forum-two | 46 | And I should be on /joaosilva/forum-two |
47 | 47 | ||
48 | Scenario: cancel button back to cms | 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 | And I follow "Manage Content" | 50 | And I follow "Manage Content" |
51 | And I follow "New content" | 51 | And I follow "New content" |
52 | And I follow "Forum" | 52 | And I follow "Forum" |
@@ -54,7 +54,7 @@ Feature: forum | @@ -54,7 +54,7 @@ Feature: forum | ||
54 | Then I should be on /myprofile/joaosilva/cms | 54 | Then I should be on /myprofile/joaosilva/cms |
55 | 55 | ||
56 | Scenario: cancel button back to myprofile | 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 | And I follow "Manage Content" | 58 | And I follow "Manage Content" |
59 | And I follow "New content" | 59 | And I follow "New content" |
60 | And I follow "Forum" | 60 | And I follow "Forum" |
@@ -66,8 +66,8 @@ Feature: forum | @@ -66,8 +66,8 @@ Feature: forum | ||
66 | Given the following forums | 66 | Given the following forums |
67 | | owner | name | | 67 | | owner | name | |
68 | | joaosilva | Forum One | | 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 | Then I should be on edit "Forum One" by joaosilva | 71 | Then I should be on edit "Forum One" by joaosilva |
72 | 72 | ||
73 | Scenario: last topic update by unautenticated user should not link | 73 | Scenario: last topic update by unautenticated user should not link |
@@ -94,4 +94,4 @@ Feature: forum | @@ -94,4 +94,4 @@ Feature: forum | ||
94 | | article | author | title | body | | 94 | | article | author | title | body | |
95 | | Post one | joaosilva | Hi all | Hi all | | 95 | | Post one | joaosilva | Hi all | Hi all | |
96 | When I go to /joaosilva/forum | 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,7 +23,7 @@ Feature: gallery_navigation | ||
23 | @selenium | 23 | @selenium |
24 | Scenario: view next image when follow next link | 24 | Scenario: view next image when follow next link |
25 | Given I am on /marciopunk/my-gallery/other-pic.jpg?view=true | 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 | Then I should see "rails.png" within ".title" | 27 | Then I should see "rails.png" within ".title" |
28 | 28 | ||
29 | Scenario: not link to next when in last image | 29 | Scenario: not link to next when in last image |
@@ -38,7 +38,7 @@ Feature: gallery_navigation | @@ -38,7 +38,7 @@ Feature: gallery_navigation | ||
38 | @selenium | 38 | @selenium |
39 | Scenario: view previous image when follow previous link | 39 | Scenario: view previous image when follow previous link |
40 | Given I am on /marciopunk/my-gallery/rails.png?view=true | 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 | Then I should see "other-pic.jpg" within ".title" | 42 | Then I should see "other-pic.jpg" within ".title" |
43 | 43 | ||
44 | Scenario: not link to previous when in first image | 44 | Scenario: not link to previous when in first image |
@@ -68,11 +68,19 @@ Feature: gallery_navigation | @@ -68,11 +68,19 @@ Feature: gallery_navigation | ||
68 | When I follow "Go back to my-gallery" | 68 | When I follow "Go back to my-gallery" |
69 | Then I should be on /marciopunk/my-gallery | 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 | @selenium | 75 | @selenium |
72 | Scenario: image title in window title | 76 | Scenario: image title in window title |
73 | Given I am logged in as "marciopunk" | 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 | And I fill in "Title" with "Rails is cool" | 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,13 +35,13 @@ Feature: HTTP caching | ||
35 | Then the response should be valid for 90 minutes | 35 | Then the response should be valid for 90 minutes |
36 | 36 | ||
37 | Scenario: profile pages, default configuaration | 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 | Then the response should be valid for 15 minutes | 39 | Then the response should be valid for 15 minutes |
40 | 40 | ||
41 | Scenario: profile pages, custom configuration | 41 | Scenario: profile pages, custom configuration |
42 | Given the following environment configuration | 42 | Given the following environment configuration |
43 | | profile_cache_in_minutes | 90 | | 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 | Then the response should be valid for 90 minutes | 45 | Then the response should be valid for 90 minutes |
46 | 46 | ||
47 | Scenario: account controller should not be cached at all | 47 | Scenario: account controller should not be cached at all |
@@ -50,7 +50,7 @@ Feature: HTTP caching | @@ -50,7 +50,7 @@ Feature: HTTP caching | ||
50 | 50 | ||
51 | Scenario: profile administration | 51 | Scenario: profile administration |
52 | Given I am logged in as "joao" | 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 | Then there must be no cache at all | 54 | Then there must be no cache at all |
55 | 55 | ||
56 | Scenario: environment administration | 56 | Scenario: environment administration |
features/internationalization.feature
@@ -28,6 +28,7 @@ Feature: internationalization | @@ -28,6 +28,7 @@ Feature: internationalization | ||
28 | When I follow "Português" | 28 | When I follow "Português" |
29 | Then the site should be in Portuguese | 29 | Then the site should be in Portuguese |
30 | 30 | ||
31 | + @fixme | ||
31 | Scenario: language set by previous users | 32 | Scenario: language set by previous users |
32 | Given a user accessed in English before | 33 | Given a user accessed in English before |
33 | And my browser prefers Portuguese | 34 | And my browser prefers Portuguese |
features/invitation.feature
@@ -32,11 +32,13 @@ Feature: invitation | @@ -32,11 +32,13 @@ Feature: invitation | ||
32 | When I am on /profile/josesilva/invite/friends | 32 | When I am on /profile/josesilva/invite/friends |
33 | Then I should see "Invite your friends" | 33 | Then I should see "Invite your friends" |
34 | 34 | ||
35 | + @selenium | ||
35 | Scenario: back to friends after invite friends | 36 | Scenario: back to friends after invite friends |
36 | Given I am on /myprofile/josesilva/friends | 37 | Given I am on /myprofile/josesilva/friends |
37 | And I follow "Invite people from my e-mail contacts" | 38 | And I follow "Invite people from my e-mail contacts" |
38 | And I press "Next" | 39 | And I press "Next" |
39 | And I fill in "manual_import_addresses" with "misfits@devil.doll" | 40 | And I fill in "manual_import_addresses" with "misfits@devil.doll" |
41 | + And I follow "Personalize invitation mail" | ||
40 | And I fill in "mail_template" with "Follow this link <url>" | 42 | And I fill in "mail_template" with "Follow this link <url>" |
41 | When I press "Invite my friends!" | 43 | When I press "Invite my friends!" |
42 | Then I should be on /profile/josesilva/friends | 44 | Then I should be on /profile/josesilva/friends |
@@ -46,8 +48,7 @@ Feature: invitation | @@ -46,8 +48,7 @@ Feature: invitation | ||
46 | Then I should see "Invite your friends to join 26 Bsslines" link | 48 | Then I should see "Invite your friends to join 26 Bsslines" link |
47 | 49 | ||
48 | Scenario: not see link to invite members to community if has no rights | 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 | When I am on /profile/26-bsslines/members | 52 | When I am on /profile/26-bsslines/members |
52 | Then I should not see "Invite your friends to join 26 Bsslines" link | 53 | Then I should not see "Invite your friends to join 26 Bsslines" link |
53 | 54 | ||
@@ -65,8 +66,7 @@ Feature: invitation | @@ -65,8 +66,7 @@ Feature: invitation | ||
65 | Then I should not see "Invite your friends to join Beatles For Sale" link | 66 | Then I should not see "Invite your friends to join Beatles For Sale" link |
66 | 67 | ||
67 | Scenario: deny access if user has no right to invite members | 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 | When I am on /profile/26-bsslines/invite/friends | 70 | When I am on /profile/26-bsslines/invite/friends |
71 | Then I should see "Access denied" | 71 | Then I should see "Access denied" |
72 | 72 | ||
@@ -74,93 +74,107 @@ Feature: invitation | @@ -74,93 +74,107 @@ Feature: invitation | ||
74 | Given I am on Beatles For Sale's members management | 74 | Given I am on Beatles For Sale's members management |
75 | Then I should not see "Invite your friends to join Beatles For Sale" link | 75 | Then I should not see "Invite your friends to join Beatles For Sale" link |
76 | 76 | ||
77 | + @selenium | ||
77 | Scenario: back to members after invite friends to join a community | 78 | Scenario: back to members after invite friends to join a community |
78 | Given I am on 26 Bsslines's members management | 79 | Given I am on 26 Bsslines's members management |
79 | And I follow "Invite your friends to join 26 Bsslines" | 80 | And I follow "Invite your friends to join 26 Bsslines" |
80 | And I press "Next" | 81 | And I press "Next" |
81 | And I fill in "manual_import_addresses" with "misfits@devil.doll" | 82 | And I fill in "manual_import_addresses" with "misfits@devil.doll" |
83 | + And I follow "Personalize invitation mail" | ||
82 | And I fill in "mail_template" with "Follow this link <url>" | 84 | And I fill in "mail_template" with "Follow this link <url>" |
83 | When I press "Invite my friends!" | 85 | When I press "Invite my friends!" |
84 | Then I should be on /profile/26-bsslines/members | 86 | Then I should be on /profile/26-bsslines/members |
85 | 87 | ||
88 | + @selenium | ||
86 | Scenario: noosfero user receives a task when a user invites to join a community | 89 | Scenario: noosfero user receives a task when a user invites to join a community |
87 | Given I am on 26 Bsslines's members management | 90 | Given I am on 26 Bsslines's members management |
88 | And I follow "Invite your friends to join 26 Bsslines" | 91 | And I follow "Invite your friends to join 26 Bsslines" |
89 | And I press "Next" | 92 | And I press "Next" |
90 | And I fill in "manual_import_addresses" with "santos@invalid.br" | 93 | And I fill in "manual_import_addresses" with "santos@invalid.br" |
94 | + And I follow "Personalize invitation mail" | ||
91 | And I fill in "mail_template" with "Follow this link <url>" | 95 | And I fill in "mail_template" with "Follow this link <url>" |
92 | And I press "Invite my friends!" | 96 | And I press "Invite my friends!" |
93 | Given there are no pending jobs | 97 | Given there are no pending jobs |
94 | When I am logged in as "josesantos" | 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 | And I should see "josesilva invited you to join 26 Bsslines." | 100 | And I should see "josesilva invited you to join 26 Bsslines." |
97 | 101 | ||
102 | + @selenium | ||
98 | Scenario: noosfero user accepts to join community | 103 | Scenario: noosfero user accepts to join community |
99 | Given I invite email "santos@invalid.br" to join community "26 Bsslines" | 104 | Given I invite email "santos@invalid.br" to join community "26 Bsslines" |
100 | And there are no pending jobs | 105 | And there are no pending jobs |
101 | When I am logged in as "josesantos" | 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 | And I follow "Process requests" | 108 | And I follow "Process requests" |
104 | And I should see "josesilva invited you to join 26 Bsslines." | 109 | And I should see "josesilva invited you to join 26 Bsslines." |
105 | And I choose "Accept" | 110 | And I choose "Accept" |
106 | When I press "Apply!" | 111 | When I press "Apply!" |
107 | Then I should not see "josesilva invited you to join 26 Bsslines." | 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 | And I follow "Manage my groups" | 114 | And I follow "Manage my groups" |
110 | Then I should see "26 Bsslines" | 115 | Then I should see "26 Bsslines" |
111 | 116 | ||
117 | + @selenium | ||
112 | Scenario: noosfero user rejects to join community | 118 | Scenario: noosfero user rejects to join community |
113 | Given I invite email "santos@invalid.br" to join community "26 Bsslines" | 119 | Given I invite email "santos@invalid.br" to join community "26 Bsslines" |
114 | And there are no pending jobs | 120 | And there are no pending jobs |
115 | When I am logged in as "josesantos" | 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 | And I follow "Process requests" | 123 | And I follow "Process requests" |
118 | And I should see "josesilva invited you to join 26 Bsslines." | 124 | And I should see "josesilva invited you to join 26 Bsslines." |
119 | And I choose "Reject" | 125 | And I choose "Reject" |
120 | When I press "Apply!" | 126 | When I press "Apply!" |
121 | Then I should not see "josesilva invited you to join 26 Bsslines." | 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 | And I follow "Manage my groups" | 129 | And I follow "Manage my groups" |
124 | Then I should not see "26 Bsslines" | 130 | Then I should not see "26 Bsslines" |
125 | 131 | ||
132 | + @selenium | ||
126 | Scenario: noosfero user receives a task when a user invites to be friend | 133 | Scenario: noosfero user receives a task when a user invites to be friend |
127 | Given I am on josesilva's control panel | 134 | Given I am on josesilva's control panel |
128 | - And I follow "Manage Friends" | 135 | + And I follow "Manage friends" |
129 | And I follow "Invite people from my e-mail contacts" | 136 | And I follow "Invite people from my e-mail contacts" |
130 | And I press "Next" | 137 | And I press "Next" |
131 | And I fill in "manual_import_addresses" with "santos@invalid.br" | 138 | And I fill in "manual_import_addresses" with "santos@invalid.br" |
139 | + And I follow "Personalize invitation mail" | ||
132 | And I fill in "mail_template" with "Follow this link <url>" | 140 | And I fill in "mail_template" with "Follow this link <url>" |
133 | And I press "Invite my friends!" | 141 | And I press "Invite my friends!" |
134 | Given there are no pending jobs | 142 | Given there are no pending jobs |
135 | When I am logged in as "josesantos" | 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 | And I follow "Process requests" | 145 | And I follow "Process requests" |
138 | Then I should see "josesilva wants to be your friend." | 146 | Then I should see "josesilva wants to be your friend." |
139 | 147 | ||
148 | + @selenium | ||
140 | Scenario: noosfero user accepts to be friend | 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 | And there are no pending jobs | 153 | And there are no pending jobs |
143 | When I am logged in as "josesantos" | 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 | And I follow "Process requests" | 156 | And I follow "Process requests" |
146 | And I should see "josesilva wants to be your friend." | 157 | And I should see "josesilva wants to be your friend." |
147 | And I choose "Accept" | 158 | And I choose "Accept" |
148 | When I press "Apply!" | 159 | When I press "Apply!" |
149 | And I should not see "josesilva wants to be your friend." | 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 | And I follow "Manage friends" | 162 | And I follow "Manage friends" |
152 | Then I should see "josesilva" | 163 | Then I should see "josesilva" |
153 | 164 | ||
165 | + @selenium | ||
154 | Scenario: noosfero user rejects to be friend | 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 | And there are no pending jobs | 170 | And there are no pending jobs |
157 | When I am logged in as "josesantos" | 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 | And I follow "Process requests" | 173 | And I follow "Process requests" |
160 | And I should see "josesilva wants to be your friend." | 174 | And I should see "josesilva wants to be your friend." |
161 | And I choose "Reject" | 175 | And I choose "Reject" |
162 | When I press "Apply!" | 176 | When I press "Apply!" |
163 | And I should not see "josesilva wants to be your friend." | 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 | And I follow "Manage friends" | 179 | And I follow "Manage friends" |
166 | Then I should not see "josesilva" | 180 | Then I should not see "josesilva" |
features/language_redirection.feature
@@ -7,7 +7,7 @@ Feature: language redirection | @@ -7,7 +7,7 @@ Feature: language redirection | ||
7 | | login | name | | 7 | | login | name | |
8 | | manuel | Manuel Silva | | 8 | | manuel | Manuel Silva | |
9 | And the following articles | 9 | And the following articles |
10 | - | owner | name | body | lang | translation_of | | 10 | + | owner | name | body | language | translation_of | |
11 | | manuel | Meu Artigo | isso é um teste | pt | nil | | 11 | | manuel | Meu Artigo | isso é um teste | pt | nil | |
12 | | manuel | My Article | this is a test | en | Meu Artigo | | 12 | | manuel | My Article | this is a test | en | Meu Artigo | |
13 | 13 | ||
@@ -26,9 +26,9 @@ Feature: language redirection | @@ -26,9 +26,9 @@ Feature: language redirection | ||
26 | # Testing the web UI | 26 | # Testing the web UI |
27 | Given I am logged in as "manuel" | 27 | Given I am logged in as "manuel" |
28 | And my browser prefers English | 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 | And I check "Automaticaly redirect the visitor to the article translated to his/her language" | 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 | When I go to /manuel/meu-artigo | 32 | When I go to /manuel/meu-artigo |
33 | Then the site should be in English | 33 | Then the site should be in English |
34 | 34 |
features/location.feature
@@ -16,13 +16,14 @@ Feature: Location | @@ -16,13 +16,14 @@ Feature: Location | ||
16 | | state | | 16 | | state | |
17 | | city | | 17 | | city | |
18 | | zip_code | | 18 | | zip_code | |
19 | - And I go to the Control panel | 19 | + And I go to zezinho's control panel |
20 | And I follow "Location" | 20 | And I follow "Location" |
21 | When I fill in "Address" with "Rua Marechal Floriano, 28" | 21 | When I fill in "Address" with "Rua Marechal Floriano, 28" |
22 | And I select "Brazil" from "Country" | 22 | And I select "Brazil" from "Country" |
23 | And I fill in "State" with "Bahia" | 23 | And I fill in "State" with "Bahia" |
24 | And I fill in "City" with "Salvador" | 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 | And I press "Save" | 27 | And I press "Save" |
27 | Then "zezinho" should have the following data | 28 | Then "zezinho" should have the following data |
28 | | address | country | state | city | zip_code | | 29 | | address | country | state | city | zip_code | |
@@ -38,14 +39,14 @@ Feature: Location | @@ -38,14 +39,14 @@ Feature: Location | ||
38 | Given the following <plural> | 39 | Given the following <plural> |
39 | | identifier | name | owner | | 40 | | identifier | name | owner | |
40 | | mycollective | My Collective | zezinho | | 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 | And I follow "Location" | 43 | And I follow "Location" |
43 | And I select "Brazil" from "Country" | 44 | And I select "Brazil" from "Country" |
44 | And I fill in the following: | 45 | And I fill in the following: |
45 | | Address | Rua Marechal Floriano, 28 | | 46 | | Address | Rua Marechal Floriano, 28 | |
46 | | State | Bahia | | 47 | | State | Bahia | |
47 | | City | Salvador | | 48 | | City | Salvador | |
48 | - | ZIP Code | 40110010 | | 49 | + | ZIP code | 40110010 | |
49 | When I press "Save" | 50 | When I press "Save" |
50 | Then "mycollective" should have the following data | 51 | Then "mycollective" should have the following data |
51 | | address | country | state | city | zip_code | | 52 | | address | country | state | city | zip_code | |
features/login.feature
@@ -8,17 +8,20 @@ Feature: login | @@ -8,17 +8,20 @@ Feature: login | ||
8 | | login | name | | 8 | | login | name | |
9 | | joaosilva | Joao Silva | | 9 | | joaosilva | Joao Silva | |
10 | 10 | ||
11 | + @selenium | ||
11 | Scenario: login from portal homepage | 12 | Scenario: login from portal homepage |
12 | Given feature "allow_change_of_redirection_after_login" is disabled on environment | 13 | Given feature "allow_change_of_redirection_after_login" is disabled on environment |
13 | And I am not logged in | 14 | And I am not logged in |
14 | And I go to the homepage | 15 | And I go to the homepage |
16 | + And I follow "Login" | ||
15 | And I fill in the following: | 17 | And I fill in the following: |
16 | - | Username | joaosilva | | 18 | + | Username / Email | joaosilva | |
17 | | Password | 123456 | | 19 | | Password | 123456 | |
18 | When I press "Log in" | 20 | When I press "Log in" |
19 | Then I should be on the homepage | 21 | Then I should be on the homepage |
20 | And I should be logged in as "joaosilva" | 22 | And I should be logged in as "joaosilva" |
21 | 23 | ||
24 | + @selenium | ||
22 | Scenario: login from some profile page | 25 | Scenario: login from some profile page |
23 | Given feature "allow_change_of_redirection_after_login" is disabled on environment | 26 | Given feature "allow_change_of_redirection_after_login" is disabled on environment |
24 | And I am not logged in | 27 | And I am not logged in |
@@ -28,30 +31,31 @@ Feature: login | @@ -28,30 +31,31 @@ Feature: login | ||
28 | And the following articles | 31 | And the following articles |
29 | | owner | name | homepage | | 32 | | owner | name | homepage | |
30 | | mariasilva | my home page | true | | 33 | | mariasilva | my home page | true | |
31 | - And I go to Maria Silva's homepage | 34 | + And I go to mariasilva's homepage |
32 | And I follow "Login" | 35 | And I follow "Login" |
33 | And I fill in the following: | 36 | And I fill in the following: |
34 | - | Username | joaosilva | | 37 | + | Username / Email | joaosilva | |
35 | | Password | 123456 | | 38 | | Password | 123456 | |
36 | When I press "Log in" | 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 | Scenario: view my control panel | 42 | Scenario: view my control panel |
40 | Given feature "allow_change_of_redirection_after_login" is disabled on environment | 43 | Given feature "allow_change_of_redirection_after_login" is disabled on environment |
41 | And I am not logged in | 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 | And I should be on login page | 46 | And I should be on login page |
44 | And I fill in the following: | 47 | And I fill in the following: |
45 | - | Username | joaosilva | | 48 | + | Username / Email | joaosilva | |
46 | | Password | 123456 | | 49 | | Password | 123456 | |
47 | When I press "Log in" | 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 | Scenario: be redirected if user goes to login page and is logged | 53 | Scenario: be redirected if user goes to login page and is logged |
51 | Given I am logged in as "joaosilva" | 54 | Given I am logged in as "joaosilva" |
52 | And I go to login page | 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 | Scenario: stay on the same page after login if this is the environment default | 59 | Scenario: stay on the same page after login if this is the environment default |
56 | Given feature "allow_change_of_redirection_after_login" is enabled on environment | 60 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
57 | And I am not logged in | 61 | And I am not logged in |
@@ -62,26 +66,28 @@ Feature: login | @@ -62,26 +66,28 @@ Feature: login | ||
62 | And the following articles | 66 | And the following articles |
63 | | owner | name | homepage | | 67 | | owner | name | homepage | |
64 | | mariasilva | my home page | true | | 68 | | mariasilva | my home page | true | |
65 | - And I go to Maria Silva's homepage | 69 | + And I go to mariasilva's homepage |
66 | And I follow "Login" | 70 | And I follow "Login" |
67 | And I fill in the following: | 71 | And I fill in the following: |
68 | - | Username | joaosilva | | 72 | + | Username / Email | joaosilva | |
69 | | Password | 123456 | | 73 | | Password | 123456 | |
70 | When I press "Log in" | 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 | Scenario: go to site homepage if this is the environment default | 78 | Scenario: go to site homepage if this is the environment default |
74 | Given feature "allow_change_of_redirection_after_login" is enabled on environment | 79 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
75 | And I am not logged in | 80 | And I am not logged in |
76 | And the environment is configured to redirect to site homepage after login | 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 | And I follow "Login" | 83 | And I follow "Login" |
79 | And I fill in the following: | 84 | And I fill in the following: |
80 | - | Username | joaosilva | | 85 | + | Username / Email | joaosilva | |
81 | | Password | 123456 | | 86 | | Password | 123456 | |
82 | When I press "Log in" | 87 | When I press "Log in" |
83 | Then I should be on the homepage | 88 | Then I should be on the homepage |
84 | 89 | ||
90 | + @selenium | ||
85 | Scenario: go to user profile after login if this is the environment default | 91 | Scenario: go to user profile after login if this is the environment default |
86 | Given feature "allow_change_of_redirection_after_login" is enabled on environment | 92 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
87 | And I am not logged in | 93 | And I am not logged in |
@@ -89,11 +95,12 @@ Feature: login | @@ -89,11 +95,12 @@ Feature: login | ||
89 | And I go to the homepage | 95 | And I go to the homepage |
90 | And I follow "Login" | 96 | And I follow "Login" |
91 | And I fill in the following: | 97 | And I fill in the following: |
92 | - | Username | joaosilva | | 98 | + | Username / Email | joaosilva | |
93 | | Password | 123456 | | 99 | | Password | 123456 | |
94 | When I press "Log in" | 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 | Scenario: go to profile homepage after login if this is the environment default | 104 | Scenario: go to profile homepage after login if this is the environment default |
98 | Given the following articles | 105 | Given the following articles |
99 | | owner | name | body | homepage | | 106 | | owner | name | body | homepage | |
@@ -104,11 +111,12 @@ Feature: login | @@ -104,11 +111,12 @@ Feature: login | ||
104 | And I go to the homepage | 111 | And I go to the homepage |
105 | And I follow "Login" | 112 | And I follow "Login" |
106 | And I fill in the following: | 113 | And I fill in the following: |
107 | - | Username | joaosilva | | 114 | + | Username / Email | joaosilva | |
108 | | Password | 123456 | | 115 | | Password | 123456 | |
109 | When I press "Log in" | 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 | Scenario: go to profile control panel after login if this is the environment default | 120 | Scenario: go to profile control panel after login if this is the environment default |
113 | Given feature "allow_change_of_redirection_after_login" is enabled on environment | 121 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
114 | And I am not logged in | 122 | And I am not logged in |
@@ -116,11 +124,12 @@ Feature: login | @@ -116,11 +124,12 @@ Feature: login | ||
116 | And I go to the homepage | 124 | And I go to the homepage |
117 | And I follow "Login" | 125 | And I follow "Login" |
118 | And I fill in the following: | 126 | And I fill in the following: |
119 | - | Username | joaosilva | | 127 | + | Username / Email | joaosilva | |
120 | | Password | 123456 | | 128 | | Password | 123456 | |
121 | When I press "Log in" | 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 | Scenario: stay on the same page after login if this is the profile default | 133 | Scenario: stay on the same page after login if this is the profile default |
125 | Given feature "allow_change_of_redirection_after_login" is enabled on environment | 134 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
126 | And I am not logged in | 135 | And I am not logged in |
@@ -132,27 +141,29 @@ Feature: login | @@ -132,27 +141,29 @@ Feature: login | ||
132 | And the following articles | 141 | And the following articles |
133 | | owner | name | homepage | | 142 | | owner | name | homepage | |
134 | | mariasilva | my home page | true | | 143 | | mariasilva | my home page | true | |
135 | - And I go to Maria Silva's homepage | 144 | + And I go to mariasilva's homepage |
136 | And I follow "Login" | 145 | And I follow "Login" |
137 | And I fill in the following: | 146 | And I fill in the following: |
138 | - | Username | joaosilva | | 147 | + | Username / Email | joaosilva | |
139 | | Password | 123456 | | 148 | | Password | 123456 | |
140 | When I press "Log in" | 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 | Scenario: go to site homepage if this is the profile default | 153 | Scenario: go to site homepage if this is the profile default |
144 | Given feature "allow_change_of_redirection_after_login" is enabled on environment | 154 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
145 | And I am not logged in | 155 | And I am not logged in |
146 | And the environment is configured to stay on the same page after login | 156 | And the environment is configured to stay on the same page after login |
147 | And the profile joaosilva is configured to redirect to site homepage after login | 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 | And I follow "Login" | 159 | And I follow "Login" |
150 | And I fill in the following: | 160 | And I fill in the following: |
151 | - | Username | joaosilva | | 161 | + | Username / Email | joaosilva | |
152 | | Password | 123456 | | 162 | | Password | 123456 | |
153 | When I press "Log in" | 163 | When I press "Log in" |
154 | Then I should be on the homepage | 164 | Then I should be on the homepage |
155 | 165 | ||
166 | + @selenium | ||
156 | Scenario: go to user profile after login if this is the profile default | 167 | Scenario: go to user profile after login if this is the profile default |
157 | Given feature "allow_change_of_redirection_after_login" is enabled on environment | 168 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
158 | And I am not logged in | 169 | And I am not logged in |
@@ -161,11 +172,12 @@ Feature: login | @@ -161,11 +172,12 @@ Feature: login | ||
161 | And I go to the homepage | 172 | And I go to the homepage |
162 | And I follow "Login" | 173 | And I follow "Login" |
163 | And I fill in the following: | 174 | And I fill in the following: |
164 | - | Username | joaosilva | | 175 | + | Username / Email | joaosilva | |
165 | | Password | 123456 | | 176 | | Password | 123456 | |
166 | When I press "Log in" | 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 | Scenario: go to profile homepage after login if this is the profile default | 181 | Scenario: go to profile homepage after login if this is the profile default |
170 | Given the following articles | 182 | Given the following articles |
171 | | owner | name | body | homepage | | 183 | | owner | name | body | homepage | |
@@ -177,11 +189,12 @@ Feature: login | @@ -177,11 +189,12 @@ Feature: login | ||
177 | And I go to the homepage | 189 | And I go to the homepage |
178 | And I follow "Login" | 190 | And I follow "Login" |
179 | And I fill in the following: | 191 | And I fill in the following: |
180 | - | Username | joaosilva | | 192 | + | Username / Email | joaosilva | |
181 | | Password | 123456 | | 193 | | Password | 123456 | |
182 | When I press "Log in" | 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 | Scenario: go to profile control panel after login if this is the profile default | 198 | Scenario: go to profile control panel after login if this is the profile default |
186 | Given feature "allow_change_of_redirection_after_login" is enabled on environment | 199 | Given feature "allow_change_of_redirection_after_login" is enabled on environment |
187 | And I am not logged in | 200 | And I am not logged in |
@@ -190,7 +203,7 @@ Feature: login | @@ -190,7 +203,7 @@ Feature: login | ||
190 | And I go to the homepage | 203 | And I go to the homepage |
191 | And I follow "Login" | 204 | And I follow "Login" |
192 | And I fill in the following: | 205 | And I fill in the following: |
193 | - | Username | joaosilva | | 206 | + | Username / Email | joaosilva | |
194 | | Password | 123456 | | 207 | | Password | 123456 | |
195 | When I press "Log in" | 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,7 +26,6 @@ Feature: manage categories | ||
26 | Scenario: load subcategories only after following parent | 26 | Scenario: load subcategories only after following parent |
27 | Then I should not see "Beans" | 27 | Then I should not see "Beans" |
28 | And I should not see "Potatoes" | 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,8 +15,10 @@ Feature: manage enterprises | ||
15 | Scenario: seeing my enterprises on menu | 15 | Scenario: seeing my enterprises on menu |
16 | Given I am logged in as "joaosilva" | 16 | Given I am logged in as "joaosilva" |
17 | Then I should see "My enterprises" link | 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 | @selenium | 23 | @selenium |
22 | Scenario: not show enterprises on menu to a user without enterprises | 24 | Scenario: not show enterprises on menu to a user without enterprises |
features/manage_inputs.feature
@@ -32,8 +32,8 @@ Feature: manage inputs | @@ -32,8 +32,8 @@ Feature: manage inputs | ||
32 | And I follow "Inputs" | 32 | And I follow "Inputs" |
33 | Then I should not see "Add new input or raw material" | 33 | Then I should not see "Add new input or raw material" |
34 | And I follow "Add the inputs or raw material used by this product" | 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 | And I press "Save and continue" | 37 | And I press "Save and continue" |
38 | Then I should see "Rock" | 38 | Then I should see "Rock" |
39 | 39 | ||
@@ -47,8 +47,8 @@ Feature: manage inputs | @@ -47,8 +47,8 @@ Feature: manage inputs | ||
47 | And I follow "Inputs" | 47 | And I follow "Inputs" |
48 | And I should not see "Add the inputs or raw material used by this product" | 48 | And I should not see "Add the inputs or raw material used by this product" |
49 | And I follow "Add new input or raw material" | 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 | And I press "Save and continue" | 52 | And I press "Save and continue" |
53 | Then I should see "Rock" | 53 | Then I should see "Rock" |
54 | 54 | ||
@@ -57,8 +57,8 @@ Feature: manage inputs | @@ -57,8 +57,8 @@ Feature: manage inputs | ||
57 | Given I am logged in as "joaosilva" | 57 | Given I am logged in as "joaosilva" |
58 | When I go to Rede Moinho's page of product Abbey Road | 58 | When I go to Rede Moinho's page of product Abbey Road |
59 | And I follow "Inputs" | 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 | Then I should see "Abbey Road" | 62 | Then I should see "Abbey Road" |
63 | And I should see "Add the inputs or raw material used by this product" | 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,7 +90,7 @@ Feature: manage inputs | ||
90 | And I follow "Inputs and raw material" | 90 | And I follow "Inputs and raw material" |
91 | Then I should see "Edit" within ".input-item" | 91 | Then I should see "Edit" within ".input-item" |
92 | 92 | ||
93 | - @selenium | 93 | + @selenium-fixme |
94 | Scenario: Order inputs by position | 94 | Scenario: Order inputs by position |
95 | Given the following product_categories | 95 | Given the following product_categories |
96 | | name | | 96 | | name | |
@@ -131,7 +131,7 @@ Feature: manage inputs | @@ -131,7 +131,7 @@ Feature: manage inputs | ||
131 | And I follow "Inputs" | 131 | And I follow "Inputs" |
132 | And I follow "Click here to add price and the amount used" | 132 | And I follow "Click here to add price and the amount used" |
133 | And I should not see "Price by Meter ($)" | 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 | Then I should see "Price by Meter ($)" | 135 | Then I should see "Price by Meter ($)" |
136 | 136 | ||
137 | @selenium | 137 | @selenium |
@@ -145,7 +145,7 @@ Feature: manage inputs | @@ -145,7 +145,7 @@ Feature: manage inputs | ||
145 | And I follow "Click here to add price and the amount used" | 145 | And I follow "Click here to add price and the amount used" |
146 | And I fill in "Amount used" with "2.5" | 146 | And I fill in "Amount used" with "2.5" |
147 | And I fill in "Price" with "11.50" | 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 | And I press "Save" | 149 | And I press "Save" |
150 | Then I should see "2.5" | 150 | Then I should see "2.5" |
151 | And I should see "Meter" | 151 | And I should see "Meter" |
@@ -162,14 +162,14 @@ Feature: manage inputs | @@ -162,14 +162,14 @@ Feature: manage inputs | ||
162 | And I follow "Click here to add price and the amount used" | 162 | And I follow "Click here to add price and the amount used" |
163 | And I fill in "Amount used" with "2.5" | 163 | And I fill in "Amount used" with "2.5" |
164 | And I fill in "Price" with "11.50" | 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 | And I press "Save" | 166 | And I press "Save" |
167 | Then I should see "2.5" | 167 | Then I should see "2.5" |
168 | And I should see "Meter" | 168 | And I should see "Meter" |
169 | When I follow "Edit" within ".input-details" | 169 | When I follow "Edit" within ".input-details" |
170 | And I fill in "Amount used" with "3.0" | 170 | And I fill in "Amount used" with "3.0" |
171 | And I fill in "Price" with "23.31" | 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 | And I press "Save" | 173 | And I press "Save" |
174 | Then I should see "3" | 174 | Then I should see "3" |
175 | And I should see "Litre" | 175 | And I should see "Litre" |
@@ -182,12 +182,12 @@ Feature: manage inputs | @@ -182,12 +182,12 @@ Feature: manage inputs | ||
182 | And I am logged in as "joaosilva" | 182 | And I am logged in as "joaosilva" |
183 | When I go to Rede Moinho's page of product Abbey Road | 183 | When I go to Rede Moinho's page of product Abbey Road |
184 | And I follow "Inputs" | 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 | Then I should see "Cancel" | 186 | Then I should see "Cancel" |
187 | And I should see "Amount used" | 187 | And I should see "Amount used" |
188 | And I should see "Price" | 188 | And I should see "Price" |
189 | And I should see "This input or raw material inpact on the final price of the product?" | 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 | Then I should see "Click here to add price and the amount used" | 191 | Then I should see "Click here to add price and the amount used" |
192 | 192 | ||
193 | @selenium | 193 | @selenium |
@@ -199,7 +199,7 @@ Feature: manage inputs | @@ -199,7 +199,7 @@ Feature: manage inputs | ||
199 | When I go to Rede Moinho's page of product Abbey Road | 199 | When I go to Rede Moinho's page of product Abbey Road |
200 | And I follow "Inputs" | 200 | And I follow "Inputs" |
201 | And I follow "Edit" within ".input-details" | 201 | And I follow "Edit" within ".input-details" |
202 | - And I follow "Cancel" | 202 | + And I follow "Cancel" within ".edit_input" |
203 | And I follow "Edit" within ".input-details" | 203 | And I follow "Edit" within ".input-details" |
204 | Then I should see "Amount used" | 204 | Then I should see "Amount used" |
205 | And I should see "Price by Meter" | 205 | And I should see "Price by Meter" |
@@ -215,7 +215,7 @@ Feature: manage inputs | @@ -215,7 +215,7 @@ Feature: manage inputs | ||
215 | Then I should see "Rock" | 215 | Then I should see "Rock" |
216 | And I should not see "Add the inputs or raw material used by this product" | 216 | And I should not see "Add the inputs or raw material used by this product" |
217 | When I follow "Remove" | 217 | When I follow "Remove" |
218 | - And I confirm | 218 | + And I confirm the browser dialog |
219 | Then I should see "Add the inputs or raw material used by this product" | 219 | Then I should see "Add the inputs or raw material used by this product" |
220 | 220 | ||
221 | @selenium | 221 | @selenium |
@@ -226,18 +226,18 @@ Feature: manage inputs | @@ -226,18 +226,18 @@ Feature: manage inputs | ||
226 | | redemoinho | Music | Manu Chao | | 226 | | redemoinho | Music | Manu Chao | |
227 | And I am logged in as "joaosilva" | 227 | And I am logged in as "joaosilva" |
228 | When I go to Rede Moinho's page of product Depeche Mode | 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 | When I follow "Inputs and raw material" | 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 | When I go to Rede Moinho's page of product Manu Chao | 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 | When I go to Rede Moinho's page of product Depeche Mode | 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 | Scenario: Order input list | 241 | Scenario: Order input list |
242 | Given the following product_category | 242 | Given the following product_category |
243 | | name | | 243 | | name | |
features/manage_product_price_details.feature
@@ -51,9 +51,9 @@ Feature: manage product price details | @@ -51,9 +51,9 @@ Feature: manage product price details | ||
51 | And I follow "Price composition" | 51 | And I follow "Price composition" |
52 | And I follow "Describe here the cost of production" | 52 | And I follow "Describe here the cost of production" |
53 | And I follow "New cost" | 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 | And I fill in "$" with "5.00" | 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 | And I press "Save" | 57 | And I press "Save" |
58 | Then I should not see "Save" | 58 | Then I should not see "Save" |
59 | And I should see "Describe here the cost of production" | 59 | And I should see "Describe here the cost of production" |
@@ -67,15 +67,15 @@ Feature: manage product price details | @@ -67,15 +67,15 @@ Feature: manage product price details | ||
67 | And I follow "Price composition" | 67 | And I follow "Price composition" |
68 | And I follow "Describe here the cost of production" | 68 | And I follow "Describe here the cost of production" |
69 | And I follow "New cost" | 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 | And I fill in "$" with "20.00" | 71 | And I fill in "$" with "20.00" |
72 | And I leave the ".price-details-price" field | 72 | And I leave the ".price-details-price" field |
73 | And I press "Save" | 73 | And I press "Save" |
74 | Then I should not see "Save" | 74 | Then I should not see "Save" |
75 | And I should see "Taxes" within "#display-price-details" | 75 | And I should see "Taxes" within "#display-price-details" |
76 | When I follow "Describe here the cost of production" | 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 | And I press "Save" | 79 | And I press "Save" |
80 | And I should not see "Taxes" within "#display-price-details" | 80 | And I should not see "Taxes" within "#display-price-details" |
81 | And I should see "Energy" within "#display-price-details" | 81 | And I should see "Energy" within "#display-price-details" |
@@ -102,9 +102,10 @@ Feature: manage product price details | @@ -102,9 +102,10 @@ Feature: manage product price details | ||
102 | And I follow "Price composition" | 102 | And I follow "Price composition" |
103 | And I follow "Describe here the cost of production" | 103 | And I follow "Describe here the cost of production" |
104 | And I follow "New cost" | 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 | And I fill in "$" with "20.00" | 106 | And I fill in "$" with "20.00" |
107 | And I press "Save" | 107 | And I press "Save" |
108 | + And I go to Rede Moinho's page of product Abbey Road | ||
108 | Then I should see "Inputs" within ".price-detail-name" | 109 | Then I should see "Inputs" within ".price-detail-name" |
109 | And I should see "60.0" within ".price-detail-price" | 110 | And I should see "60.0" within ".price-detail-price" |
110 | 111 | ||
@@ -114,10 +115,10 @@ Feature: manage product price details | @@ -114,10 +115,10 @@ Feature: manage product price details | ||
114 | And I follow "Price composition" | 115 | And I follow "Price composition" |
115 | And I follow "Describe here the cost of production" | 116 | And I follow "Describe here the cost of production" |
116 | And I follow "New cost" | 117 | And I follow "New cost" |
118 | + And I select "Other cost" from "price_details__production_cost_id" within "#display-product-price-details" | ||
117 | And I want to add "Energy" as cost | 119 | And I want to add "Energy" as cost |
118 | - And I select "Other cost" | ||
119 | And I fill in "$" with "10.00" | 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 | And I press "Save" | 122 | And I press "Save" |
122 | When I follow "Describe here the cost of production" | 123 | When I follow "Describe here the cost of production" |
123 | Then I should see "Energy" within ".production-cost-selection" | 124 | Then I should see "Energy" within ".production-cost-selection" |
@@ -127,9 +128,10 @@ Feature: manage product price details | @@ -127,9 +128,10 @@ Feature: manage product price details | ||
127 | Given I go to Rede Moinho's page of product Abbey Road | 128 | Given I go to Rede Moinho's page of product Abbey Road |
128 | And I follow "Price composition" | 129 | And I follow "Price composition" |
129 | And I follow "Describe here the cost of production" | 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 | And I want to add "Energy" as cost | 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 | @selenium | 136 | @selenium |
135 | Scenario: remove price detail | 137 | Scenario: remove price detail |
@@ -141,7 +143,7 @@ Feature: manage product price details | @@ -141,7 +143,7 @@ Feature: manage product price details | ||
141 | And I follow "Describe here the cost of production" | 143 | And I follow "Describe here the cost of production" |
142 | And I should see "Taxes" within "#manage-product-details-form" | 144 | And I should see "Taxes" within "#manage-product-details-form" |
143 | When I follow "Remove" within "#manage-product-details-form" | 145 | When I follow "Remove" within "#manage-product-details-form" |
144 | - And I confirm | 146 | + And I confirm the browser dialog |
145 | And I press "Save" | 147 | And I press "Save" |
146 | And I follow "Describe here the cost of production" | 148 | And I follow "Describe here the cost of production" |
147 | Then I should not see "Taxes" within "#manage-product-details-form" | 149 | Then I should not see "Taxes" within "#manage-product-details-form" |
@@ -160,7 +162,7 @@ Feature: manage product price details | @@ -160,7 +162,7 @@ Feature: manage product price details | ||
160 | Then I should see "$ 60.00 of $ 80.00" within "#progressbar-text" | 162 | Then I should see "$ 60.00 of $ 80.00" within "#progressbar-text" |
161 | And I follow "New cost" | 163 | And I follow "New cost" |
162 | And I fill in "$" with "10.00" | 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 | Then I should see "$ 70.00 of $ 80.00" within "#progressbar-text" | 166 | Then I should see "$ 70.00 of $ 80.00" within "#progressbar-text" |
165 | 167 | ||
166 | @selenium | 168 | @selenium |
features/manage_products.feature
@@ -13,7 +13,7 @@ Feature: manage products | @@ -13,7 +13,7 @@ Feature: manage products | ||
13 | 13 | ||
14 | Scenario: display "create new product" button | 14 | Scenario: display "create new product" button |
15 | Given I am logged in as "joaosilva" | 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 | When I follow "Manage Products and Services" | 17 | When I follow "Manage Products and Services" |
18 | Then I should see "New product or service" | 18 | Then I should see "New product or service" |
19 | 19 | ||
@@ -34,7 +34,7 @@ Feature: manage products | @@ -34,7 +34,7 @@ Feature: manage products | ||
34 | | redemoinho | bicycle | Bike I | bicycle 9 | | 34 | | redemoinho | bicycle | Bike I | bicycle 9 | |
35 | | redemoinho | bicycle | Bike J | bicycle 10 | | 35 | | redemoinho | bicycle | Bike J | bicycle 10 | |
36 | | redemoinho | bicycle | Bike K | bicycle 11 | | 36 | | redemoinho | bicycle | Bike K | bicycle 11 | |
37 | - When I go to /catalog/redemoinho | 37 | + When I go to redemoinho's products page |
38 | Then I should see "Bike A" within "#product-list" | 38 | Then I should see "Bike A" within "#product-list" |
39 | And I should see "Bike B" within "#product-list" | 39 | And I should see "Bike B" within "#product-list" |
40 | And I should see "Bike C" within "#product-list" | 40 | And I should see "Bike C" within "#product-list" |
@@ -52,13 +52,13 @@ Feature: manage products | @@ -52,13 +52,13 @@ Feature: manage products | ||
52 | 52 | ||
53 | Scenario: listing products and services | 53 | Scenario: listing products and services |
54 | Given I am logged in as "joaosilva" | 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 | And I follow "Manage Products and Services" | 56 | And I follow "Manage Products and Services" |
57 | Then I should see "Listing products and services" | 57 | Then I should see "Listing products and services" |
58 | 58 | ||
59 | Scenario: see button to back in categories hierarchy | 59 | Scenario: see button to back in categories hierarchy |
60 | Given I am logged in as "joaosilva" | 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 | And I follow "Manage Products and Services" | 62 | And I follow "Manage Products and Services" |
63 | When I follow "New product or service" | 63 | When I follow "New product or service" |
64 | Then I should see "Back to the product listing" link | 64 | Then I should see "Back to the product listing" link |
@@ -69,9 +69,7 @@ Feature: manage products | @@ -69,9 +69,7 @@ Feature: manage products | ||
69 | | Products | | 69 | | Products | |
70 | | Services | | 70 | | Services | |
71 | Given I am logged in as "joaosilva" | 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 | Then I should see "Products" | 73 | Then I should see "Products" |
76 | And I should see "Service" | 74 | And I should see "Service" |
77 | 75 | ||
@@ -85,10 +83,8 @@ Feature: manage products | @@ -85,10 +83,8 @@ Feature: manage products | ||
85 | | Computers level1 | products-level0 | | 83 | | Computers level1 | products-level0 | |
86 | | DVDs level1 | products-level0 | | 84 | | DVDs level1 | products-level0 | |
87 | Given I am logged in as "joaosilva" | 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 | Then I should see "Computers level1" | 88 | Then I should see "Computers level1" |
93 | And I should see "DVDs level1" | 89 | And I should see "DVDs level1" |
94 | 90 | ||
@@ -103,12 +99,12 @@ Feature: manage products | @@ -103,12 +99,12 @@ Feature: manage products | ||
103 | | Computers level1 | products-level0 | | 99 | | Computers level1 | products-level0 | |
104 | | Software development level1 | services-level0 | | 100 | | Software development level1 | services-level0 | |
105 | Given I am logged in as "joaosilva" | 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 | Then I should see /Software develop/ | 108 | Then I should see /Software develop/ |
113 | And I should not see /Computers level/ | 109 | And I should not see /Computers level/ |
114 | 110 | ||
@@ -121,11 +117,9 @@ Feature: manage products | @@ -121,11 +117,9 @@ Feature: manage products | ||
121 | | name | parent | | 117 | | name | parent | |
122 | | Computers | products | | 118 | | Computers | products | |
123 | Given I am logged in as "joaosilva" | 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 | Then I should see "Products → Computers" | 123 | Then I should see "Products → Computers" |
130 | 124 | ||
131 | @selenium | 125 | @selenium |
@@ -137,11 +131,9 @@ Feature: manage products | @@ -137,11 +131,9 @@ Feature: manage products | ||
137 | | name | parent | | 131 | | name | parent | |
138 | | Category Level 1 | toplevel-product-categories | | 132 | | Category Level 1 | toplevel-product-categories | |
139 | Given I am logged in as "joaosilva" | 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 | Then I should see "Toplevel Product Categories" link | 137 | Then I should see "Toplevel Product Categories" link |
146 | And I should not see "Category Level 1" link | 138 | And I should not see "Category Level 1" link |
147 | 139 | ||
@@ -151,8 +143,8 @@ Feature: manage products | @@ -151,8 +143,8 @@ Feature: manage products | ||
151 | | name | | 143 | | name | |
152 | | Only for test | | 144 | | Only for test | |
153 | And I am logged in as "joaosilva" | 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 | @selenium | 149 | @selenium |
158 | Scenario: enable save button when select one category | 150 | Scenario: enable save button when select one category |
@@ -160,11 +152,9 @@ Feature: manage products | @@ -160,11 +152,9 @@ Feature: manage products | ||
160 | And the following product_category | 152 | And the following product_category |
161 | | name | | 153 | | name | |
162 | | Browsers (accept categories) | | 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 | @selenium | 159 | @selenium |
170 | Scenario: dont enable save button when select category with not accept products | 160 | Scenario: dont enable save button when select category with not accept products |
@@ -172,11 +162,9 @@ Feature: manage products | @@ -172,11 +162,9 @@ Feature: manage products | ||
172 | | name | accept_products | | 162 | | name | accept_products | |
173 | | Browsers | false | | 163 | | Browsers | false | |
174 | Given I am logged in as "joaosilva" | 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 | @selenium | 169 | @selenium |
182 | Scenario: save product | 170 | Scenario: save product |
@@ -184,32 +172,14 @@ Feature: manage products | @@ -184,32 +172,14 @@ Feature: manage products | ||
184 | | name | | 172 | | name | |
185 | | Bicycle | | 173 | | Bicycle | |
186 | Given I am logged in as "joaosilva" | 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 | And I press "Save and continue" | 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 | And I should see "Change category" | 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 | Scenario: a user with permission can see edit links | 183 | Scenario: a user with permission can see edit links |
214 | Given the following product_category | 184 | Given the following product_category |
215 | | name | | 185 | | name | |
@@ -331,10 +301,11 @@ Feature: manage products | @@ -331,10 +301,11 @@ Feature: manage products | ||
331 | And I am logged in as "joaosilva" | 301 | And I am logged in as "joaosilva" |
332 | When I go to Rede Moinho's page of product Generic pc | 302 | When I go to Rede Moinho's page of product Generic pc |
333 | And I follow "Change category" | 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 | And I press "Save and continue" | 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 | @selenium | 310 | @selenium |
340 | Scenario: cancel edition of a product category | 311 | Scenario: cancel edition of a product category |
@@ -424,7 +395,9 @@ Feature: manage products | @@ -424,7 +395,9 @@ Feature: manage products | ||
424 | And I follow "Change category" | 395 | And I follow "Change category" |
425 | And I press "Save and continue" | 396 | And I press "Save and continue" |
426 | Then I should not see "Product category can't be blank" | 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 | And I should see "Generic pc" | 401 | And I should see "Generic pc" |
429 | 402 | ||
430 | @selenium | 403 | @selenium |
@@ -450,7 +423,7 @@ Feature: manage products | @@ -450,7 +423,7 @@ Feature: manage products | ||
450 | And I am logged in as "joaosilva" | 423 | And I am logged in as "joaosilva" |
451 | When I go to Rede Moinho's page of product Generic pc | 424 | When I go to Rede Moinho's page of product Generic pc |
452 | And I follow "Change category" | 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 | @selenium | 428 | @selenium |
456 | Scenario: Truncate long category name in selection of category | 429 | Scenario: Truncate long category name in selection of category |
@@ -462,7 +435,7 @@ Feature: manage products | @@ -462,7 +435,7 @@ Feature: manage products | ||
462 | | name | parent | | 435 | | name | parent | |
463 | | Netbook Quantum | Super Quantum Computers with teraflops | | 436 | | Netbook Quantum | Super Quantum Computers with teraflops | |
464 | And I am logged in as "joaosilva" | 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 | Then I should see "Nanonote nanotech with long lo..." | 439 | Then I should see "Nanonote nanotech with long lo..." |
467 | And I should see "Super Quantum Computers with t... »" | 440 | And I should see "Super Quantum Computers with t... »" |
468 | 441 | ||
@@ -481,7 +454,7 @@ Feature: manage products | @@ -481,7 +454,7 @@ Feature: manage products | ||
481 | When I go to Rede Moinho's page of product Bike | 454 | When I go to Rede Moinho's page of product Bike |
482 | And I follow "Edit name and unit" | 455 | And I follow "Edit name and unit" |
483 | And I fill in "Red bicycle" for "product_name" | 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 | And I press "Save" | 458 | And I press "Save" |
486 | Then I should see "Red bicycle - kilo" | 459 | Then I should see "Red bicycle - kilo" |
487 | 460 | ||
@@ -519,12 +492,14 @@ Feature: manage products | @@ -519,12 +492,14 @@ Feature: manage products | ||
519 | When I go to Rede Moinho's page of product Bike | 492 | When I go to Rede Moinho's page of product Bike |
520 | And I follow "Add price and other basic information" | 493 | And I follow "Add price and other basic information" |
521 | And I follow "Add new qualifier" | 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 | And I press "Save" | 496 | And I press "Save" |
497 | + And I go to Rede Moinho's page of product Bike | ||
524 | Then I should see "Organic (Self declared)" | 498 | Then I should see "Organic (Self declared)" |
525 | When I follow "Edit basic information" | 499 | When I follow "Edit basic information" |
526 | And I follow "Delete qualifier" | 500 | And I follow "Delete qualifier" |
527 | And I press "Save" | 501 | And I press "Save" |
502 | + And I go to Rede Moinho's page of product Bike | ||
528 | Then I should not see "Organic (Self declared)" | 503 | Then I should not see "Organic (Self declared)" |
529 | 504 | ||
530 | @selenium | 505 | @selenium |
features/my_network_block.feature
@@ -20,11 +20,11 @@ Feature: my_network_block | @@ -20,11 +20,11 @@ Feature: my_network_block | ||
20 | | identifier | name | owner | public_profile | | 20 | | identifier | name | owner | public_profile | |
21 | | other-public-community | Other Public Community | joaosilva | true | | 21 | | other-public-community | Other Public Community | joaosilva | true | |
22 | | private-community | Private Community | joaosilva | false | | 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 | And I should see "2 communities" | 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 | And I follow "Join" | 26 | And I follow "Join" |
27 | - And I go to Joao Silva's homepage | 27 | + And I go to joaosilva's homepage |
28 | Then I should see "3 communities" | 28 | Then I should see "3 communities" |
29 | 29 | ||
30 | @selenium | 30 | @selenium |
@@ -34,11 +34,11 @@ Feature: my_network_block | @@ -34,11 +34,11 @@ Feature: my_network_block | ||
34 | | identifier | name | owner | visible | | 34 | | identifier | name | owner | visible | |
35 | | visible-community | Visible Community | joaosilva | true | | 35 | | visible-community | Visible Community | joaosilva | true | |
36 | | not-visible-community | Not Visible Community | joaosilva | false | | 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 | And I should see "One community" | 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 | And I follow "Join" | 40 | And I follow "Join" |
41 | - And I go to Joao Silva's homepage | 41 | + And I go to joaosilva's homepage |
42 | Then I should see "2 communities" | 42 | Then I should see "2 communities" |
43 | 43 | ||
44 | Scenario: display how many public/private friends I have | 44 | Scenario: display how many public/private friends I have |
@@ -48,10 +48,10 @@ Feature: my_network_block | @@ -48,10 +48,10 @@ Feature: my_network_block | ||
48 | | josesilva | Jose Silva | false | | 48 | | josesilva | Jose Silva | false | |
49 | And "joaosilva" is friend of "mariasilva" | 49 | And "joaosilva" is friend of "mariasilva" |
50 | And I am logged in as "joaosilva" | 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 | Then I should see "1 friend" | 52 | Then I should see "1 friend" |
53 | And "joaosilva" is friend of "josesilva" | 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 | Then I should see "2 friends" | 55 | Then I should see "2 friends" |
56 | 56 | ||
57 | Scenario: not display how many invisible friends I have | 57 | Scenario: not display how many invisible friends I have |
@@ -62,8 +62,8 @@ Feature: my_network_block | @@ -62,8 +62,8 @@ Feature: my_network_block | ||
62 | And "josesilva" is invisible | 62 | And "josesilva" is invisible |
63 | And "joaosilva" is friend of "mariasilva" | 63 | And "joaosilva" is friend of "mariasilva" |
64 | And I am logged in as "joaosilva" | 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 | Then I should see "1 friend" | 66 | Then I should see "1 friend" |
67 | And "joaosilva" is friend of "josesilva" | 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 | Then I should see "1 friend" | 69 | Then I should see "1 friend" |
features/new_content_on_cms.feature
@@ -7,10 +7,10 @@ Feature: create content on cms | @@ -7,10 +7,10 @@ Feature: create content on cms | ||
7 | | login | name | | 7 | | login | name | |
8 | | joaosilva | Joao Silva | | 8 | | joaosilva | Joao Silva | |
9 | And I am logged in as "joaosilva" | 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 | Scenario: open page to select type of content | 12 | Scenario: open page to select type of content |
13 | - Given I follow "New Content" | 13 | + Given I follow "New content" |
14 | Then I should see "Choose the type of content" | 14 | Then I should see "Choose the type of content" |
15 | 15 | ||
16 | Scenario: list all content types | 16 | Scenario: list all content types |
@@ -27,7 +27,7 @@ Feature: create content on cms | @@ -27,7 +27,7 @@ Feature: create content on cms | ||
27 | When I follow "Folder" | 27 | When I follow "Folder" |
28 | And I fill in "Title" with "My Folder" | 28 | And I fill in "Title" with "My Folder" |
29 | And I press "Save" | 29 | And I press "Save" |
30 | - And I go to Joao Silva's cms | 30 | + And I go to joaosilva's cms |
31 | Then I should see "My Folder" | 31 | Then I should see "My Folder" |
32 | 32 | ||
33 | Scenario: create a tiny_mce article | 33 | Scenario: create a tiny_mce article |
@@ -35,7 +35,7 @@ Feature: create content on cms | @@ -35,7 +35,7 @@ Feature: create content on cms | ||
35 | When I follow "Text article with visual editor" | 35 | When I follow "Text article with visual editor" |
36 | And I fill in "Title" with "My tiny_mce article" | 36 | And I fill in "Title" with "My tiny_mce article" |
37 | And I press "Save" | 37 | And I press "Save" |
38 | - And I go to Joao Silva's cms | 38 | + And I go to joaosilva's cms |
39 | Then I should see "My tiny_mce article" | 39 | Then I should see "My tiny_mce article" |
40 | 40 | ||
41 | Scenario: create a textile article | 41 | Scenario: create a textile article |
@@ -43,7 +43,7 @@ Feature: create content on cms | @@ -43,7 +43,7 @@ Feature: create content on cms | ||
43 | When I follow "Text article with Textile markup" | 43 | When I follow "Text article with Textile markup" |
44 | And I fill in "Title" with "My textile article" | 44 | And I fill in "Title" with "My textile article" |
45 | And I press "Save" | 45 | And I press "Save" |
46 | - And I go to Joao Silva's cms | 46 | + And I go to joaosilva's cms |
47 | Then I should see "My textile article" | 47 | Then I should see "My textile article" |
48 | 48 | ||
49 | Scenario: create a Blog | 49 | Scenario: create a Blog |
@@ -51,7 +51,7 @@ Feature: create content on cms | @@ -51,7 +51,7 @@ Feature: create content on cms | ||
51 | When I follow "Blog" | 51 | When I follow "Blog" |
52 | And I fill in "Title" with "My blog" | 52 | And I fill in "Title" with "My blog" |
53 | And I press "Save" | 53 | And I press "Save" |
54 | - And I go to Joao Silva's cms | 54 | + And I go to joaosilva's cms |
55 | Then I should see "My blog" | 55 | Then I should see "My blog" |
56 | 56 | ||
57 | Scenario: create an event | 57 | Scenario: create an event |
@@ -59,7 +59,7 @@ Feature: create content on cms | @@ -59,7 +59,7 @@ Feature: create content on cms | ||
59 | When I follow "Event" | 59 | When I follow "Event" |
60 | And I fill in "Title" with "My event" | 60 | And I fill in "Title" with "My event" |
61 | And I press "Save" | 61 | And I press "Save" |
62 | - And I go to Joao Silva's cms | 62 | + And I go to joaosilva's cms |
63 | Then I should see "My event" | 63 | Then I should see "My event" |
64 | 64 | ||
65 | Scenario: redirect to upload files if choose UploadedFile | 65 | Scenario: redirect to upload files if choose UploadedFile |
features/organization_custom_fields.feature
@@ -9,7 +9,7 @@ Feature: organization custom fields | @@ -9,7 +9,7 @@ Feature: organization custom fields | ||
9 | | joaosilva | Joao Silva | | 9 | | joaosilva | Joao Silva | |
10 | And I am logged in as "joaosilva" | 10 | And I am logged in as "joaosilva" |
11 | And feature "enterprise_registration" is enabled on environment | 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 | Scenario Outline: organization active fields are not displayed on creation | 14 | Scenario Outline: organization active fields are not displayed on creation |
15 | Given the following <organization> fields are active fields | 15 | Given the following <organization> fields are active fields |
@@ -35,7 +35,7 @@ Feature: organization custom fields | @@ -35,7 +35,7 @@ Feature: organization custom fields | ||
35 | | name | identifier | | 35 | | name | identifier | |
36 | | Organization | organization | | 36 | | Organization | organization | |
37 | And "Joao Silva" is admin of "Organization" | 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 | And I follow <information> | 39 | And I follow <information> |
40 | Then I should see "Display name" | 40 | Then I should see "Display name" |
41 | Then I should see "Contact email" | 41 | Then I should see "Contact email" |
@@ -70,7 +70,7 @@ Feature: organization custom fields | @@ -70,7 +70,7 @@ Feature: organization custom fields | ||
70 | | name | identifier | display_name | contact_email | city | | 70 | | name | identifier | display_name | contact_email | city | |
71 | | Organization | organization | organization | bla@bleee.com | city | | 71 | | Organization | organization | organization | bla@bleee.com | city | |
72 | And "Joao Silva" is admin of "Organization" | 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 | And I follow <information> | 74 | And I follow <information> |
75 | And I fill in the following: | 75 | And I fill in the following: |
76 | | Display name | | | 76 | | Display name | | |
features/plugins.feature
@@ -23,36 +23,36 @@ Feature: plugins | @@ -23,36 +23,36 @@ Feature: plugins | ||
23 | 23 | ||
24 | Scenario: a user must see the plugin\'s button in the control panel if the plugin is enabled | 24 | Scenario: a user must see the plugin\'s button in the control panel if the plugin is enabled |
25 | Given plugin TestPlugin is enabled on environment | 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 | Then I should see "Test plugin button" | 27 | Then I should see "Test plugin button" |
28 | 28 | ||
29 | Scenario: a user must see the plugin\'s tab in in the profile if the plugin is enabled | 29 | Scenario: a user must see the plugin\'s tab in in the profile if the plugin is enabled |
30 | Given plugin TestPlugin is enabled on environment | 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 | Then I should see "Test plugin tab" | 32 | Then I should see "Test plugin tab" |
33 | 33 | ||
34 | Scenario: a user must not see the plugin\'s button in the control panel if the plugin is disabled | 34 | Scenario: a user must not see the plugin\'s button in the control panel if the plugin is disabled |
35 | Given plugin TestPlugin is disabled on environment | 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 | Then I should not see "Test plugin button" | 37 | Then I should not see "Test plugin button" |
38 | 38 | ||
39 | Scenario: a user must not see the plugin\'s tab in in the profile if the plugin is disabled | 39 | Scenario: a user must not see the plugin\'s tab in in the profile if the plugin is disabled |
40 | Given plugin TestPlugin is disabled on environment | 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 | Then I should not see "Test plugin tab" | 42 | Then I should not see "Test plugin tab" |
43 | 43 | ||
44 | Scenario: an admin should be able to deactivate a plugin | 44 | Scenario: an admin should be able to deactivate a plugin |
45 | Given plugin TestPlugin is enabled on environment | 45 | Given plugin TestPlugin is enabled on environment |
46 | And I am logged in as admin | 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 | Then I should see "Test plugin button" | 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 | Then I should see "Test plugin tab" | 50 | Then I should see "Test plugin tab" |
51 | And I go to the environment control panel | 51 | And I go to the environment control panel |
52 | And I follow "Plugins" | 52 | And I follow "Plugins" |
53 | And I uncheck "Test plugin" | 53 | And I uncheck "Test plugin" |
54 | And I press "Save changes" | 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 | Then I should not see "Test plugin button" | 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 | Then I should not see "Test plugin tab" | 58 | Then I should not see "Test plugin tab" |
features/private_profile.feature
@@ -14,7 +14,7 @@ Feature: private profiles | @@ -14,7 +14,7 @@ Feature: private profiles | ||
14 | 14 | ||
15 | Scenario: joining a private community | 15 | Scenario: joining a private community |
16 | Given I am logged in as "joao" | 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 | Then I should see "members only" | 18 | Then I should see "members only" |
19 | When I follow "Join" | 19 | When I follow "Join" |
20 | And "joao" is accepted on community "Safernet" | 20 | And "joao" is accepted on community "Safernet" |
features/profile_domain.feature
@@ -12,62 +12,68 @@ Feature: domain for profile | @@ -12,62 +12,68 @@ Feature: domain for profile | ||
12 | | sample-community | Sample Community | localhost | | 12 | | sample-community | Sample Community | localhost | |
13 | And the following blocks | 13 | And the following blocks |
14 | | owner | type | | 14 | | owner | type | |
15 | - | sample-community | ProfileImageBlock | | ||
16 | - | sample-community | ProfileInfoBlock | | 15 | + | joaosilva | ProfileInfoBlock | |
17 | And the environment domain is "127.0.0.1" | 16 | And the environment domain is "127.0.0.1" |
17 | + And "Joao Silva" is environment admin | ||
18 | And "Joao Silva" is admin of "Sample Community" | 18 | And "Joao Silva" is admin of "Sample Community" |
19 | 19 | ||
20 | @selenium | 20 | @selenium |
21 | Scenario: access profile control panel through profile blocks | 21 | Scenario: access profile control panel through profile blocks |
22 | Given I am logged in as "joaosilva" | 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 | @selenium | 29 | @selenium |
31 | Scenario: access user control panel | 30 | Scenario: access user control panel |
32 | Given I am logged in as "joaosilva" | 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 | And I follow "Login" | 35 | And I follow "Login" |
36 | And I fill in "joaosilva" for "Username" | 36 | And I fill in "joaosilva" for "Username" |
37 | And I fill in "123456" for "Password" | 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 | Then I should see "Joao Silva" within "span.control-panel-title" | 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 | @selenium | 46 | @selenium |
43 | Scenario: access user page | 47 | Scenario: access user page |
44 | Given I am logged in as "joaosilva" | 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 | Scenario: access community by domain | 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 | Scenario: Go to profile homepage after clicking on home button on not found page | 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 | When I go to /something-that-does-not-exist | 65 | When I go to /something-that-does-not-exist |
58 | And I follow "Go to the home page" | 66 | And I follow "Go to the home page" |
59 | Then the page title should be "Sample Community - Colivre.net" | 67 | Then the page title should be "Sample Community - Colivre.net" |
60 | 68 | ||
61 | - @selenium | ||
62 | Scenario: Go to environment homepage after clicking on home button on not found page | 69 | Scenario: Go to environment homepage after clicking on home button on not found page |
63 | Given I am on the homepage | 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 | And I follow "Go to the home page" | 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 | @selenium | 76 | @selenium |
70 | Scenario: Compose link to administration with environment domain | 77 | Scenario: Compose link to administration with environment domain |
71 | Given I am logged in as "joaosilva" | 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,7 +14,7 @@ Feature: search inside a profile | ||
14 | | joaosilva | whales and dolphins | this is an article about whales and dolphins | | 14 | | joaosilva | whales and dolphins | this is an article about whales and dolphins | |
15 | 15 | ||
16 | Scenario: search on profile | 16 | Scenario: search on profile |
17 | - Given I go to Joao Silva's profile | 17 | + Given I go to joaosilva's profile |
18 | And I fill in "q" with "bees" | 18 | And I fill in "q" with "bees" |
19 | And I press "Search" | 19 | And I press "Search" |
20 | Then I should see "bees and butterflies" within ".main-block" | 20 | Then I should see "bees and butterflies" within ".main-block" |
@@ -25,7 +25,7 @@ Feature: search inside a profile | @@ -25,7 +25,7 @@ Feature: search inside a profile | ||
25 | | owner | name | start_date | | 25 | | owner | name | start_date | |
26 | | joaosilva | Group meeting | 2009-10-01 | | 26 | | joaosilva | Group meeting | 2009-10-01 | |
27 | | joaosilva | John Doe's birthday | 2009-09-01 | | 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 | And I fill in "q" with "birthday" | 29 | And I fill in "q" with "birthday" |
30 | And I press "Search" | 30 | And I press "Search" |
31 | Then I should see "John Doe's birthday" within ".main-block" | 31 | Then I should see "John Doe's birthday" within ".main-block" |
@@ -35,7 +35,7 @@ Feature: search inside a profile | @@ -35,7 +35,7 @@ Feature: search inside a profile | ||
35 | Given the following blocks | 35 | Given the following blocks |
36 | | owner | type | | 36 | | owner | type | |
37 | | joaosilva | ProfileSearchBlock | | 37 | | joaosilva | ProfileSearchBlock | |
38 | - When I go to Joao Silva's profile | 38 | + When I go to joaosilva's profile |
39 | And I fill in "q" with "bees" within ".profile-search-block" | 39 | And I fill in "q" with "bees" within ".profile-search-block" |
40 | And I press "Search" | 40 | And I press "Search" |
41 | Then I should see "bees and butterflies" within ".main-block" | 41 | Then I should see "bees and butterflies" within ".main-block" |
@@ -45,14 +45,14 @@ Feature: search inside a profile | @@ -45,14 +45,14 @@ Feature: search inside a profile | ||
45 | | owner | name | body | published | | 45 | | owner | name | body | published | |
46 | | joaosilva | published article | this is a public article | true | | 46 | | joaosilva | published article | this is a public article | true | |
47 | | joaosilva | unpublished article | this is a private article | false | | 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 | And I fill in "q" with "article" | 49 | And I fill in "q" with "article" |
50 | And I press "Search" | 50 | And I press "Search" |
51 | Then I should see "public article" within ".main-block" | 51 | Then I should see "public article" within ".main-block" |
52 | And I should not see "private article" within ".main-block" | 52 | And I should not see "private article" within ".main-block" |
53 | 53 | ||
54 | Scenario: search on environment | 54 | Scenario: search on environment |
55 | - Given I go to Joao Silva's profile | 55 | + Given I go to joaosilva's profile |
56 | And I fill in "q" with "bees" | 56 | And I fill in "q" with "bees" |
57 | And I choose "General" | 57 | And I choose "General" |
58 | And I press "Search" | 58 | And I press "Search" |
features/publish_article.feature
@@ -20,48 +20,48 @@ Feature: publish article | @@ -20,48 +20,48 @@ Feature: publish article | ||
20 | Scenario: publishing an article that doesn't exists in the community | 20 | Scenario: publishing an article that doesn't exists in the community |
21 | Given I am logged in as "joaosilva" | 21 | Given I am logged in as "joaosilva" |
22 | And "Joao Silva" is a member of "Sample Community" | 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 | And I follow "Manage Content" | 24 | And I follow "Manage Content" |
25 | And I follow "Spread" | 25 | And I follow "Spread" |
26 | And I check "Sample Community" | 26 | And I check "Sample Community" |
27 | And I press "Spread this" | 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 | When I follow "Sample Article" | 29 | When I follow "Sample Article" |
30 | Then I should see "This is the first published article" | 30 | Then I should see "This is the first published article" |
31 | 31 | ||
32 | Scenario: publishing an article with a different name | 32 | Scenario: publishing an article with a different name |
33 | Given I am logged in as "joaosilva" | 33 | Given I am logged in as "joaosilva" |
34 | And "Joao Silva" is a member of "Sample Community" | 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 | And I follow "Manage Content" | 36 | And I follow "Manage Content" |
37 | And I follow "Spread" | 37 | And I follow "Spread" |
38 | And I check "Sample Community" | 38 | And I check "Sample Community" |
39 | And I fill in "Title" with "Another name" | 39 | And I fill in "Title" with "Another name" |
40 | And I press "Spread this" | 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 | Then I should see "Another name" | 42 | Then I should see "Another name" |
43 | And I should not see "Sample Article" | 43 | And I should not see "Sample Article" |
44 | 44 | ||
45 | - @selenium | 45 | + @selenium @ignore-hidden-elements |
46 | Scenario: getting an error message when publishing article with same name | 46 | Scenario: getting an error message when publishing article with same name |
47 | Given I am logged in as "joaosilva" | 47 | Given I am logged in as "joaosilva" |
48 | And "Joao Silva" is a member of "Sample Community" | 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 | And I follow "Spread" | 51 | And I follow "Spread" |
52 | And I check "Sample Community" | 52 | And I check "Sample Community" |
53 | And I press "Spread this" | 53 | And I press "Spread this" |
54 | And I am not logged in | 54 | And I am not logged in |
55 | And I am logged in as "mariasilva" | 55 | And I am logged in as "mariasilva" |
56 | And "Maria Silva" is a member of "Sample Community" | 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 | And I follow "Manage Content" | 58 | And I follow "Manage Content" |
59 | And I follow "New content" | 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 | And I fill in the following: | 61 | And I fill in the following: |
62 | | Title | Sample Article | | 62 | | Title | Sample Article | |
63 | | Text | this is Maria's first published article | | 63 | | Text | this is Maria's first published article | |
64 | - And I press "Save" and wait | 64 | + And I press "Save" |
65 | And I follow "Spread" | 65 | And I follow "Spread" |
66 | And I check "Sample Community" | 66 | And I check "Sample Community" |
67 | When I press "Spread this" | 67 | When I press "Spread this" |
@@ -77,13 +77,13 @@ Feature: publish article | @@ -77,13 +77,13 @@ Feature: publish article | ||
77 | And "Joao Silva" is a member of "Sample Community" | 77 | And "Joao Silva" is a member of "Sample Community" |
78 | And "Joao Silva" is a member of "Another Community1" | 78 | And "Joao Silva" is a member of "Another Community1" |
79 | And "Joao Silva" is a member of "Another Community2" | 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 | And I follow "Manage Content" | 81 | And I follow "Manage Content" |
82 | And I follow "Spread" | 82 | And I follow "Spread" |
83 | And I check "Sample Community" | 83 | And I check "Sample Community" |
84 | And I press "Spread this" | 84 | And I press "Spread this" |
85 | And I should not see "This article name is already in use in the following community(ies):" | 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 | And I follow "Manage Content" | 87 | And I follow "Manage Content" |
88 | And I follow "Spread" | 88 | And I follow "Spread" |
89 | And I check "Sample Community" | 89 | And I check "Sample Community" |
@@ -91,30 +91,30 @@ Feature: publish article | @@ -91,30 +91,30 @@ Feature: publish article | ||
91 | And I check "Another Community2" | 91 | And I check "Another Community2" |
92 | When I press "Spread this" | 92 | When I press "Spread this" |
93 | Then I should see "The title (article name) is already being used by another article, please use another title." | 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 | Then I should see "Sample Article" | 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 | Then I should see "Sample Article" | 97 | Then I should see "Sample Article" |
98 | 98 | ||
99 | Scenario: publishing articles with the same name in a moderated community | 99 | Scenario: publishing articles with the same name in a moderated community |
100 | Given I am logged in as "joaosilva" | 100 | Given I am logged in as "joaosilva" |
101 | And "Joao Silva" is a member of "Sample Community" | 101 | And "Joao Silva" is a member of "Sample Community" |
102 | And "Joao Silva" is admin of "Sample Community" | 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 | And I follow "Community Info and settings" | 104 | And I follow "Community Info and settings" |
105 | And I choose "profile_data_moderated_articles_true" | 105 | And I choose "profile_data_moderated_articles_true" |
106 | And I press "Save" | 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 | And I follow "Manage Content" | 108 | And I follow "Manage Content" |
109 | And I follow "Spread" | 109 | And I follow "Spread" |
110 | And I check "Sample Community" | 110 | And I check "Sample Community" |
111 | And I press "Spread this" | 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 | And I follow "Manage Content" | 113 | And I follow "Manage Content" |
114 | And I follow "Spread" | 114 | And I follow "Spread" |
115 | And I check "Sample Community" | 115 | And I check "Sample Community" |
116 | And I press "Spread this" | 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 | And I follow "Tasks" | 118 | And I follow "Tasks" |
119 | And I choose "Accept" | 119 | And I choose "Accept" |
120 | And I press "Apply!" | 120 | And I press "Apply!" |
@@ -126,17 +126,17 @@ Feature: publish article | @@ -126,17 +126,17 @@ Feature: publish article | ||
126 | Scenario: ask to publish an article that was deleted before approval | 126 | Scenario: ask to publish an article that was deleted before approval |
127 | Given I am logged in as "joaosilva" | 127 | Given I am logged in as "joaosilva" |
128 | And "Joao Silva" is admin of "Sample Community" | 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 | And I follow "Community Info and settings" | 130 | And I follow "Community Info and settings" |
131 | And I choose "profile_data_moderated_articles_true" | 131 | And I choose "profile_data_moderated_articles_true" |
132 | And I press "Save" | 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 | And I follow "Manage Content" | 134 | And I follow "Manage Content" |
135 | And I follow "Spread" | 135 | And I follow "Spread" |
136 | And I check "Sample Community" | 136 | And I check "Sample Community" |
137 | And I press "Spread this" | 137 | And I press "Spread this" |
138 | And "joaosilva" has no articles | 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 | When I follow "Tasks" | 140 | When I follow "Tasks" |
141 | Then I should see "The article was removed." | 141 | Then I should see "The article was removed." |
142 | And I press "Apply!" | 142 | And I press "Apply!" |
features/register_enterprise.feature
@@ -9,7 +9,7 @@ Feature: register enterprise | @@ -9,7 +9,7 @@ Feature: register enterprise | ||
9 | | joaosilva | Joao Silva | joaosilva@example.com | | 9 | | joaosilva | Joao Silva | joaosilva@example.com | |
10 | 10 | ||
11 | And I am logged in as "joaosilva" | 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 | And feature "enterprise_registration" is enabled on environment | 13 | And feature "enterprise_registration" is enabled on environment |
14 | 14 | ||
15 | Scenario: enterprise registration is disabled by admin | 15 | Scenario: enterprise registration is disabled by admin |
@@ -92,7 +92,7 @@ Feature: register enterprise | @@ -92,7 +92,7 @@ Feature: register enterprise | ||
92 | And I press "Next" | 92 | And I press "Next" |
93 | Then I should see "Enterprise registration completed" | 93 | Then I should see "Enterprise registration completed" |
94 | And I am logged in as admin | 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 | When I follow "Tasks" within ".control-panel" | 96 | When I follow "Tasks" within ".control-panel" |
97 | Then I should see "Joao Silva wants to create enterprise My Enterprise." | 97 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
98 | And the first mail is to admin_user@example.com | 98 | And the first mail is to admin_user@example.com |
@@ -100,10 +100,11 @@ Feature: register enterprise | @@ -100,10 +100,11 @@ Feature: register enterprise | ||
100 | And I press "Apply!" | 100 | And I press "Apply!" |
101 | Then the last mail is to joaosilva@example.com | 101 | Then the last mail is to joaosilva@example.com |
102 | And I am logged in as "joaosilva" | 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 | When I follow "Manage my groups" | 104 | When I follow "Manage my groups" |
105 | Then I should see "My Enterprise" | 105 | Then I should see "My Enterprise" |
106 | 106 | ||
107 | + @selenium | ||
107 | Scenario: a user register an enterprise successfully through the admin | 108 | Scenario: a user register an enterprise successfully through the admin |
108 | validator method and the admin rejects | 109 | validator method and the admin rejects |
109 | Given organization_approval_method is "admin" on environment | 110 | Given organization_approval_method is "admin" on environment |
@@ -119,7 +120,7 @@ Feature: register enterprise | @@ -119,7 +120,7 @@ Feature: register enterprise | ||
119 | And I press "Next" | 120 | And I press "Next" |
120 | Then I should see "Enterprise registration completed" | 121 | Then I should see "Enterprise registration completed" |
121 | And I am logged in as admin | 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 | When I follow "Tasks" within ".control-panel" | 124 | When I follow "Tasks" within ".control-panel" |
124 | Then I should see "Joao Silva wants to create enterprise My Enterprise." | 125 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
125 | And the first mail is to admin_user@example.com | 126 | And the first mail is to admin_user@example.com |
@@ -128,7 +129,7 @@ Feature: register enterprise | @@ -128,7 +129,7 @@ Feature: register enterprise | ||
128 | And I press "Apply!" | 129 | And I press "Apply!" |
129 | Then the last mail is to joaosilva@example.com | 130 | Then the last mail is to joaosilva@example.com |
130 | And I am logged in as "joaosilva" | 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 | When I follow "Manage my groups" | 133 | When I follow "Manage my groups" |
133 | Then I should not see "My Enterprise" | 134 | Then I should not see "My Enterprise" |
134 | 135 | ||
@@ -156,15 +157,16 @@ Feature: register enterprise | @@ -156,15 +157,16 @@ Feature: register enterprise | ||
156 | When I choose "Validator" | 157 | When I choose "Validator" |
157 | And I press "Confirm" | 158 | And I press "Confirm" |
158 | Then I should see "Enterprise registration completed" | 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 | When I follow "Tasks" | 161 | When I follow "Tasks" |
161 | Then I should see "Joao Silva wants to create enterprise My Enterprise." | 162 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
162 | And I choose "Accept" | 163 | And I choose "Accept" |
163 | And I press "Apply!" | 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 | When I follow "Manage my groups" | 166 | When I follow "Manage my groups" |
166 | Then I should see "My Enterprise" | 167 | Then I should see "My Enterprise" |
167 | 168 | ||
169 | + @selenium | ||
168 | Scenario: a user register an enterprise successfully through the region | 170 | Scenario: a user register an enterprise successfully through the region |
169 | validator method and the validator rejects | 171 | validator method and the validator rejects |
170 | Given organization_approval_method is "region" on environment | 172 | Given organization_approval_method is "region" on environment |
@@ -189,13 +191,13 @@ Feature: register enterprise | @@ -189,13 +191,13 @@ Feature: register enterprise | ||
189 | When I choose "Validator" | 191 | When I choose "Validator" |
190 | And I press "Confirm" | 192 | And I press "Confirm" |
191 | Then I should see "Enterprise registration completed" | 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 | When I follow "Tasks" | 195 | When I follow "Tasks" |
194 | Then I should see "Joao Silva wants to create enterprise My Enterprise." | 196 | Then I should see "Joao Silva wants to create enterprise My Enterprise." |
195 | And I choose "Reject" | 197 | And I choose "Reject" |
196 | And I fill in "Rejection explanation" with "This enterprise has some irregularities." | 198 | And I fill in "Rejection explanation" with "This enterprise has some irregularities." |
197 | And I press "Apply" | 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 | When I follow "Manage my groups" | 201 | When I follow "Manage my groups" |
200 | Then I should not see "My Enterprise" | 202 | Then I should not see "My Enterprise" |
201 | 203 |
features/search.feature
@@ -9,7 +9,7 @@ Feature: search | @@ -9,7 +9,7 @@ Feature: search | ||
9 | 9 | ||
10 | Scenario: show empty results in all enabled assets | 10 | Scenario: show empty results in all enabled assets |
11 | Given I go to the search page | 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 | And I press "Search" | 13 | And I press "Search" |
14 | Then I should see "People" within ".search-results-people" | 14 | Then I should see "People" within ".search-results-people" |
15 | And I should see "None" within ".search-results-people" | 15 | And I should see "None" within ".search-results-people" |
@@ -30,7 +30,7 @@ Feature: search | @@ -30,7 +30,7 @@ Feature: search | ||
30 | | joaosilva | Joao Silva | | 30 | | joaosilva | Joao Silva | |
31 | | josearaujo | Jose Araujo | | 31 | | josearaujo | Jose Araujo | |
32 | When I go to the search page | 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 | And I press "Search" | 34 | And I press "Search" |
35 | Then I should see "Joao Silva" within ".common-profile-list-block" | 35 | Then I should see "Joao Silva" within ".common-profile-list-block" |
36 | And I should not see "Jose Araujo" | 36 | And I should not see "Jose Araujo" |
@@ -51,7 +51,7 @@ Feature: search | @@ -51,7 +51,7 @@ Feature: search | ||
51 | | joaosilva | article #8 | | 51 | | joaosilva | article #8 | |
52 | | joaosilva | article #9 | | 52 | | joaosilva | article #9 | |
53 | When I go to the search page | 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 | And I press "Search" | 55 | And I press "Search" |
56 | Then I should see "article #8" within ".search-results-articles" | 56 | Then I should see "article #8" within ".search-results-articles" |
57 | And I should not see "article #9" within ".search-results-articles" | 57 | And I should not see "article #9" within ".search-results-articles" |
@@ -65,7 +65,7 @@ Feature: search | @@ -65,7 +65,7 @@ Feature: search | ||
65 | | boring-community | Boring community | semterrinha | | 65 | | boring-community | Boring community | semterrinha | |
66 | | fancy-community | Fancy community | agrotox | | 66 | | fancy-community | Fancy community | agrotox | |
67 | And I go to the search page | 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 | And I press "Search" | 69 | And I press "Search" |
70 | Then I should see "Fancy community" within ".common-profile-list-block" | 70 | Then I should see "Fancy community" within ".common-profile-list-block" |
71 | And I should not see "Boring community" | 71 | And I should not see "Boring community" |
@@ -76,7 +76,7 @@ Feature: search | @@ -76,7 +76,7 @@ Feature: search | ||
76 | | shop1 | Shoes shop | | 76 | | shop1 | Shoes shop | |
77 | | shop2 | Fruits shop | | 77 | | shop2 | Fruits shop | |
78 | And I go to the search page | 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 | And I press "Search" | 80 | And I press "Search" |
81 | Then I should see "Shoes shop" within ".common-profile-list-block" | 81 | Then I should see "Shoes shop" within ".common-profile-list-block" |
82 | And I should not see "Fruits shop" | 82 | And I should not see "Fruits shop" |
@@ -90,7 +90,7 @@ Feature: search | @@ -90,7 +90,7 @@ Feature: search | ||
90 | | joaosilva | bees and butterflies | this is an article about bees and butterflies | | 90 | | joaosilva | bees and butterflies | this is an article about bees and butterflies | |
91 | | joaosilva | whales and dolphins | this is an article about whales and dolphins | | 91 | | joaosilva | whales and dolphins | this is an article about whales and dolphins | |
92 | When I go to the search page | 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 | And I press "Search" | 94 | And I press "Search" |
95 | Then I should see "whales and dolphins" within "div.search-results-articles" | 95 | Then I should see "whales and dolphins" within "div.search-results-articles" |
96 | And I should not see "bees and butterflies" | 96 | And I should not see "bees and butterflies" |
@@ -107,7 +107,7 @@ Feature: search | @@ -107,7 +107,7 @@ Feature: search | ||
107 | | colivre-ent | development | social networks consultancy | | 107 | | colivre-ent | development | social networks consultancy | |
108 | | colivre-ent | development | wikis consultancy | | 108 | | colivre-ent | development | wikis consultancy | |
109 | When I go to the search page | 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 | And I press "Search" | 111 | And I press "Search" |
112 | Then I should see "wikis consultancy" within "div.search-results-products" | 112 | Then I should see "wikis consultancy" within "div.search-results-products" |
113 | And I should not see "social networks consultancy" | 113 | And I should not see "social networks consultancy" |
@@ -121,7 +121,7 @@ Feature: search | @@ -121,7 +121,7 @@ Feature: search | ||
121 | | nice-people | Group meeting | 2009-10-01 | | 121 | | nice-people | Group meeting | 2009-10-01 | |
122 | | nice-people | John Doe's birthday | 2009-09-01 | | 122 | | nice-people | John Doe's birthday | 2009-09-01 | |
123 | When I go to the search page | 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 | And I press "Search" | 125 | And I press "Search" |
126 | Then I should see "John Doe's birthday" within "div.search-results-events" | 126 | Then I should see "John Doe's birthday" within "div.search-results-events" |
127 | And I should not see "Group meeting" | 127 | And I should not see "Group meeting" |
@@ -140,7 +140,7 @@ Feature: search | @@ -140,7 +140,7 @@ Feature: search | ||
140 | | owner | name | category | | 140 | | owner | name | category | |
141 | | colivre_dev | Noosfero platform | Development | | 141 | | colivre_dev | Noosfero platform | Development | |
142 | When I go to the search page | 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 | And I press "Search" | 144 | And I press "Search" |
145 | Then I should see "Colivre - Noosfero dev." within "div.search-results-enterprises" | 145 | Then I should see "Colivre - Noosfero dev." within "div.search-results-enterprises" |
146 | And I should see "Noosfero users" within "div.search-results-communities" | 146 | And I should see "Noosfero users" within "div.search-results-communities" |
features/search_communities.feature
@@ -28,7 +28,7 @@ Feature: search communities | @@ -28,7 +28,7 @@ Feature: search communities | ||
28 | 28 | ||
29 | Scenario: simple search for community | 29 | Scenario: simple search for community |
30 | When I go to the search communities page | 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 | And I press "Search" | 32 | And I press "Search" |
33 | Then I should see "Noosfero Community" within "#search-results" | 33 | Then I should see "Noosfero Community" within "#search-results" |
34 | And I should see "Noosfero Community" within ".only-one-result-box" | 34 | And I should see "Noosfero Community" within ".only-one-result-box" |
@@ -42,7 +42,7 @@ Feature: search communities | @@ -42,7 +42,7 @@ Feature: search communities | ||
42 | | identifier | name | category | | 42 | | identifier | name | category | |
43 | | noos-comm | Noosfero Community | software-livre | | 43 | | noos-comm | Noosfero Community | software-livre | |
44 | When I go to the search communities page | 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 | And I press "Search" | 46 | And I press "Search" |
47 | Then I should see "Noosfero" within "#search-results" | 47 | Then I should see "Noosfero" within "#search-results" |
48 | 48 | ||
@@ -57,7 +57,7 @@ Feature: search communities | @@ -57,7 +57,7 @@ Feature: search communities | ||
57 | | identifier | name | category | | 57 | | identifier | name | category | |
58 | | linux | Linux Community | software-livre | | 58 | | linux | Linux Community | software-livre | |
59 | When I go to the search communities page | 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 | And I press "Search" | 61 | And I press "Search" |
62 | Then I should see "Temáticas" within "#facets-menu" | 62 | Then I should see "Temáticas" within "#facets-menu" |
63 | 63 | ||
@@ -66,7 +66,7 @@ Feature: search communities | @@ -66,7 +66,7 @@ Feature: search communities | ||
66 | | identifier | name | | 66 | | identifier | name | |
67 | | luwac | Linux Users Without a Clue | | 67 | | luwac | Linux Users Without a Clue | |
68 | When I go to the search communities page | 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 | And I press "Search" | 70 | And I press "Search" |
71 | Then I should see "Linux Users Without a Clue" within "#search-results" | 71 | Then I should see "Linux Users Without a Clue" within "#search-results" |
72 | 72 | ||
@@ -83,7 +83,7 @@ Feature: search communities | @@ -83,7 +83,7 @@ Feature: search communities | ||
83 | | noos-dev | Noosfero Developers | software-livre | | 83 | | noos-dev | Noosfero Developers | software-livre | |
84 | | facebook | Facebook Developers | big-brother | | 84 | | facebook | Facebook Developers | big-brother | |
85 | When I go to the search communities page | 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 | And I press "Search" | 87 | And I press "Search" |
88 | And I follow "Software Livre" within "#facets-menu" | 88 | And I follow "Software Livre" within "#facets-menu" |
89 | Then I should see "Noosfero Developers" within "#search-results" | 89 | Then I should see "Noosfero Developers" within "#search-results" |
@@ -106,10 +106,10 @@ Feature: search communities | @@ -106,10 +106,10 @@ Feature: search communities | ||
106 | | rails-dev | Rails Developers | other-category | | 106 | | rails-dev | Rails Developers | other-category | |
107 | | rails-usr | Rails Users | software-livre | | 107 | | rails-usr | Rails Users | software-livre | |
108 | When I go to the search communities page | 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 | And I press "Search" | 110 | And I press "Search" |
111 | And I follow "Software Livre" within "#facets-menu" | 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 | And I press "Search" | 113 | And I press "Search" |
114 | Then I should see "Rails Users" within "#search-results" | 114 | Then I should see "Rails Users" within "#search-results" |
115 | And I should not see "Rails Developers" | 115 | And I should not see "Rails Developers" |
features/search_contents.feature
@@ -26,7 +26,7 @@ Feature: search contents | @@ -26,7 +26,7 @@ Feature: search contents | ||
26 | Then I should see "whales and dolphins" within ".search-text-article-item" | 26 | Then I should see "whales and dolphins" within ".search-text-article-item" |
27 | And I should see "whales and dolphins" within ".only-one-result-box" | 27 | And I should see "whales and dolphins" within ".only-one-result-box" |
28 | And I should not see "bees and butterflies" | 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 | When I follow "whales and dolphins" | 30 | When I follow "whales and dolphins" |
31 | Then I should be on article "whales and dolphins" | 31 | Then I should be on article "whales and dolphins" |
32 | 32 | ||
@@ -155,19 +155,19 @@ Feature: search contents | @@ -155,19 +155,19 @@ Feature: search contents | ||
155 | 155 | ||
156 | Scenario: link to author on search results | 156 | Scenario: link to author on search results |
157 | When I go to the search articles page | 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 | And I press "Search" | 159 | And I press "Search" |
160 | Then I should see "Author" within ".search-article-author" | 160 | Then I should see "Author" within ".search-article-author" |
161 | Then I should see "Joao Silva" within ".search-article-author-name" | 161 | Then I should see "Joao Silva" within ".search-article-author-name" |
162 | When I follow "Joao Silva" | 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 | Scenario: show clean description excerpt on search results | 165 | Scenario: show clean description excerpt on search results |
166 | Given the following articles | 166 | Given the following articles |
167 | | owner | name | body | | 167 | | owner | name | body | |
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. | | 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 | When I go to the search articles page | 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 | And I press "Search" | 171 | And I press "Search" |
172 | Then I should see "Description" within ".search-article-description" | 172 | Then I should see "Description" within ".search-article-description" |
173 | And I should see "The island Herreninsel, with" within ".search-article-description" | 173 | And I should see "The island Herreninsel, with" within ".search-article-description" |
@@ -178,7 +178,7 @@ Feature: search contents | @@ -178,7 +178,7 @@ Feature: search contents | ||
178 | | owner | name | body | | 178 | | owner | name | body | |
179 | | joaosilva | Herreninsel | | | 179 | | joaosilva | Herreninsel | | |
180 | When I go to the search articles page | 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 | And I press "Search" | 182 | And I press "Search" |
183 | Then I should see "None" within ".search-article-description" | 183 | Then I should see "None" within ".search-article-description" |
184 | 184 | ||
@@ -188,7 +188,7 @@ Feature: search contents | @@ -188,7 +188,7 @@ Feature: search contents | ||
188 | | bees and butterflies | Hymenoptera | | 188 | | bees and butterflies | Hymenoptera | |
189 | | bees and butterflies | Lepidoptera | | 189 | | bees and butterflies | Lepidoptera | |
190 | When I go to the search articles page | 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 | And I press "Search" | 192 | And I press "Search" |
193 | Then I should see "Tags" within ".search-article-tags" | 193 | Then I should see "Tags" within ".search-article-tags" |
194 | And I should see "Hymenoptera" within ".search-article-tags" | 194 | And I should see "Hymenoptera" within ".search-article-tags" |
@@ -198,7 +198,7 @@ Feature: search contents | @@ -198,7 +198,7 @@ Feature: search contents | ||
198 | 198 | ||
199 | Scenario: show empty tags in search results | 199 | Scenario: show empty tags in search results |
200 | When I go to the search articles page | 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 | And I press "Search" | 202 | And I press "Search" |
203 | Then I should see "None" within ".search-article-tags" | 203 | Then I should see "None" within ".search-article-tags" |
204 | 204 | ||
@@ -210,14 +210,14 @@ Feature: search contents | @@ -210,14 +210,14 @@ Feature: search contents | ||
210 | | owner | name | body | category | | 210 | | owner | name | body | category | |
211 | | joaosilva | Sergei Sorokin | Retired ice hockey player | soviet | | 211 | | joaosilva | Sergei Sorokin | Retired ice hockey player | soviet | |
212 | When I go to the search articles page | 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 | And I press "Search" | 214 | And I press "Search" |
215 | Then I should see "Categories" within ".search-article-categories" | 215 | Then I should see "Categories" within ".search-article-categories" |
216 | And I should see "Soviet" within ".search-article-category" | 216 | And I should see "Soviet" within ".search-article-category" |
217 | 217 | ||
218 | Scenario: show empty categories on search results | 218 | Scenario: show empty categories on search results |
219 | When I go to the search articles page | 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 | And I press "Search" | 221 | And I press "Search" |
222 | Then I should see "whales and dolphins" | 222 | Then I should see "whales and dolphins" |
223 | And I should see "None" within ".search-article-categories-container" | 223 | And I should see "None" within ".search-article-categories-container" |
@@ -243,7 +243,7 @@ Feature: search contents | @@ -243,7 +243,7 @@ Feature: search contents | ||
243 | | owner | name | body | category | | 243 | | owner | name | body | category | |
244 | | joaosilva | using noosfero | noosfero is a great CMS | software-livre | | 244 | | joaosilva | using noosfero | noosfero is a great CMS | software-livre | |
245 | When I go to the search articles page | 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 | And I press "Search" | 247 | And I press "Search" |
248 | Then I should see "using noosfero" within "#search-results" | 248 | Then I should see "using noosfero" within "#search-results" |
249 | And I should not see "bees and butterflies" | 249 | And I should not see "bees and butterflies" |
@@ -255,7 +255,7 @@ Feature: search contents | @@ -255,7 +255,7 @@ Feature: search contents | ||
255 | | joaosilva | JSilva blog | | 255 | | joaosilva | JSilva blog | |
256 | When I search contents for "JSilva" | 256 | When I search contents for "JSilva" |
257 | Then I should see "JSilva blog" within ".search-result-title" | 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 | Scenario: show and link last posts on blog search results | 260 | Scenario: show and link last posts on blog search results |
261 | Given the following blogs | 261 | Given the following blogs |
@@ -286,7 +286,7 @@ Feature: search contents | @@ -286,7 +286,7 @@ Feature: search contents | ||
286 | 286 | ||
287 | Scenario: see default facets when searching | 287 | Scenario: see default facets when searching |
288 | When I go to the search articles page | 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 | And I press "Search" | 290 | And I press "Search" |
291 | Then I should see "Type" within "#facets-menu" | 291 | Then I should see "Type" within "#facets-menu" |
292 | And I should see "Published date" within "#facets-menu" | 292 | And I should see "Published date" within "#facets-menu" |
@@ -295,7 +295,7 @@ Feature: search contents | @@ -295,7 +295,7 @@ Feature: search contents | ||
295 | 295 | ||
296 | Scenario: find enterprises without exact query | 296 | Scenario: find enterprises without exact query |
297 | When I go to the search articles page | 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 | And I press "Search" | 299 | And I press "Search" |
300 | Then I should see "bees and butterflies" within "#search-results" | 300 | Then I should see "bees and butterflies" within "#search-results" |
301 | 301 | ||
@@ -309,7 +309,7 @@ Feature: search contents | @@ -309,7 +309,7 @@ Feature: search contents | ||
309 | | joaosilva | noosfero and debian | this is an article about noosfero and debian | software-livre | | 309 | | joaosilva | noosfero and debian | this is an article about noosfero and debian | software-livre | |
310 | | joaosilva | facebook and 1984 | this is an article about facebook and 1984 | big-brother | | 310 | | joaosilva | facebook and 1984 | this is an article about facebook and 1984 | big-brother | |
311 | When I go to the search articles page | 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 | And I press "Search" | 313 | And I press "Search" |
314 | # Then show me the page | 314 | # Then show me the page |
315 | And I follow "Software Livre" within "#facets-menu" | 315 | And I follow "Software Livre" within "#facets-menu" |
@@ -329,10 +329,10 @@ Feature: search contents | @@ -329,10 +329,10 @@ Feature: search contents | ||
329 | | joaosilva | facebook and 1984 | this is an article about facebook and 1984 | big-brother | | 329 | | joaosilva | facebook and 1984 | this is an article about facebook and 1984 | big-brother | |
330 | | joaosilva | facebook defense | facebook is not so bad | software-livre | | 330 | | joaosilva | facebook defense | facebook is not so bad | software-livre | |
331 | When I go to the search articles page | 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 | And I press "Search" | 333 | And I press "Search" |
334 | And I follow "Software Livre" within "#facets-menu" | 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 | And I press "Search" | 336 | And I press "Search" |
337 | Then I should see "facebook defense" within "#search-results" | 337 | Then I should see "facebook defense" within "#search-results" |
338 | And I should not see "1984" | 338 | And I should not see "1984" |
features/search_enterprises.feature
@@ -14,6 +14,7 @@ Feature: search enterprises | @@ -14,6 +14,7 @@ Feature: search enterprises | ||
14 | | Temáticas | | 14 | | Temáticas | |
15 | 15 | ||
16 | Scenario: show recent enterprises on index | 16 | Scenario: show recent enterprises on index |
17 | + Given there are no pending jobs | ||
17 | When I go to the search enterprises page | 18 | When I go to the search enterprises page |
18 | Then I should see "Shoes shop" within "#search-results" | 19 | Then I should see "Shoes shop" within "#search-results" |
19 | And I should see Shoes shop's profile image | 20 | And I should see Shoes shop's profile image |
@@ -26,7 +27,7 @@ Feature: search enterprises | @@ -26,7 +27,7 @@ Feature: search enterprises | ||
26 | 27 | ||
27 | Scenario: simple search for enterprise | 28 | Scenario: simple search for enterprise |
28 | When I go to the search enterprises page | 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 | And I press "Search" | 31 | And I press "Search" |
31 | Then I should see "Shoes shop" within ".only-one-result-box" | 32 | Then I should see "Shoes shop" within ".only-one-result-box" |
32 | And I should see Shoes shop's profile image | 33 | And I should see Shoes shop's profile image |
@@ -36,7 +37,7 @@ Feature: search enterprises | @@ -36,7 +37,7 @@ Feature: search enterprises | ||
36 | Scenario: link to enterprise homepage on search results | 37 | Scenario: link to enterprise homepage on search results |
37 | Given I search enterprises for "shoes" | 38 | Given I search enterprises for "shoes" |
38 | When I follow "Shoes shop" | 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 | Scenario: show clean enterprise homepage on search results | 42 | Scenario: show clean enterprise homepage on search results |
42 | Given the following articles | 43 | Given the following articles |
@@ -56,13 +57,13 @@ Feature: search enterprises | @@ -56,13 +57,13 @@ Feature: search enterprises | ||
56 | 57 | ||
57 | Scenario: see default facets when searching | 58 | Scenario: see default facets when searching |
58 | When I go to the search enterprises page | 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 | And I press "Search" | 61 | And I press "Search" |
61 | Then I should see "City" within "#facets-menu" | 62 | Then I should see "City" within "#facets-menu" |
62 | 63 | ||
63 | Scenario: see category facets when searching | 64 | Scenario: see category facets when searching |
64 | When I go to the search enterprises page | 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 | And I press "Search" | 67 | And I press "Search" |
67 | Then I should see "Temáticas" within "#facets-menu" | 68 | Then I should see "Temáticas" within "#facets-menu" |
68 | 69 | ||
@@ -74,7 +75,7 @@ Feature: search enterprises | @@ -74,7 +75,7 @@ Feature: search enterprises | ||
74 | | identifier | name | region | | 75 | | identifier | name | region | |
75 | | art-pp | Artesanato PP | Pres. Prudente | | 76 | | art-pp | Artesanato PP | Pres. Prudente | |
76 | When I go to the search enterprises page | 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 | And I press "Search" | 79 | And I press "Search" |
79 | Then I should see "Pres. Prudente" within "#facet-menu-f_region" | 80 | Then I should see "Pres. Prudente" within "#facet-menu-f_region" |
80 | And I should see ", SP" within "#facet-menu-f_region" | 81 | And I should see ", SP" within "#facet-menu-f_region" |
@@ -89,7 +90,7 @@ Feature: search enterprises | @@ -89,7 +90,7 @@ Feature: search enterprises | ||
89 | | identifier | name | region | | 90 | | identifier | name | region | |
90 | | art-pp | Artesanato PP | Pres. Prudente | | 91 | | art-pp | Artesanato PP | Pres. Prudente | |
91 | When I go to the search enterprises page | 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 | And I press "Search" | 94 | And I press "Search" |
94 | Then I should see "Artesanato PP" within "#search-results" | 95 | Then I should see "Artesanato PP" within "#search-results" |
95 | 96 | ||
@@ -101,7 +102,7 @@ Feature: search enterprises | @@ -101,7 +102,7 @@ Feature: search enterprises | ||
101 | | identifier | name | category | | 102 | | identifier | name | category | |
102 | | noosfero | Noosfero | software-livre | | 103 | | noosfero | Noosfero | software-livre | |
103 | When I go to the search enterprises page | 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 | And I press "Search" | 106 | And I press "Search" |
106 | Then I should see "Noosfero" within "#search-results" | 107 | Then I should see "Noosfero" within "#search-results" |
107 | And I should see "Software Livre" within ".search-enterprise-category" | 108 | And I should see "Software Livre" within ".search-enterprise-category" |
@@ -123,7 +124,7 @@ Feature: search enterprises | @@ -123,7 +124,7 @@ Feature: search enterprises | ||
123 | | identifier | name | | 124 | | identifier | name | |
124 | | noosfero | Noosfero Developers Association | | 125 | | noosfero | Noosfero Developers Association | |
125 | When I go to the search enterprises page | 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 | And I press "Search" | 128 | And I press "Search" |
128 | Then I should see "Noosfero Developers Association" within "#search-results" | 129 | Then I should see "Noosfero Developers Association" within "#search-results" |
129 | 130 | ||
@@ -136,7 +137,7 @@ Feature: search enterprises | @@ -136,7 +137,7 @@ Feature: search enterprises | ||
136 | | noosfero | Noosfero Developers | software-livre | | 137 | | noosfero | Noosfero Developers | software-livre | |
137 | | facebook | Facebook Developers | | | 138 | | facebook | Facebook Developers | | |
138 | When I go to the search enterprises page | 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 | And I press "Search" | 141 | And I press "Search" |
141 | And I follow "Software Livre" within "#facets-menu" | 142 | And I follow "Software Livre" within "#facets-menu" |
142 | Then I should see "Noosfero Developers" within "#search-results" | 143 | Then I should see "Noosfero Developers" within "#search-results" |
@@ -155,10 +156,10 @@ Feature: search enterprises | @@ -155,10 +156,10 @@ Feature: search enterprises | ||
155 | | rails-dev | Rails Developers | | | 156 | | rails-dev | Rails Developers | | |
156 | | rails-usr | Rails Users | software-livre | | 157 | | rails-usr | Rails Users | software-livre | |
157 | When I go to the search enterprises page | 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 | And I press "Search" | 160 | And I press "Search" |
160 | And I follow "Software Livre" within "#facets-menu" | 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 | And I press "Search" | 163 | And I press "Search" |
163 | Then I should see "Rails Users" within "#search-results" | 164 | Then I should see "Rails Users" within "#search-results" |
164 | And I should not see "Rails Developers" | 165 | And I should not see "Rails Developers" |