julia_v_iluhina

Untitled

Aug 31st, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.73 KB | None | 0 0
  1. Gmail.openAndLogin(GmailLogin, GmailPassword);
  2.  
  3. /*
  4.     Не надо объединять эти 2 действия
  5.  
  6.     не факт - что всегда только вместе они выполняются
  7. */
  8. ***************************************
  9.  
  10.    Menu.createEmail();
  11.    EmailForm.composeEmail(MailTo, MailSubject, MessageBody);
  12. /*
  13.     А тут ты, кстати, разбил на 2 метода)
  14.  
  15.     ну да, в данном случае - ты прав)
  16.     после открытия формы отправки письма - могут быть разные варианты)
  17.  
  18.     соглашусь с тобой тут
  19.  
  20.     а с именами - не соглашусь)
  21.     compose = создать
  22.     Menu.compose();
  23.     NewMail.send(MailTo, MailSubject, MessageBody);
  24.  
  25.     composeEmail - не точно, т к мы уже отправляем емайл
  26.     EmailForm - тоже не совсем точно, т к эта форма только для нового емайла
  27.     (уже существующие мейлы в такой форме не открываются)
  28.     именно тут  - уточнять - что это форма - смысла нет
  29.     для других пейджей мы так не делали, и тут нету смысла
  30.     email vs mail - тоже - определись с термином и его юзай
  31.     для одного понятия юзай один термин
  32.     и код будет легче понимать - не будет неоднозначностей
  33. */
  34. ****************************************
  35.      Menu.goToInbox();
  36.      EmailsList.refresh();
  37.      EmailsList.checkFirstEmail(MailSubject);
  38. /*
  39.     ты уже в Inbox
  40.     пока - не надо туда перходить
  41.  
  42.     рефреша - достаточно
  43.  
  44.     check vs assert
  45.     https://docs.google.com/document/d/13dNyFGbI7mV22UUhH8E0LJ7SzabAmX7Bw7VCHScYfiU/edit#heading=h.tezjc2whgbl7
  46.  
  47.     подумай, какой метод будет универсальнее
  48.     EmailsList.checkFirstEmail(MailSubject);
  49.     или
  50.     EmailsList.checkEmail(0,MailSubject);
  51.  
  52.     в этом решении - мы стремимся получить набор инструментов, который и нашу задачу решает
  53.     и максимально универсален
  54.     в тексте задания есть про это
  55. */
  56. ******************************************
  57. src/main/java/core
  58.  
  59. public class BaseTest {
  60.  
  61.     @Before
  62.     public void setUp() {
  63.         Configuration.timeout = 15000;
  64.     }
  65.  
  66. }
  67.  
  68. /*
  69.     предков тест-класса - держат в ветке src \ test
  70.  
  71.     зачем тебе такой странный предок?
  72.  
  73. */
  74. ********************************
  75. src/main/java/data
  76.  
  77. public class TestDataConfig {
  78.  
  79.     public static String GmailLogin = ...
  80.     public static String GmailPassword = ...
  81.     public static String MailTo = ....
  82.     public static String MailSubject = "Hello, my dear cat! " + System.currentTimeMillis();
  83.     public static String MessageBody = "Hi, this is a test email from me to me.";
  84.  
  85. }
  86. /*
  87.     Тестовые данные держат в ветке src \ test
  88.     Посмотри предыдущие ревью свои
  89.     Я приводила пример хорошей структуры проекта
  90.  
  91.     Не надо держать и GmailLogin и MailTo
  92.     В качестве логина - может выступать полностью указанный емайл (то, что у тебя в MailTo)
  93.     Используй одно поле.
  94.  
  95.     Что касается MailSubject и MessageBody
  96.     MailSubject - тестовые данные конкретного тестового метода
  97.     (больше они нигде не пригодятся. Возможно, будут тест-методы, которым нужен будет уникальный subject
  98.     но ведь его придется генерить заново - т е - задача получения уникального subject-a
  99.     должна решаться внутри тест-метода)
  100.  
  101.     MessageBody - мы нигде не проверяем и не используем
  102.     Можно было вообще не заполнять тело письма
  103.     Даже если и заполнять - точно нет никакого смысла выносить это в переменную
  104.  
  105.     Да и набор данных в TestDataConfig - будет более однородным - если тут будут данные только о логинах-паролях
  106.  
  107.     Уже обсуждали с тобой это
  108.     Надо различать ситуации - когда тестовые данные нужно сохранять в переменные, а когда не нужно
  109.     пересмотри эти комментарии
  110.     если не согласен или что-то не понятно - лучше давай в слеке обсудим
  111.     Важный момент
  112. */
  113.  
  114. *****************************************************
  115.  
  116. public class EmailForm {
  117.  
  118.     public static SelenideElement MailBodyArea = $(".Ar.Au .Am");
  119.  
  120. /*
  121.     вспоминай правила написания имен переменных - lowerCamelCase
  122.     https://google.github.io/styleguide/javaguide.html#s5.2.5-non-constant-field-names
  123.  
  124.     понятно, что с таким селектором - вроде как надо что-то пояснять
  125.     можно - используя переменную
  126.     все так)
  127.     вопрос - стоит ли ее делать публичным полем класса?
  128.  
  129.     и для этого же поля можно подобрать селектон понагляднее
  130.     http://joxi.ru/gmvqJvkHx4D9Zr
  131.     $(".Am[aria-label='Message Body']").setValue(message).pressEnter();
  132.     в общем - то - понятно, о чем речь
  133.     селектор нужет только тут
  134.     переменную можно не делать
  135.  
  136.     ее еще можно не делать - и потому, что это по условию задачи не требовалось
  137.     (не требовалось заполнять тело письма)
  138. */
  139. ************************************
  140. public class EmailsList {
  141. /*
  142.     вполне норм было бы имя пейджа - Mails
  143. */
  144.  
  145.     public static ElementsCollection Mails = $$("[role=main] .zA");
  146. /*
  147.     lowerCamelCase
  148. */
  149. ********************************************
  150.     public static void checkFirstEmail(String subject) {
  151.         Mails.get(0).shouldHave(text(subject));
  152.     }
  153. /*
  154.     assertMail(int index, String mailText)
  155.  
  156.     check vs assert
  157.  
  158.     int index - так метод получишь универсальнее
  159.  
  160.     String mailText - так точнее - ты же не четко по subject сравниваешь
  161.     а просто в заголовке письма проверяешь - содержится текст или нет
  162. */
  163. **********************************************************
  164.     public static void checkMails(String subject) {
  165.         Mails.shouldHave(texts(subject));
  166.     }
  167. /*
  168.     имя метода + имя параметра - см выше рекомендации
  169.  
  170.     реализация
  171.     такая реализация даст проверить единственный вариант - когда в списке есть одно письмо
  172.     да, нам хватит для этой задачи
  173.  
  174.     но - использование параметра
  175.      String... mailTexts - и нашу задачу позволит решить и еше кучу других
  176.      три точки - а какая разница)
  177.  
  178. */
  179. ***********************************************************
  180.     public static void searchEmail(String subject) {
  181.         Selenide.$(By.name("q")).setValue("\""+subject+"\"").pressEnter();
  182.     }
  183. /*
  184.     и без кавычек вроде все ок ищет
  185.  
  186.     имени search - с учетом имени пейджа - достаточно
  187.  
  188.     если параметр называешь subject
  189.     то надо и поиск реализовывать по subject
  190.     в строке поиска писать subject:...
  191.  
  192.     или назови параметр text и не меняй реализацию )
  193. */
  194. ******************************************
  195.     public static void refresh() {
  196.         $(".asf").click();
  197.     }
  198. /*
  199.     При такой структуре пейджей - вроде как это больше к Menu относится?
  200. */
Advertisement
Add Comment
Please, Sign In to add comment