diff --git a/pom-dependency-tree.txt b/pom-dependency-tree.txt index 95097237c..9a0edde9d 100644 --- a/pom-dependency-tree.txt +++ b/pom-dependency-tree.txt @@ -1,4 +1,4 @@ -ai.elimu:webapp:war:2.6.22-SNAPSHOT +ai.elimu:webapp:war:2.6.23-SNAPSHOT +- ai.elimu:model:jar:model-2.0.97:compile | \- com.google.code.gson:gson:jar:2.13.0:compile | \- com.google.errorprone:error_prone_annotations:jar:2.37.0:compile diff --git a/src/main/java/ai/elimu/dao/jpa/LetterSoundAssessmentEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/LetterSoundAssessmentEventDaoJpa.java index 067e22e56..702170c38 100644 --- a/src/main/java/ai/elimu/dao/jpa/LetterSoundAssessmentEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/LetterSoundAssessmentEventDaoJpa.java @@ -15,7 +15,7 @@ public List readAll(String androidId) throws DataAcc "SELECT event " + "FROM LetterSoundAssessmentEvent event " + "WHERE event.androidId = :androidId " + - "ORDER BY event.timestamp") + "ORDER BY event.id") .setParameter("androidId", androidId) .getResultList(); } diff --git a/src/main/java/ai/elimu/dao/jpa/LetterSoundLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/LetterSoundLearningEventDaoJpa.java index 40100d3d9..5b1885a94 100644 --- a/src/main/java/ai/elimu/dao/jpa/LetterSoundLearningEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/LetterSoundLearningEventDaoJpa.java @@ -15,7 +15,7 @@ public List readAll(String androidId) throws DataAcces "SELECT event " + "FROM LetterSoundLearningEvent event " + "WHERE event.androidId = :androidId " + - "ORDER BY event.timestamp") + "ORDER BY event.id") .setParameter("androidId", androidId) .getResultList(); } diff --git a/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java index 4cd0b4ef2..e9c822ebf 100644 --- a/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/StoryBookLearningEventDaoJpa.java @@ -48,7 +48,7 @@ public List readAll(String androidId) throws DataAccessE "SELECT event " + "FROM StoryBookLearningEvent event " + "WHERE event.androidId = :androidId " + - "ORDER BY event.timestamp") + "ORDER BY event.id") .setParameter("androidId", androidId) .getResultList(); } diff --git a/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java index 3f082185c..079cdbcda 100644 --- a/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/VideoLearningEventDaoJpa.java @@ -48,7 +48,7 @@ public List readAll(String androidId) throws DataAccessExcep "SELECT event " + "FROM VideoLearningEvent event " + "WHERE event.androidId = :androidId " + - "ORDER BY event.timestamp") + "ORDER BY event.id") .setParameter("androidId", androidId) .getResultList(); } diff --git a/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java b/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java index 5e799d56b..a63d43ace 100644 --- a/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java +++ b/src/main/java/ai/elimu/dao/jpa/WordLearningEventDaoJpa.java @@ -40,7 +40,7 @@ public List readAll(String androidId) throws DataAccessExcept "SELECT event " + "FROM WordLearningEvent event " + "WHERE event.androidId = :androidId " + - "ORDER BY event.timestamp") + "ORDER BY event.id") .setParameter("androidId", androidId) .getResultList(); } diff --git a/src/main/java/ai/elimu/web/analytics/StoryBookLearningEventListController.java b/src/main/java/ai/elimu/web/analytics/StoryBookLearningEventListController.java deleted file mode 100644 index 0085f9dcb..000000000 --- a/src/main/java/ai/elimu/web/analytics/StoryBookLearningEventListController.java +++ /dev/null @@ -1,70 +0,0 @@ -package ai.elimu.web.analytics; - -import ai.elimu.dao.StoryBookLearningEventDao; -import ai.elimu.entity.analytics.StoryBookLearningEvent; -import ai.elimu.util.AnalyticsHelper; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -@Controller -@RequestMapping("/analytics/storybook-learning-event/list") -@RequiredArgsConstructor -@Slf4j -public class StoryBookLearningEventListController { - - private final StoryBookLearningEventDao storyBookLearningEventDao; - - @GetMapping - public String handleRequest(Model model) { - log.info("handleRequest"); - - List storyBookLearningEvents = storyBookLearningEventDao.readAllOrderedByTime(); - model.addAttribute("storyBookLearningEvents", storyBookLearningEvents); - for (StoryBookLearningEvent storyBookLearningEvent : storyBookLearningEvents) { - storyBookLearningEvent.setAndroidId(AnalyticsHelper.redactAndroidId(storyBookLearningEvent.getAndroidId())); - } - - // Prepare chart data - List monthList = new ArrayList<>(); - List eventCountList = new ArrayList<>(); - if (!storyBookLearningEvents.isEmpty()) { - // Group event count by month (e.g. "Aug-2024", "Sep-2024") - Map eventCountByMonthMap = new HashMap<>(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM-yyyy"); - for (StoryBookLearningEvent event : storyBookLearningEvents) { - String eventMonth = simpleDateFormat.format(event.getTimestamp().getTime()); - eventCountByMonthMap.put(eventMonth, eventCountByMonthMap.getOrDefault(eventMonth, 0) + 1); - } - - // Iterate each month from 4 years ago until now - Calendar calendar4YearsAgo = Calendar.getInstance(); - calendar4YearsAgo.add(Calendar.YEAR, -4); - Calendar calendarNow = Calendar.getInstance(); - Calendar month = (Calendar) calendar4YearsAgo.clone(); - while (!month.after(calendarNow)) { - String monthAsString = simpleDateFormat.format(month.getTime()); - monthList.add(monthAsString); - - eventCountList.add(eventCountByMonthMap.getOrDefault(monthAsString, 0)); - - // Increase the date by 1 month - month.add(Calendar.MONTH, 1); - } - } - model.addAttribute("monthList", monthList); - model.addAttribute("eventCountList", eventCountList); - - return "analytics/storybook-learning-event/list"; - } -} diff --git a/src/main/java/ai/elimu/web/analytics/VideoLearningEventListController.java b/src/main/java/ai/elimu/web/analytics/VideoLearningEventListController.java deleted file mode 100644 index 1377705dd..000000000 --- a/src/main/java/ai/elimu/web/analytics/VideoLearningEventListController.java +++ /dev/null @@ -1,77 +0,0 @@ -package ai.elimu.web.analytics; - -import ai.elimu.dao.VideoLearningEventDao; -import ai.elimu.dao.enums.OrderDirection; -import ai.elimu.entity.analytics.VideoLearningEvent; -import ai.elimu.util.AnalyticsHelper; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -@Controller -@RequestMapping("/analytics/video-learning-event/list") -@RequiredArgsConstructor -@Slf4j -public class VideoLearningEventListController { - - private final VideoLearningEventDao videoLearningEventDao; - - @GetMapping - public String handleRequest(Model model) { - log.info("handleRequest"); - - List videoLearningEvents = videoLearningEventDao.readAllOrderedByTimestamp(OrderDirection.DESC); - log.info("videoLearningEvents.size(): " + videoLearningEvents.size()); - for (VideoLearningEvent videoLearningEvent : videoLearningEvents) { - videoLearningEvent.setAndroidId(AnalyticsHelper.redactAndroidId(videoLearningEvent.getAndroidId())); - } - - model.addAttribute("videoLearningEventCount", videoLearningEvents.size()); - if (videoLearningEvents.size() <= 100) { - model.addAttribute("videoLearningEvents", videoLearningEvents); - } else { - model.addAttribute("videoLearningEvents", videoLearningEvents.subList(0, 100)); - } - - // Prepare chart data - List weekList = new ArrayList<>(); - List eventCountList = new ArrayList<>(); - if (!videoLearningEvents.isEmpty()) { - // Group event count by week (e.g. "32-2024", "37-2024") - Map eventCountByMonthMap = new HashMap<>(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("ww-yyyy"); - for (VideoLearningEvent event : videoLearningEvents) { - String eventMonth = simpleDateFormat.format(event.getTimestamp().getTime()); - eventCountByMonthMap.put(eventMonth, eventCountByMonthMap.getOrDefault(eventMonth, 0) + 1); - } - - // Iterate each week from 6 months ago until now - Calendar calendar6MonthsAgo = Calendar.getInstance(); - calendar6MonthsAgo.add(Calendar.MONTH, -6); // 26 weeks - Calendar calendarNow = Calendar.getInstance(); - Calendar week = (Calendar) calendar6MonthsAgo.clone(); - while (!week.after(calendarNow)) { - String weekAsString = simpleDateFormat.format(week.getTime()); - weekList.add(weekAsString); - - eventCountList.add(eventCountByMonthMap.getOrDefault(weekAsString, 0)); - - // Increase the date by 1 week - week.add(Calendar.WEEK_OF_YEAR, 1); - } - } - model.addAttribute("weekList", weekList); - model.addAttribute("eventCountList", eventCountList); - - return "analytics/video-learning-event/list"; - } -} diff --git a/src/main/java/ai/elimu/web/analytics/WordLearningEventListController.java b/src/main/java/ai/elimu/web/analytics/WordLearningEventListController.java deleted file mode 100644 index 0d9f352fc..000000000 --- a/src/main/java/ai/elimu/web/analytics/WordLearningEventListController.java +++ /dev/null @@ -1,70 +0,0 @@ -package ai.elimu.web.analytics; - -import ai.elimu.dao.WordLearningEventDao; -import ai.elimu.entity.analytics.WordLearningEvent; -import ai.elimu.util.AnalyticsHelper; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -@Controller -@RequestMapping("/analytics/word-learning-event/list") -@RequiredArgsConstructor -@Slf4j -public class WordLearningEventListController { - - private final WordLearningEventDao wordLearningEventDao; - - @GetMapping - public String handleRequest(Model model) { - log.info("handleRequest"); - - List wordLearningEvents = wordLearningEventDao.readAll(); - model.addAttribute("wordLearningEvents", wordLearningEvents); - for (WordLearningEvent wordLearningEvent : wordLearningEvents) { - wordLearningEvent.setAndroidId(AnalyticsHelper.redactAndroidId(wordLearningEvent.getAndroidId())); - } - - // Prepare chart data - List monthList = new ArrayList<>(); - List eventCountList = new ArrayList<>(); - if (!wordLearningEvents.isEmpty()) { - // Group event count by month (e.g. "Aug-2024", "Sep-2024") - Map eventCountByMonthMap = new HashMap<>(); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM-yyyy"); - for (WordLearningEvent event : wordLearningEvents) { - String eventMonth = simpleDateFormat.format(event.getTimestamp().getTime()); - eventCountByMonthMap.put(eventMonth, eventCountByMonthMap.getOrDefault(eventMonth, 0) + 1); - } - - // Iterate each month from 4 years ago until now - Calendar calendar4YearsAgo = Calendar.getInstance(); - calendar4YearsAgo.add(Calendar.YEAR, -4); - Calendar calendarNow = Calendar.getInstance(); - Calendar month = (Calendar) calendar4YearsAgo.clone(); - while (!month.after(calendarNow)) { - String monthAsString = simpleDateFormat.format(month.getTime()); - monthList.add(monthAsString); - - eventCountList.add(eventCountByMonthMap.getOrDefault(monthAsString, 0)); - - // Increase the date by 1 month - month.add(Calendar.MONTH, 1); - } - } - model.addAttribute("monthList", monthList); - model.addAttribute("eventCountList", eventCountList); - - return "analytics/word-learning-event/list"; - } -} diff --git a/src/main/java/ai/elimu/web/analytics/StoryBookLearningEventCsvExportController.java b/src/main/java/ai/elimu/web/analytics/students/StoryBookLearningEventsCsvExportController.java similarity index 74% rename from src/main/java/ai/elimu/web/analytics/StoryBookLearningEventCsvExportController.java rename to src/main/java/ai/elimu/web/analytics/students/StoryBookLearningEventsCsvExportController.java index efa856328..0927e0d62 100644 --- a/src/main/java/ai/elimu/web/analytics/StoryBookLearningEventCsvExportController.java +++ b/src/main/java/ai/elimu/web/analytics/students/StoryBookLearningEventsCsvExportController.java @@ -1,7 +1,9 @@ -package ai.elimu.web.analytics; +package ai.elimu.web.analytics.students; import ai.elimu.dao.StoryBookLearningEventDao; +import ai.elimu.dao.StudentDao; import ai.elimu.entity.analytics.StoryBookLearningEvent; +import ai.elimu.entity.analytics.students.Student; import ai.elimu.util.AnalyticsHelper; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @@ -14,24 +16,31 @@ import org.apache.commons.csv.CSVPrinter; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @Controller -@RequestMapping("/analytics/storybook-learning-event/list/storybook-learning-events.csv") +@RequestMapping("/analytics/students/{studentId}/storybook-learning-events.csv") @RequiredArgsConstructor @Slf4j -public class StoryBookLearningEventCsvExportController { +public class StoryBookLearningEventsCsvExportController { + + private final StudentDao studentDao; private final StoryBookLearningEventDao storyBookLearningEventDao; @GetMapping public void handleRequest( + @PathVariable Long studentId, HttpServletResponse response, OutputStream outputStream ) throws IOException { log.info("handleRequest"); - List storyBookLearningEvents = storyBookLearningEventDao.readAll(); + Student student = studentDao.read(studentId); + log.info("student.getAndroidId(): " + student.getAndroidId()); + + List storyBookLearningEvents = storyBookLearningEventDao.readAll(student.getAndroidId()); log.info("storyBookLearningEvents.size(): " + storyBookLearningEvents.size()); for (StoryBookLearningEvent storyBookLearningEvent : storyBookLearningEvents) { storyBookLearningEvent.setAndroidId(AnalyticsHelper.redactAndroidId(storyBookLearningEvent.getAndroidId())); @@ -39,13 +48,13 @@ public void handleRequest( CSVFormat csvFormat = CSVFormat.DEFAULT.builder() .setHeader( - "id", // The Room database ID + "id", "timestamp", - "android_id", "package_name", - "storybook_id", "storybook_title", - "learning_event_type" + "storybook_id", + "learning_event_type", + "additional_data" ) .build(); @@ -58,14 +67,14 @@ public void handleRequest( csvPrinter.printRecord( storyBookLearningEvent.getId(), storyBookLearningEvent.getTimestamp().getTimeInMillis(), - storyBookLearningEvent.getAndroidId(), storyBookLearningEvent.getPackageName(), - (storyBookLearningEvent.getStoryBook() == null) ? null : storyBookLearningEvent.getStoryBook().getId(), storyBookLearningEvent.getStoryBookTitle(), - storyBookLearningEvent.getLearningEventType() + storyBookLearningEvent.getStoryBookId(), + storyBookLearningEvent.getLearningEventType(), + storyBookLearningEvent.getAdditionalData() ); - csvPrinter.flush(); } + csvPrinter.flush(); csvPrinter.close(); String csvFileContent = stringWriter.toString(); diff --git a/src/main/java/ai/elimu/web/analytics/VideoLearningEventCsvExportController.java b/src/main/java/ai/elimu/web/analytics/students/VideoLearningEventsCsvExportController.java similarity index 82% rename from src/main/java/ai/elimu/web/analytics/VideoLearningEventCsvExportController.java rename to src/main/java/ai/elimu/web/analytics/students/VideoLearningEventsCsvExportController.java index 14ed0053a..9a4c90edd 100644 --- a/src/main/java/ai/elimu/web/analytics/VideoLearningEventCsvExportController.java +++ b/src/main/java/ai/elimu/web/analytics/students/VideoLearningEventsCsvExportController.java @@ -1,8 +1,10 @@ -package ai.elimu.web.analytics; +package ai.elimu.web.analytics.students; +import ai.elimu.dao.StudentDao; import ai.elimu.dao.VideoLearningEventDao; import ai.elimu.dao.enums.OrderDirection; import ai.elimu.entity.analytics.VideoLearningEvent; +import ai.elimu.entity.analytics.students.Student; import ai.elimu.util.AnalyticsHelper; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @@ -15,25 +17,32 @@ import org.apache.commons.csv.CSVPrinter; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @Controller -@RequestMapping("/analytics/video-learning-event/list/video-learning-events.csv") +@RequestMapping("/analytics/students/{studentId}/video-learning-events.csv") @RequiredArgsConstructor @Slf4j -public class VideoLearningEventCsvExportController { +public class VideoLearningEventsCsvExportController { + + private final StudentDao studentDao; private final VideoLearningEventDao videoLearningEventDao; @GetMapping public void handleRequest( + @PathVariable Long studentId, HttpServletResponse response, OutputStream outputStream ) throws IOException { log.info("handleRequest"); - List videoLearningEvents = videoLearningEventDao.readAllOrderedByTimestamp(OrderDirection.ASC); + Student student = studentDao.read(studentId); + log.info("student.getAndroidId(): " + student.getAndroidId()); + + List videoLearningEvents = videoLearningEventDao.readAll(student.getAndroidId()); log.info("videoLearningEvents.size(): " + videoLearningEvents.size()); for (VideoLearningEvent videoLearningEvent : videoLearningEvents) { videoLearningEvent.setAndroidId(AnalyticsHelper.redactAndroidId(videoLearningEvent.getAndroidId())); @@ -41,12 +50,11 @@ public void handleRequest( CSVFormat csvFormat = CSVFormat.DEFAULT.builder() .setHeader( - "id", // The Room database ID + "id", "timestamp", - "android_id", "package_name", - "video_id", "video_title", + "video_id", "learning_event_type", "additional_data" ) @@ -61,10 +69,9 @@ public void handleRequest( csvPrinter.printRecord( videoLearningEvent.getId(), videoLearningEvent.getTimestamp().getTimeInMillis(), - videoLearningEvent.getAndroidId(), videoLearningEvent.getPackageName(), - videoLearningEvent.getVideoId(), videoLearningEvent.getVideoTitle(), + videoLearningEvent.getVideoId(), videoLearningEvent.getLearningEventType(), videoLearningEvent.getAdditionalData() ); diff --git a/src/main/java/ai/elimu/web/analytics/students/WordLearningEventsCsvExportController.java b/src/main/java/ai/elimu/web/analytics/students/WordLearningEventsCsvExportController.java index 14400b8f0..c48fe08de 100644 --- a/src/main/java/ai/elimu/web/analytics/students/WordLearningEventsCsvExportController.java +++ b/src/main/java/ai/elimu/web/analytics/students/WordLearningEventsCsvExportController.java @@ -65,7 +65,7 @@ public void handleRequest( wordLearningEvent.getTimestamp().getTimeInMillis(), wordLearningEvent.getPackageName(), wordLearningEvent.getWordText(), - (wordLearningEvent.getWord() != null) ? wordLearningEvent.getWord().getId() : 0, + (wordLearningEvent.getWord() == null) ? null : wordLearningEvent.getWord().getId(), // wordLearningEvent.getWordId(), https://github.com/elimu-ai/webapp/issues/2113 wordLearningEvent.getLearningEventType(), wordLearningEvent.getAdditionalData() diff --git a/src/main/java/ai/elimu/web/servlet/CustomDispatcherServlet.java b/src/main/java/ai/elimu/web/servlet/CustomDispatcherServlet.java index d677d4b84..f98c51a4e 100644 --- a/src/main/java/ai/elimu/web/servlet/CustomDispatcherServlet.java +++ b/src/main/java/ai/elimu/web/servlet/CustomDispatcherServlet.java @@ -329,7 +329,7 @@ private void populateDatabase(WebApplicationContext webApplicationContext) { while (!week.after(calendarNow)) { List students = studentDao.readAll(); for (Student student : students) { - int randomNumberOfStoryBookLearningEvents = (int) (Math.random() * 8); + int randomNumberOfStoryBookLearningEvents = (int) (Math.random() * 10); for (int i = 0; i < randomNumberOfStoryBookLearningEvents; i++) { StoryBookLearningEvent storyBookLearningEvent = new StoryBookLearningEvent(); storyBookLearningEvent.setTimestamp(week); @@ -341,7 +341,7 @@ private void populateDatabase(WebApplicationContext webApplicationContext) { storyBookLearningEventDao.create(storyBookLearningEvent); } - int randomNumberOfVideoLearningEvents = (int) (Math.random() * 8); + int randomNumberOfVideoLearningEvents = (int) (Math.random() * 10); for (int i = 0; i < randomNumberOfVideoLearningEvents; i++) { VideoLearningEvent videoLearningEvent = new VideoLearningEvent(); videoLearningEvent.setTimestamp(week); diff --git a/src/main/webapp/WEB-INF/jsp/analytics/students/id.jsp b/src/main/webapp/WEB-INF/jsp/analytics/students/id.jsp index ab15151c7..9ae6d16ba 100644 --- a/src/main/webapp/WEB-INF/jsp/analytics/students/id.jsp +++ b/src/main/webapp/WEB-INF/jsp/analytics/students/id.jsp @@ -223,6 +223,19 @@
📚 Storybooks
+ + Export to CSVvertical_align_bottom + + +
Storybook learning events (${fn:length(storyBookLearningEvents)})
+ + + + + + + + + + + + + + + + + + + +
idtimestamppackage_namestorybook_title
+ ${storyBookLearningEvent.id} + + ${storyBookLearningEvent.timestamp.time} + + ${storyBookLearningEvent.packageName} + + "${storyBookLearningEvent.storyBookTitle}" +
🎬 Videos
+ + Export to CSVvertical_align_bottom + + +
Video learning events (${fn:length(videoLearningEvents)})
+ + + + + + + + + + + + + + + + + + + +
idtimestamppackage_namevideo_title
+ ${videoLearningEvent.id} + + ${videoLearningEvent.timestamp.time} + + ${videoLearningEvent.packageName} + + "${videoLearningEvent.videoTitle}" +
diff --git a/src/test/java/selenium/analytics/MainAnalyticsPage.java b/src/test/java/selenium/analytics/MainAnalyticsPage.java index c92463eef..c0a61faba 100644 --- a/src/test/java/selenium/analytics/MainAnalyticsPage.java +++ b/src/test/java/selenium/analytics/MainAnalyticsPage.java @@ -18,11 +18,6 @@ public MainAnalyticsPage(WebDriver driver) { ErrorHelper.verifyNoScriptOrMarkupError(driver); } - public void pressStoryBookLearningEventsLink() { - WebElement link = driver.findElement(By.id("storyBookLearningEventsLink")); - link.click(); - } - public void pressVideoLearningEventsLink() { WebElement link = driver.findElement(By.id("videoLearningEventsLink")); link.click(); diff --git a/src/test/java/selenium/analytics/StoryBookLearningEventsPage.java b/src/test/java/selenium/analytics/StoryBookLearningEventsPage.java deleted file mode 100644 index 9787d55d2..000000000 --- a/src/test/java/selenium/analytics/StoryBookLearningEventsPage.java +++ /dev/null @@ -1,19 +0,0 @@ -package selenium.analytics; - -import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; - -import selenium.util.ErrorHelper; - -public class StoryBookLearningEventsPage { - - private WebDriver driver; - - public StoryBookLearningEventsPage(WebDriver driver) { - this.driver = driver; - - driver.findElement(By.id("storyBookLearningEventsPage")); - - ErrorHelper.verifyNoScriptOrMarkupError(driver); - } -} diff --git a/src/test/java/selenium/analytics/StoryBookLearningEventsPageTest.java b/src/test/java/selenium/analytics/StoryBookLearningEventsPageTest.java deleted file mode 100644 index 7bc1ca0c6..000000000 --- a/src/test/java/selenium/analytics/StoryBookLearningEventsPageTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package selenium.analytics; - -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.chrome.ChromeDriver; -import org.openqa.selenium.chrome.ChromeOptions; -import lombok.extern.slf4j.Slf4j; -import selenium.util.DomainHelper; - -@Slf4j -public class StoryBookLearningEventsPageTest { - - private WebDriver driver; - - @BeforeEach - public void setUp() { - log.info("setUp"); - - ChromeOptions chromeOptions = new ChromeOptions(); - - // Read "headless" property set on the command line: - // mvn clean verify -P regression-test-ui -D headless=true - String headlessSystemProperty = System.getProperty("headless"); - log.info("headlessSystemProperty: \"" + headlessSystemProperty + "\""); - if ("true".equals(headlessSystemProperty)) { - chromeOptions.addArguments("headless"); - } - - driver = new ChromeDriver(chromeOptions); - - driver.get(DomainHelper.getBaseUrl() + "/analytics"); - log.info("driver.getCurrentUrl(): " + driver.getCurrentUrl()); - } - - @AfterEach - public void tearDown() { - log.info("tearDown"); - - driver.quit(); - } - - @Test - public void testStoryBookLearningEventsPage() { - log.info("testStoryBookLearningEventsPage"); - - MainAnalyticsPage mainAnalyticsPage = new MainAnalyticsPage(driver); - mainAnalyticsPage.pressStoryBookLearningEventsLink(); - - StoryBookLearningEventsPage storyBookLearningEventsPage = new StoryBookLearningEventsPage(driver); - } -} diff --git a/src/test/java/selenium/analytics/VideoLearningEventsPage.java b/src/test/java/selenium/analytics/VideoLearningEventsPage.java deleted file mode 100644 index 3b32eaa4e..000000000 --- a/src/test/java/selenium/analytics/VideoLearningEventsPage.java +++ /dev/null @@ -1,19 +0,0 @@ -package selenium.analytics; - -import org.openqa.selenium.By; -import org.openqa.selenium.WebDriver; - -import selenium.util.ErrorHelper; - -public class VideoLearningEventsPage { - - private WebDriver driver; - - public VideoLearningEventsPage(WebDriver driver) { - this.driver = driver; - - driver.findElement(By.id("videoLearningEventsPage")); - - ErrorHelper.verifyNoScriptOrMarkupError(driver); - } -} diff --git a/src/test/java/selenium/analytics/VideoLearningEventsPageTest.java b/src/test/java/selenium/analytics/VideoLearningEventsPageTest.java deleted file mode 100644 index 5e692e70a..000000000 --- a/src/test/java/selenium/analytics/VideoLearningEventsPageTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package selenium.analytics; - -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.openqa.selenium.WebDriver; -import org.openqa.selenium.chrome.ChromeDriver; -import org.openqa.selenium.chrome.ChromeOptions; -import lombok.extern.slf4j.Slf4j; -import selenium.util.DomainHelper; - -@Slf4j -public class VideoLearningEventsPageTest { - - private WebDriver driver; - - @BeforeEach - public void setUp() { - log.info("setUp"); - - ChromeOptions chromeOptions = new ChromeOptions(); - - // Read "headless" property set on the command line: - // mvn clean verify -P regression-test-ui -D headless=true - String headlessSystemProperty = System.getProperty("headless"); - log.info("headlessSystemProperty: \"" + headlessSystemProperty + "\""); - if ("true".equals(headlessSystemProperty)) { - chromeOptions.addArguments("headless"); - } - - driver = new ChromeDriver(chromeOptions); - - driver.get(DomainHelper.getBaseUrl() + "/analytics"); - log.info("driver.getCurrentUrl(): " + driver.getCurrentUrl()); - } - - @AfterEach - public void tearDown() { - log.info("tearDown"); - - driver.quit(); - } - - @Disabled("Disabled until the event-simulator bug has been fixed") - @Test - public void testVideoLearningEventsPage() { - log.info("testVideoLearningEventsPage"); - - MainAnalyticsPage mainAnalyticsPage = new MainAnalyticsPage(driver); - mainAnalyticsPage.pressVideoLearningEventsLink(); - - VideoLearningEventsPage videoLearningEventsPage = new VideoLearningEventsPage(driver); - } -}