Skip to content

Commit 48bb036

Browse files
committed
[master] - implemented smart checked for languages on the page. Update README file
1 parent d8ce515 commit 48bb036

File tree

4 files changed

+88
-8
lines changed

4 files changed

+88
-8
lines changed

readme.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,10 @@ This is JAVA library for the running of mobile, web or API automated tests.
111111
* Mail checker (IMAP). Possible to connect to any IMAP mail box (Gmail for example) and get the list of mails with access to the mail details.
112112

113113
MailService mailService = new MailService();
114-
mailService.login(String IMAP_Server, int IMAP_Port, String email, String passwordToEmail);
114+
mailService
115+
.setFolder(MailService.MailFolder.INBOX) // (INBOX, SPAM, TRASH)
116+
.login(String IMAP_Server, int IMAP_Port, String email, String passwordToEmail);
117+
115118

116119
mailService.isLoggedIn()) - boolean
117120
mailService.getMessageCount() - integer

src/main/java/http/helpers/MailService.java

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,19 @@ public class MailService {
1010
private Folder folder;
1111

1212
private String protocol = "imaps";
13-
private String file = "INBOX";
13+
private MailFolder folderName = MailFolder.INBOX;
1414

1515
public boolean isLoggedIn() {
16-
return store.isConnected();
16+
return store != null && store.isConnected();
1717
}
1818

1919
/**
2020
* to login to the mail host server
2121
*/
2222
public void login(String host, int port, String username, String password)
2323
throws Exception {
24-
URLName url = new URLName(protocol, host, port, file, username, password);
24+
String fName = getFolderName(folderName);
25+
URLName url = new URLName(protocol, host, port, fName, username, password);
2526

2627
if (session == null) {
2728
Properties props = null;
@@ -66,4 +67,39 @@ public Message[] getMessages() throws MessagingException {
6667
public Message getLastMesage() throws MessagingException {
6768
return getMessages()[getMessageCount() - 1];
6869
}
70+
71+
public MailService setFolder(MailFolder folder){
72+
if (!isLoggedIn()) {
73+
this.folderName = folder;
74+
}
75+
76+
return this;
77+
}
78+
79+
public enum MailFolder{
80+
INBOX,
81+
SPAM,
82+
TRASH
83+
}
84+
85+
private String getFolderName(MailFolder folder){
86+
String folderName;
87+
88+
switch (folder){
89+
case INBOX:
90+
folderName = "INBOX";
91+
break;
92+
case SPAM:
93+
folderName = "[Gmail]/Spam";
94+
break;
95+
case TRASH:
96+
folderName = "[Gmail]/Trash";
97+
break;
98+
default:
99+
folderName = "INBOX";
100+
break;
101+
}
102+
103+
return folderName;
104+
}
69105
}

src/main/java/util/validator/LanguageChecker.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ public static Optional<LdLocale> getRecognisedLanguage(String text) throws IOExc
3636
public static boolean isCorrectLanguageOnThePage(WebDriver driver, String lang) throws IOException {
3737
boolean isCorrectLang = true;
3838
JavascriptExecutor jse = (JavascriptExecutor) driver;
39-
String bodyText = jse.executeScript("return document.body.innerText", "").toString();
39+
String bodyText = jse.executeScript("return document.body.innerHTML", "").toString();
40+
bodyText = bodyText.replaceAll("<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>", "");
41+
bodyText = bodyText.replaceAll("<noscript\\b[^<]*(?:(?!<\\/noscript>)<[^<]*)*<\\/noscript>", "");
42+
bodyText = bodyText.replaceAll("<[^>]*>", "");
43+
bodyText = bodyText.toLowerCase().replaceAll("[\\t|\\n|\\r|\\s]+", " ").replaceAll("[\\s]+", " ");
44+
4045
int textBlockLength = 300;
4146
int bodyTextLength = bodyText.length();
4247

@@ -48,9 +53,8 @@ public static boolean isCorrectLanguageOnThePage(WebDriver driver, String lang)
4853
String tempString;
4954
if (bodyTextLength >= (i + textBlockLength) ) {
5055
tempString = bodyText.substring(i, i + textBlockLength);
51-
5256
try {
53-
String detectedLanguage = getRecognisedLanguage(tempString.toLowerCase().replaceAll("[\\t|\\n|\\r|\\s]+", " ").replaceAll("[\\s]+", " ")).get().getLanguage();
57+
String detectedLanguage = getRecognisedLanguage(tempString).get().getLanguage();
5458

5559
if (!detectedLanguage.toLowerCase().equals(lang.toLowerCase())) {
5660
System.out.println("\n!!! - Piece of text without translation: \n" + tempString + "\nExpected language is \"" + lang + "\"\n");

src/test/java/MailServiceTest.java

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,49 @@
77

88
public class MailServiceTest {
99

10+
private static final String EMAIL = "testremax01@gmail.com";
11+
private static final String PASSWORD = "remax2016";
12+
private static final String IMAP_HOST = "imap.gmail.com";
13+
1014
private MailService mailService;
1115

1216
@Test
1317
public void testThatEmailListCanBeFetched() throws Exception {
1418
mailService = new MailService();
15-
mailService.login("imap.gmail.com", 993, "testremax01@gmail.com", "remax2016");
19+
mailService.login(IMAP_HOST, 993, EMAIL, PASSWORD);
20+
21+
Assert.assertTrue(mailService.isLoggedIn());
22+
Assert.assertTrue(mailService.getMessageCount() >= 0);
23+
}
24+
25+
@Test
26+
public void testThatEmailListCanBeFetchedFromInbox() throws Exception {
27+
mailService = new MailService();
28+
mailService
29+
.setFolder(MailService.MailFolder.INBOX)
30+
.login(IMAP_HOST, 993, EMAIL, PASSWORD);
31+
32+
Assert.assertTrue(mailService.isLoggedIn());
33+
Assert.assertTrue(mailService.getMessageCount() >= 0);
34+
}
35+
36+
@Test
37+
public void testThatEmailListCanBeFetchedFromSpam() throws Exception {
38+
mailService = new MailService();
39+
mailService
40+
.setFolder(MailService.MailFolder.SPAM)
41+
.login(IMAP_HOST, 993, EMAIL, PASSWORD);
42+
43+
Assert.assertTrue(mailService.isLoggedIn());
44+
Assert.assertTrue(mailService.getMessageCount() >= 0);
45+
}
46+
47+
@Test
48+
public void testThatEmailListCanBeFetchedFromTrash() throws Exception {
49+
mailService = new MailService();
50+
mailService
51+
.setFolder(MailService.MailFolder.TRASH)
52+
.login(IMAP_HOST, 993, EMAIL, PASSWORD);
1653

1754
Assert.assertTrue(mailService.isLoggedIn());
1855
Assert.assertTrue(mailService.getMessageCount() >= 0);

0 commit comments

Comments
 (0)