1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
package com.mavlushechka.a1qa;
import aquality.selenium.browser.AqualityServices;
import com.mavlushechka.a1qa.models.Attachment;
import com.mavlushechka.a1qa.models.Comment;
import com.mavlushechka.a1qa.models.Post;
import com.mavlushechka.a1qa.models.User;
import com.mavlushechka.a1qa.pages.FeedPage;
import com.mavlushechka.a1qa.pages.HomePage;
import com.mavlushechka.a1qa.pages.ProfilePage;
import com.mavlushechka.a1qa.pages.SignInPage;
import com.mavlushechka.a1qa.utils.JsonParser;
import com.mavlushechka.a1qa.utils.LoggerUtils;
import com.mavlushechka.a1qa.utils.StringUtils;
import com.mavlushechka.a1qa.utils.VkApiUtils;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.io.IOException;
public class TestCase1 extends BaseTest {
@Test
public void test1() throws IOException {
HomePage homePage = new HomePage();
Assert.assertTrue(homePage.isOpened(), "This is not the " + homePage.getName() + " page.");
LoggerUtils.step("[UI] Authorize.");
homePage.performAuthorization(JsonParser.parseData("testData", "vkontakte.account.login"));
SignInPage signInPage = new SignInPage();
Assert.assertTrue(signInPage.isOpened(), "This is not the " + signInPage.getName() + " page.");
signInPage.performAuthorization(JsonParser.parseData("testData", "vkontakte.account.password"));
FeedPage feedPage = new FeedPage();
Assert.assertTrue(feedPage.isOpened(), "This is not the " + feedPage.getName() + " page.");
AqualityServices.getBrowser().waitForPageToLoad();
LoggerUtils.step("[UI] Go to \"My profile\".");
feedPage.clickMyProfileButton();
ProfilePage profilePage = new ProfilePage();
Assert.assertTrue(profilePage.isOpened(), "This is not the " + profilePage.getName() + " page.");
User user = VkApiUtils.getCurrentUser();
int textLettersLowerBound = Integer.parseInt(JsonParser.parseData("config", "randomTextGenerator.lettersLowerBound"));
int textLettersUpperBound = Integer.parseInt(JsonParser.parseData("config", "randomTextGenerator.lettersUpperBound"));
int textLength = Integer.parseInt(JsonParser.parseData("config", "randomTextGenerator.length"));
String postRandomText = StringUtils.generateRandomText(textLettersLowerBound, textLettersUpperBound, textLength);
LoggerUtils.step("[API] Create post on the wall with randomly generated text using API-request and save id of the post from the API-response.");
Post post = new Post(VkApiUtils.createPost(postRandomText), user, postRandomText, null);
LoggerUtils.step("[UI] Check that post with the sent text from the correct user appeared on the wall without refreshing the page.");
Assert.assertTrue(profilePage.contains(post), "This is not the correct post.");
Attachment picture = new Attachment(com.mavlushechka.a1qa.constants.Attachment.PHOTO, user.getId(), Integer.parseInt(JsonParser.parseData("testData", "vkontakte.photoFromAlbum.id")));
LoggerUtils.step("[API] Edit the added post using API-request - change text and add(upload) a picture.");
Post editedPost = new Post(post.id(), user, post.message() + "[edited]", picture);
VkApiUtils.editPost(post, editedPost);
profilePage.waitForPostUpdate(editedPost);
LoggerUtils.step("[UI] Check that text was updated and the picture was uploaded(make sure that pictures are the same) without refreshing the page.");
Assert.assertTrue(profilePage.contains(editedPost), "This is not the correct post.");
String commentRandomText = StringUtils.generateRandomText(textLettersLowerBound, textLettersUpperBound, textLength);
LoggerUtils.step("[API] Add a comment to the post with the randomly generated text using API-request.");
Comment comment = new Comment(VkApiUtils.createComment(editedPost.id(), commentRandomText), user, editedPost, commentRandomText);
LoggerUtils.step("[UI] Check that comment from the correct user was added to the post without refreshing the page.");
Assert.assertTrue(profilePage.contains(comment), "This is not the correct comment.");
LoggerUtils.step("[UI] Like the post using UI.");
profilePage.clickPostLikeButton(post);
LoggerUtils.step("[API] Check that the post received like from the correct user using API-request.");
Assert.assertTrue(VkApiUtils.containsLike(editedPost, user), "The post did not receive like from the correct user.");
LoggerUtils.step("[API] Delete the post using API-request.");
VkApiUtils.deletePost(editedPost);
profilePage.waitForPostDelete(editedPost);
Assert.assertTrue(profilePage.notContains(editedPost), "The post is not deleted.");
}
}
|