Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Gmail.openAndLogin(GmailLogin, GmailPassword);
- /*
- Не надо объединять эти 2 действия
- не факт - что всегда только вместе они выполняются
- */
- ***************************************
- Menu.createEmail();
- EmailForm.composeEmail(MailTo, MailSubject, MessageBody);
- /*
- А тут ты, кстати, разбил на 2 метода)
- ну да, в данном случае - ты прав)
- после открытия формы отправки письма - могут быть разные варианты)
- соглашусь с тобой тут
- а с именами - не соглашусь)
- compose = создать
- Menu.compose();
- NewMail.send(MailTo, MailSubject, MessageBody);
- composeEmail - не точно, т к мы уже отправляем емайл
- EmailForm - тоже не совсем точно, т к эта форма только для нового емайла
- (уже существующие мейлы в такой форме не открываются)
- именно тут - уточнять - что это форма - смысла нет
- для других пейджей мы так не делали, и тут нету смысла
- email vs mail - тоже - определись с термином и его юзай
- для одного понятия юзай один термин
- и код будет легче понимать - не будет неоднозначностей
- */
- ****************************************
- Menu.goToInbox();
- EmailsList.refresh();
- EmailsList.checkFirstEmail(MailSubject);
- /*
- ты уже в Inbox
- пока - не надо туда перходить
- рефреша - достаточно
- check vs assert
- https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#heading=h.tezjc2whgbl7
- подумай, какой метод будет универсальнее
- EmailsList.checkFirstEmail(MailSubject);
- или
- EmailsList.checkEmail(0,MailSubject);
- в этом решении - мы стремимся получить набор инструментов, который и нашу задачу решает
- и максимально универсален
- в тексте задания есть про это
- */
- ******************************************
- src/main/java/core
- public class BaseTest {
- @Before
- public void setUp() {
- Configuration.timeout = 15000;
- }
- }
- /*
- предков тест-класса - держат в ветке src \ test
- зачем тебе такой странный предок?
- */
- ********************************
- src/main/java/data
- public class TestDataConfig {
- public static String GmailLogin = ...
- public static String GmailPassword = ...
- public static String MailTo = ....
- public static String MailSubject = "Hello, my dear cat! " + System.currentTimeMillis();
- public static String MessageBody = "Hi, this is a test email from me to me.";
- }
- /*
- Тестовые данные держат в ветке src \ test
- Посмотри предыдущие ревью свои
- Я приводила пример хорошей структуры проекта
- Не надо держать и GmailLogin и MailTo
- В качестве логина - может выступать полностью указанный емайл (то, что у тебя в MailTo)
- Используй одно поле.
- Что касается MailSubject и MessageBody
- MailSubject - тестовые данные конкретного тестового метода
- (больше они нигде не пригодятся. Возможно, будут тест-методы, которым нужен будет уникальный subject
- но ведь его придется генерить заново - т е - задача получения уникального subject-a
- должна решаться внутри тест-метода)
- MessageBody - мы нигде не проверяем и не используем
- Можно было вообще не заполнять тело письма
- Даже если и заполнять - точно нет никакого смысла выносить это в переменную
- Да и набор данных в TestDataConfig - будет более однородным - если тут будут данные только о логинах-паролях
- Уже обсуждали с тобой это
- Надо различать ситуации - когда тестовые данные нужно сохранять в переменные, а когда не нужно
- пересмотри эти комментарии
- если не согласен или что-то не понятно - лучше давай в слеке обсудим
- Важный момент
- */
- *****************************************************
- public class EmailForm {
- public static SelenideElement MailBodyArea = $(".Ar.Au .Am");
- /*
- вспоминай правила написания имен переменных - lowerCamelCase
- https://google.github.io/styleguide/javaguide.html#s5.2.5-non-constant-field-names
- понятно, что с таким селектором - вроде как надо что-то пояснять
- можно - используя переменную
- все так)
- вопрос - стоит ли ее делать публичным полем класса?
- и для этого же поля можно подобрать селектон понагляднее
- http://joxi.ru/gmvqJvkHx4D9Zr
- $(".Am[aria-label='Message Body']").setValue(message).pressEnter();
- в общем - то - понятно, о чем речь
- селектор нужет только тут
- переменную можно не делать
- ее еще можно не делать - и потому, что это по условию задачи не требовалось
- (не требовалось заполнять тело письма)
- */
- ************************************
- public class EmailsList {
- /*
- вполне норм было бы имя пейджа - Mails
- */
- public static ElementsCollection Mails = $$("[role=main] .zA");
- /*
- lowerCamelCase
- */
- ********************************************
- public static void checkFirstEmail(String subject) {
- Mails.get(0).shouldHave(text(subject));
- }
- /*
- assertMail(int index, String mailText)
- check vs assert
- int index - так метод получишь универсальнее
- String mailText - так точнее - ты же не четко по subject сравниваешь
- а просто в заголовке письма проверяешь - содержится текст или нет
- */
- **********************************************************
- public static void checkMails(String subject) {
- Mails.shouldHave(texts(subject));
- }
- /*
- имя метода + имя параметра - см выше рекомендации
- реализация
- такая реализация даст проверить единственный вариант - когда в списке есть одно письмо
- да, нам хватит для этой задачи
- но - использование параметра
- String... mailTexts - и нашу задачу позволит решить и еше кучу других
- три точки - а какая разница)
- */
- ***********************************************************
- public static void searchEmail(String subject) {
- Selenide.$(By.name("q")).setValue("\""+subject+"\"").pressEnter();
- }
- /*
- и без кавычек вроде все ок ищет
- имени search - с учетом имени пейджа - достаточно
- если параметр называешь subject
- то надо и поиск реализовывать по subject
- в строке поиска писать subject:...
- или назови параметр text и не меняй реализацию )
- */
- ******************************************
- public static void refresh() {
- $(".asf").click();
- }
- /*
- При такой структуре пейджей - вроде как это больше к Menu относится?
- */
Advertisement
Add Comment
Please, Sign In to add comment