Skip to content

Commit 9c5804d

Browse files
committed
test: regression tests for videos
#2137
1 parent 0b33043 commit 9c5804d

File tree

8 files changed

+166
-2
lines changed

8 files changed

+166
-2
lines changed

src/main/webapp/WEB-INF/jsp/content/main.jsp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
<span class="card-title"><i class="material-icons">movie</i> Videos</span>
118118
</div>
119119
<div class="card-action">
120-
<a href="<spring:url value='/content/multimedia/video/list' />">View list (${videoCount})</a>
120+
<a id="videoListLink" href="<spring:url value='/content/multimedia/video/list' />">View list (${videoCount})</a>
121121
</div>
122122
</div>
123123
</div>

src/main/webapp/WEB-INF/jsp/content/multimedia/video/list.jsp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,6 @@
7171
</div>
7272

7373
<div class="fixed-action-btn" style="bottom: 2em; right: 2em;">
74-
<a href="<spring:url value='/content/multimedia/video/create' />" class="btn-floating btn-large tooltipped" data-position="left" data-delay="50" data-tooltip="Add video"><i class="material-icons">add</i></a>
74+
<a id="createButton" href="<spring:url value='/content/multimedia/video/create' />" class="btn-floating btn-large tooltipped" data-position="left" data-delay="50" data-tooltip="Add video"><i class="material-icons">add</i></a>
7575
</div>
7676
</content:section>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package ai.elimu.rest.v2.content;
2+
3+
import ai.elimu.util.JsonLoader;
4+
import lombok.extern.slf4j.Slf4j;
5+
import selenium.util.DomainHelper;
6+
import org.json.JSONArray;
7+
import org.json.JSONObject;
8+
import org.junit.jupiter.api.Test;
9+
10+
import static org.junit.jupiter.api.Assertions.assertFalse;
11+
import static org.junit.jupiter.api.Assertions.assertNotNull;
12+
13+
@Slf4j
14+
public class VideosRestControllerTest {
15+
16+
@Test
17+
public void testHandleGetRequest() {
18+
String jsonResponse = JsonLoader.loadJson(DomainHelper.getRestUrlV2() + "/content/videos");
19+
log.info("jsonResponse: " + jsonResponse);
20+
21+
JSONArray videosJSONArray = new JSONArray(jsonResponse);
22+
log.info("videosJSONArray.length(): " + videosJSONArray.length());
23+
assertFalse(videosJSONArray.isEmpty());
24+
25+
JSONObject videoJsonObject = videosJSONArray.getJSONObject(0);
26+
assertNotNull(videoJsonObject.getString("title"));
27+
}
28+
}

src/test/java/selenium/content/MainContentPage.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,9 @@ public void pressStoryBookListLink() {
5353
WebElement link = driver.findElement(By.id("storyBookListLink"));
5454
link.click();
5555
}
56+
57+
public void pressVideoListLink() {
58+
WebElement link = driver.findElement(By.id("videoListLink"));
59+
link.click();
60+
}
5661
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package selenium.content.video;
2+
3+
import org.openqa.selenium.By;
4+
import org.openqa.selenium.WebDriver;
5+
6+
public class VideoCreatePage {
7+
8+
private WebDriver driver;
9+
10+
public VideoCreatePage(WebDriver driver) {
11+
this.driver = driver;
12+
13+
driver.findElement(By.id("videoCreatePage"));
14+
}
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package selenium.content.video;
2+
3+
import org.openqa.selenium.By;
4+
import org.openqa.selenium.WebDriver;
5+
6+
public class VideoEditPage {
7+
8+
private WebDriver driver;
9+
10+
public VideoEditPage(WebDriver driver) {
11+
this.driver = driver;
12+
13+
driver.findElement(By.id("videoEditPage"));
14+
}
15+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package selenium.content.video;
2+
3+
import java.util.List;
4+
5+
import org.openqa.selenium.By;
6+
import org.openqa.selenium.WebDriver;
7+
import org.openqa.selenium.WebElement;
8+
9+
public class VideoListPage {
10+
11+
private WebDriver driver;
12+
13+
public VideoListPage(WebDriver driver) {
14+
this.driver = driver;
15+
16+
driver.findElement(By.id("videoListPage"));
17+
}
18+
19+
public void pressRandomVideo() {
20+
List<WebElement> links = driver.findElements(By.className("editLink"));
21+
int randomIndex = (int) (Math.random() * links.size());
22+
WebElement randomLink = links.get(randomIndex);
23+
randomLink.click();
24+
}
25+
26+
public void pressCreateButton() {
27+
WebElement button = driver.findElement(By.id("createButton"));
28+
button.click();
29+
}
30+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package selenium.content.video;
2+
3+
import org.junit.jupiter.api.AfterEach;
4+
import org.junit.jupiter.api.BeforeEach;
5+
import org.junit.jupiter.api.Test;
6+
import org.openqa.selenium.WebDriver;
7+
import org.openqa.selenium.chrome.ChromeDriver;
8+
import org.openqa.selenium.chrome.ChromeOptions;
9+
10+
import lombok.extern.slf4j.Slf4j;
11+
import selenium.content.MainContentPage;
12+
import selenium.util.DomainHelper;
13+
14+
@Slf4j
15+
public class VideoTest {
16+
17+
private WebDriver driver;
18+
19+
@BeforeEach
20+
public void setUp() {
21+
log.info("setUp");
22+
23+
ChromeOptions chromeOptions = new ChromeOptions();
24+
25+
// Read "headless" property set on the command line:
26+
// mvn clean verify -P regression-test-ui -D headless=true
27+
String headlessSystemProperty = System.getProperty("headless");
28+
log.info("headlessSystemProperty: \"" + headlessSystemProperty + "\"");
29+
if ("true".equals(headlessSystemProperty)) {
30+
chromeOptions.addArguments("headless");
31+
}
32+
33+
driver = new ChromeDriver(chromeOptions);
34+
35+
driver.get(DomainHelper.getBaseUrl() + "/content");
36+
}
37+
38+
@AfterEach
39+
public void tearDown() {
40+
log.info("tearDown");
41+
42+
driver.quit();
43+
}
44+
45+
@Test
46+
public void testRandomVideoEditPage() {
47+
log.info("testRandomVideoEditPage");
48+
49+
MainContentPage mainContentPage = new MainContentPage(driver);
50+
mainContentPage.pressVideoListLink();
51+
52+
VideoListPage videoListPage = new VideoListPage(driver);
53+
videoListPage.pressRandomVideo();
54+
log.info("driver.getCurrentUrl(): " + driver.getCurrentUrl());
55+
56+
VideoEditPage videoEditPage = new VideoEditPage(driver);
57+
}
58+
59+
@Test
60+
public void testVideoCreatePage() {
61+
log.info("testVideoCreatePage");
62+
63+
MainContentPage mainContentPage = new MainContentPage(driver);
64+
mainContentPage.pressVideoListLink();
65+
66+
VideoListPage videoListPage = new VideoListPage(driver);
67+
videoListPage.pressCreateButton();
68+
69+
VideoCreatePage videoCreatePage = new VideoCreatePage(driver);
70+
}
71+
}

0 commit comments

Comments
 (0)