source: devel/testlink/automation/src/test/java/br/gov/serpro/cte/common/ExpressoMailTestCase.java @ 3592

Revision 3592, 10.5 KB checked in by luiz-fernando, 13 years ago (diff)

Ticket #1402 - Campos, mensagens e valores estao em properties

Line 
1package br.gov.serpro.cte.common;
2
3import org.apache.commons.lang.StringUtils;
4
5/**
6 * Contem metodos comuns a todos os casos de teste do ExpressoMail.
7 *
8 * @author L.F.Estivalet (Serpro)
9 *
10 *         Created on Nov 12, 2010 at 11:52:43 AM
11 *
12 */
13public class ExpressoMailTestCase extends BaseTestCase {
14
15        /**
16         * Entra no modulo ExpressoMail.
17         *
18         * @throws Exception
19         */
20        public void enterExpressoMail() throws Exception {
21                super.login();
22                selenium.open("/expressoMail1_2/index.php");
23                selenium.waitForPageToLoad("30000");
24                // Espera a caixa de entrada carregar.
25                this.waitForElement(getCampo("email.div.principal"));
26        }
27
28        /**
29         * Procura um email pelo seu assunto.
30         *
31         * @param subject
32         *            Assunto a ser procurado.
33         * @return "id" do email.
34         */
35        public String findEmailIdBySuject(String subject) {
36                return findEmailIdBySuject(subject, false);
37        }
38
39        /**
40         * Procura um email pelo seu assunto.
41         *
42         * @param subject
43         *            Assunto a ser procurado.
44         * @param select
45         *            Se email encontrado, deseja seleciona-lo?
46         * @return "id" do email.
47         */
48        public String findEmailIdBySuject(String subject, boolean select) {
49                String html = selenium.getHtmlSource();
50                String part1 = StringUtils.substringBefore(html, subject);
51                int start = StringUtils.lastIndexOf(part1, "id=\"") + 4;
52                int last = StringUtils.indexOf(part1, "\">", start);
53                String id = StringUtils.substring(part1, start, last);
54                if (select) {
55                        // Marca checkbox correspondente ao id da mensagem.
56                        selenium.click("check_box" + id.substring(1));
57                }
58
59                // Retorna somente o "id" do email.
60                // id = id.substring(id.lastIndexOf("_"));
61
62                return id;
63        }
64
65        private void writeBody(String text) {
66                selenium.getEval("selenium.browserbot.getCurrentWindow().document.getElementById('body_1').contentWindow.document.body.innerHTML='"
67                                + text + "';");
68        }
69
70        /**
71         * Cria um novo email informando destinatario, assunto e conteudo do email.
72         *
73         * @param to
74         *            Destinatário (campo Para:).
75         * @param subject
76         *            Assunto do email.
77         * @param text
78         *            Conteudo do email.
79         * @throws Exception
80         */
81        public void composeEmail(String to, String subject, String text)
82                        throws Exception {
83                this.composeEmail();
84                selenium.type(getCampo("email.para.1"), to);
85                selenium.type(getCampo("email.assunto.1"), subject);
86                this.writeBody(text);
87
88        }
89
90        /**
91         * Cria um novo email informando destinatario, assunto e conteudo do email.
92         *
93         * @param to
94         *            Destinatário (campo Para:).
95         * @param subject
96         *            Assunto do email.
97         * @throws Exception
98         */
99        public void composeEmail(String to, String subject) throws Exception {
100                this.composeEmail();
101                selenium.type(getCampo("email.para.1"), to);
102                selenium.type(getCampo("email.assunto.1"), subject);
103        }
104
105        /**
106         * Cria um novo email.
107         *
108         * @throws Exception
109         */
110        public void composeEmail() throws Exception {
111                this.enterExpressoMail();
112                selenium.click(getCampo("email.nova.mensagem"));
113                super.waitForElement(getCampo("email.para.1"));
114        }
115
116        /**
117         * @param to
118         *            Destinatário (campo Para:).
119         * @param subject
120         *            Assunto do email.
121         * @param text
122         *            Conteudo do email.
123         * @param remove
124         *            Se <code>true</code>, remove o logo apos o envio da Caixa de
125         *            Entrada, itens enviados e lixeira. Simula o envio de email ao
126         *            pressionar o botao Enviar.
127         */
128        public void sendEmail(String to, String subject, String text, boolean remove)
129                        throws Exception {
130                this.composeEmail(to, subject, text);
131                selenium.click(getCampo("email.enviar.email.1"));
132                this.assertMessage(getCampo("email.mensagem"),
133                                getMensagem("email.enviado"));
134                if (remove) {
135                        this.removeEmail(subject);
136                }
137        }
138
139        /**
140         * Pressiona opcao para enviar o email.
141         */
142        public void sendEmail() {
143                selenium.click(getCampo("email.enviar.email.1"));
144        }
145
146        /**
147         * Procura o email pelo assunto e abre para leitura.
148         *
149         * @param subject
150         *            Assunto do email.
151         * @return "id" do email.
152         * @throws Exception
153         */
154        public String readEmail(String subject) throws Exception {
155                this.enterExpressoMail();
156                String id = this.findEmailIdBySuject(subject);
157                selenium.click(id);
158                // Espera ate aba da mensagem abrir.
159                super.waitForElement(getCampo("email.aba.mensagem"));
160
161                // Retorna somente o "id" do email.
162                id = id.substring(id.lastIndexOf("_"));
163
164                return id;
165        }
166
167        /**
168         * Apaga o email previamente selecionado.
169         */
170        public void deleteEmail() throws Exception {
171                selenium.click(getCampo("email.apagar.email"));
172                this.assertMessage(getCampo("email.mensagem"),
173                                getMensagem("apagar.uma.mensagem"));
174        }
175
176        /**
177         * Apaga o email de acordo com o assunto.
178         *
179         * @param subject
180         *            Assunto a ser pesquisado. No caso da pesquisa encontrar varios
181         *            emails, apenas o primeiro sera selecionado e apagado.
182         * @throws Exception
183         */
184        public void deleteEmail(String subject) throws Exception {
185                this.findEmailIdBySuject(subject, true);
186                this.deleteEmail();
187        }
188
189        /**
190         * Apaga email de uma pasta de acordo com o assunto.
191         *
192         * @param folder
193         *            Pasta a ser pesquisada.
194         * @param subject
195         *            Assunto a ser pesquisado.
196         * @throws Exception
197         */
198        public void deleteEmail(String folder, String subject) throws Exception {
199                // Apaga email da pasta enviados.
200                this.openFolder(folder);
201                // Espera pelo primeiro checkbox da pasta aparecer.
202                super.waitForElement(getCampo("email.checkbox.email"));
203                this.deleteEmail(subject);
204                this.waitForElement(getCampo("email.msg.info"));
205                assertTrue(getMensagem("pasta.vazia").equals(
206                                selenium.getText(getCampo("email.msg.info"))));
207        }
208
209        /**
210         * Remove o email de acordo com o assunto da Caixa de Entrada, dos itens
211         * enviados e da lixeira.
212         *
213         * @param subject
214         *            Assunto a ser pesquisado. No caso da pesquisa encontrar varios
215         *            emails, apenas o primeiro sera selecionado e apagado.
216         * @throws Exception
217         */
218        public void removeEmail(String subject) throws Exception {
219                // Faz logout para dar tempo para o email chegar na Caixa de Entrada.
220                super.logout();
221
222                // Entra novamente no ExpressoMail e apaga o email da Caixa de Entrada.
223                this.enterExpressoMail();
224                this.deleteEmail(subject);
225
226                // Apaga email da pasta enviados.
227                this.deleteEmail(getCampo("email.pasta.enviados"), subject);
228
229                // Limpa a lixeira.
230                super.logout();
231                this.enterExpressoMail();
232                this.cleanupTrash();
233        }
234
235        /**
236         * Limpa a lixeira.
237         *
238         * @throws Exception
239         */
240        public void cleanupTrash() throws Exception {
241                this.openFolder(getCampo("email.pasta.lixeira"));
242                selenium.click(getCampo("email.limpar.lixeira"));
243                assertTrue(selenium.getConfirmation().matches(
244                                getMensagem("limpar.lixeira")));
245                super.waitForElement(getCampo("email.mensagem"));
246                assertEquals(getMensagem("lixeira.limpa"),
247                                selenium.getText(getCampo("email.mensagem")));
248                // Garantir que nao tem nenhum email na lixeira.
249                assertEquals("0", this.getTotalEmails());
250        }
251
252        /**
253         * @return Numero de emails na pasta selecionada.
254         */
255        public int getTotalEmails() {
256                return Integer
257                                .valueOf(selenium.getText(getCampo("email.total.emails")));
258        }
259
260        /**
261         * @return Ids de todos os emails da pasta selecionada.
262         */
263        public String[] getEmailIds() {
264                String[] ids = new String[this.getTotalEmails()];
265                for (int i = 1; i <= this.getTotalEmails(); i++) {
266                        String id = selenium.getAttribute(getCampo("email.id", i));
267                        ids[i - 1] = id.substring(id.lastIndexOf("_") + 1);
268                }
269                return ids;
270        }
271
272        /**
273         * @param emailId
274         *            Id do email.
275         * @return <code>true</code> se email importante, <code>false</code> caso
276         *         contrario.
277         */
278        public boolean isImportant(String emailId) {
279                return selenium.isElementPresent(getCampo("email.id.importante",
280                                emailId));
281        }
282
283        /**
284         * @param emailId
285         *            Id do email.
286         * @return <code>true</code> se email lido, <code>false</code> caso
287         *         contrario.
288         */
289        public boolean isRead(String emailId) {
290                return "Lida".equals(selenium.getAttribute(getCampo("email.id.lido",
291                                emailId)));
292        }
293
294        /**
295         * Abre uma pasta de email especifica.
296         *
297         * @param folder
298         *            Pasta de email a ser aberta.
299         * @throws Exception
300         */
301        public void openFolder(String folder) throws Exception {
302                selenium.click(folder);
303                this.waitForElement(getCampo("email.div.principal"));
304        }
305
306        /**
307         * Responder email.
308         *
309         * @param id
310         *            Id do email a ser respondido.
311         * @throws Exception
312         */
313        public void replyEmail(String id) throws Exception {
314                // Clicar na opcao para responder.
315                selenium.click(getCampo("email.responder.email"));
316                this.reply(id);
317        }
318
319        /**
320         * Responder email a todos destinatarios.
321         *
322         * @param id
323         *            Id do email a ser respondido.
324         * @throws Exception
325         */
326        public void replyAllEmail(String id) throws Exception {
327                // Clicar na opcao para responder.
328                selenium.click(getCampo("email.responder.todos", id));
329                selenium.click(getCampo("email.id.responder.todos", id));
330
331                this.reply(id);
332        }
333
334        /**
335         * Responder email a todos destinatarios sem historico.
336         *
337         * @param id
338         *            Id do email a ser respondido.
339         * @throws Exception
340         */
341        public void replyAllEmailWithoutHistory(String id) throws Exception {
342                // Clicar na opcao para responder.
343                selenium.click(getCampo("email.responder.todos.sem.historico", id));
344                selenium.click(getCampo("email.id.responder.todos.sem.historico", id));
345
346                this.reply(id);
347        }
348
349        /**
350         * Responder email sem historico.
351         *
352         * @param id
353         *            Id do email a ser respondido.
354         * @throws Exception
355         */
356        public void replyEmailWithoutHistory(String id) throws Exception {
357                // Clicar na opcao para responder.
358                selenium.click(getCampo("email.responder.sem.historico", id));
359                selenium.click(getCampo("email.id.responder.sem.historico", id));
360                this.reply(id);
361        }
362
363        /**
364         * Responder email, serve apenas para clicar na opcao "Enviar".
365         *
366         * @param id
367         *            Id do email a ser respondido.
368         * @throws Exception
369         */
370        private void reply(String id) throws Exception {
371                // Espera carregar aba para responder email.
372                super.waitForElement(getCampo("email.id.para", id));
373                selenium.click(getCampo("email.id.enviar", id));
374        }
375
376        /**
377         * Encaminha uma mensagem.
378         *
379         * @param id
380         *            Id da mensagem a ser encaminhada
381         * @param to
382         *            Destinatario
383         * @throws Exception
384         */
385        public void forwardEmail(String id, String to) throws Exception {
386                // Clicar na opcao para encaminhar.
387                selenium.click(getCampo("email.encaminhar.email"));
388
389                // Espera carregar aba para encaminhar email.
390                super.waitForElement(getCampo("email.id.para", id));
391                selenium.type(getCampo("email.id.para", id), to);
392
393                selenium.click(getCampo("email.id.enviar", id));
394        }
395}
Note: See TracBrowser for help on using the repository browser.