summaryrefslogtreecommitdiff
path: root/src/test/java/com/mavlushechka/a1qa/TestCase1.java
blob: c6b3b2d64ddee62698a502dacf56527fc4eddf0a (plain)
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.");
    }

}