Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,13 @@
<artifactId>jsoup</artifactId>
<version>1.19.1</version>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.1</version>
<scope>test</scope>
</dependency>
</dependencies>

</project>
2 changes: 2 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

* FreeMarker
* Jackson
* Jsoup
* Junit

## Используемые плагины

Expand Down
6 changes: 1 addition & 5 deletions src/main/java/org/ev3nt/files/CacheManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ static public Object getCachedDataAsStream(String name, StreamType type) {
if (name != null) {
try {
Files.createDirectory(cacheDir);
} catch (IOException e) {
// throw new RuntimeException(e);
}
} catch (IOException ignored) {}

try {
Path fullName = cacheDir.resolve(name);
Expand Down Expand Up @@ -66,8 +64,6 @@ static public void saveDataAsCache(String name, String data) {
stream.write(data.getBytes(StandardCharsets.UTF_8));

stream.close();

// lastCachedFileName = name;
} catch (IOException ignored) {}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/ev3nt/web/WebSchedule.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ static Integer obj2Int(Object object) {
static Map<Integer, Map<Integer, List<LessonDTO>>> parseDisciplines(Map<?, ?> disciplines) {
Map<Integer, Map<Integer, List<LessonDTO>>> schedule = new HashMap<>();

boolean zaoch = disciplines.size() == 1;
boolean zaoch = (disciplines.size() == 1) && disciplines.containsKey("6");
for (Map.Entry<?, ?> dayEntry : disciplines.entrySet()) {
Integer day = obj2Int(dayEntry.getKey());
Object dayObj = dayEntry.getValue();
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/org/ev3nt/web/dto/LessonDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,8 @@ public void setPlainText(String plain_text) {
this.plain_text = plain_text;
}

// Используется в шаблонах
@SuppressWarnings("unused")
public String getPlainText() {
return plain_text;
}
Expand Down
42 changes: 27 additions & 15 deletions src/main/resources/templates/template.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<html>
<head>
<style>
table{
Expand All @@ -25,30 +24,43 @@
</style>
</head>

<body>
<table border="1">
<th colspan="2">
День/Пара
</th>

<#list schedules as schedule>
<th>
ИС-122
${schedule.title}
</th>
</#list>

<#list days as dayNumber>
<#assign lessonsList = lessonsCounts?values[lessonsCounts?keys?seq_index_of(dayNumber)]>
<#list lessonsList as lessonNumber>
<tr>
<td class="vertical-text header-text" rowspan="2">Понедельник</td>
<td class="header-text">1</td>

<td>Интерфейсы информационных систем ЛБ 2,4,6,8 Комкова С.В. ИС-120 411/2
<br>
<br>
Интерфейсы информационных систем ЛК 1/7 Комкова С.В. ИС-120 411/2
</td>
</tr>
<tr>
<td class="header-text">2</td>
<#if lessonNumber?is_first>
<td class="vertical-text header-text" rowspan="${lessonsList?size}">${rowNames[dayNumber - 1]}</td>
</#if>
<td class="header-text">${lessonNumber}</td>

<#list schedules as schedule>
<td>
<#assign dayIndex = schedule.schedule?keys?seq_index_of(dayNumber)!-1>
<#assign dayLessons = (dayIndex >= 0)?then(schedule.schedule?values[dayIndex], {})>

<#assign lessonIndex = dayLessons?keys?seq_index_of(lessonNumber)!-1>
<#assign lessons = (lessonIndex >= 0)?then(dayLessons?values[lessonIndex], [])>

<td>Интерфейсы информационных систем ЛК 1/7 Комкова С.В. ИС-120 411/2</td>
<#list lessons as lesson>
<#if !lesson?is_first><br></#if>
${lesson.getPlainText()}
</#list>
</td>
</#list>
</tr>
</#list>
</#list>
</table>
</body>
</html>
55 changes: 55 additions & 0 deletions src/test/java/org/ev3nt/modes/TeacherScheduleTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package org.ev3nt.modes;

import org.ev3nt.web.dto.LessonDTO;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class TeacherScheduleTest {
// Здесь я тестирую только форматер, потому что он везде +- одинаковый
@Test
void teacherItem_ShouldReturnCorrectNameAndId() {
TeacherSchedule.TeacherItem teacher = new TeacherSchedule.TeacherItem("Петров А.А.", 456);
assertEquals("Петров А.А.", teacher.getName());
assertEquals(456, teacher.getTeacherId());
}

@Test
void preparePlainText_ShouldFormatLessonWithoutNulls() {
TeacherSchedule schedule = new TeacherSchedule();
LessonDTO lesson = new LessonDTO();
lesson.setDiscipline("Физика");
lesson.setAud("404");

String result = schedule.preparePlainText(lesson);
assertEquals("Физика 404", result);
}

@Test
void preparePlainText_ShouldHandleEvenWeekType() {
TeacherSchedule schedule = new TeacherSchedule();
LessonDTO lesson = new LessonDTO();
lesson.setDiscipline("Химия");
lesson.setType_week("even");

String result = schedule.preparePlainText(lesson);
assertTrue(result.contains("чётная"));
}

@Test
void updateTeacherList_ShouldNotThrow() {
TeacherSchedule schedule = new TeacherSchedule();
assertDoesNotThrow(schedule::updateTeacherList);
}

@Test
void preparePlainText_ShouldHandleMinimumFields() {
TeacherSchedule schedule = new TeacherSchedule();
LessonDTO lesson = new LessonDTO();
lesson.setDiscipline("Физика");
lesson.setType("Практика");

String result = schedule.preparePlainText(lesson);
assertEquals("Физика Практика", result);
}
}
42 changes: 42 additions & 0 deletions src/test/java/org/ev3nt/web/WebGroupsTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package org.ev3nt.web;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class WebGroupsTest {
@Test
void cacheGroupsAndGetCachedGroups_ShouldWorkCorrectly() throws JsonProcessingException {
Map<String, List<String>> testData = new HashMap<>();
testData.put("Факультет 1", Arrays.asList("Группа 1", "Группа 2"));

ObjectMapper originalMapper = WebGroups.mapper;
String originalCacheName = WebGroups.cacheName;

try {
WebGroups.mapper = new ObjectMapper();
WebGroups.cacheName = "test_groups_cache";

WebGroups.cacheGroups(testData);

Map<String, List<String>> result = WebGroups.getCachedGroups();

assertEquals(testData, result);
assertEquals(1, result.size());
assertTrue(result.containsKey("Факультет 1"));
assertEquals(2, result.get("Факультет 1").size());

} finally {
WebGroups.mapper = originalMapper;
WebGroups.cacheName = originalCacheName;
}
}
}
72 changes: 72 additions & 0 deletions src/test/java/org/ev3nt/web/WebScheduleTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package org.ev3nt.web;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.ev3nt.web.dto.LessonDTO;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class WebScheduleTest {
@BeforeEach
void setUp() {
originalMapper = WebSchedule.mapper;
WebSchedule.mapper = new ObjectMapper();
}

@AfterEach
void tearDown() {
WebSchedule.mapper = originalMapper;
}

@Test
void parseDisciplines_ShouldHandleRegularLessons() {
Map<String, Object> input = new HashMap<>();
Map<String, Object> day1 = new HashMap<>();
List<Map<String, Object>> lessons = new ArrayList<>();

Map<String, Object> lesson1 = new HashMap<>();
lesson1.put("number_para", "1");
lesson1.put("discipline", "Математика");
lessons.add(lesson1);

day1.put("1", lessons);
input.put("1", day1);

Map<Integer, Map<Integer, List<LessonDTO>>> result = WebSchedule.parseDisciplines(input);

assertEquals(1, result.size());
assertEquals(1, result.get(1).size());
assertEquals("Математика", result.get(1).get(1).get(0).getDiscipline());
}

@Test
void parseDisciplines_ShouldHandleZaochLessons() {
Map<String, Object> input = new HashMap<>();
Map<String, Object> day1 = new HashMap<>();
List<Map<String, Object>> lessons = new ArrayList<>();

Map<String, Object> lesson1 = new HashMap<>();
lesson1.put("number_para", "1");
lesson1.put("discipline", "Физика");
lesson1.put("number_week", "1");
lessons.add(lesson1);

day1.put("1", lessons);
input.put("1", day1);

Map<Integer, Map<Integer, List<LessonDTO>>> result = WebSchedule.parseDisciplines(input);

assertEquals(1, result.size());
assertEquals(1, result.get(1).size());
assertEquals("Физика", result.get(1).get(1).get(0).getDiscipline());
}

ObjectMapper originalMapper;
}
47 changes: 47 additions & 0 deletions src/test/java/org/ev3nt/web/WebTeachersTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package org.ev3nt.web;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.util.HashMap;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class WebTeachersTest {
@BeforeEach
void setUp() {
originalMapper = WebTeachers.mapper;
originalCacheName = WebTeachers.cacheName;
}

@AfterEach
void tearDown() {
WebTeachers.mapper = originalMapper;
WebTeachers.cacheName = originalCacheName;
}

@Test
void cacheTeachersAndGetCachedTeachers_ShouldWorkCorrectly() throws JsonProcessingException {
WebTeachers.mapper = new ObjectMapper();
WebTeachers.cacheName = "test_teachers_cache";

Map<Integer, String> testData = new HashMap<>();
testData.put(1, "Иванов И.И.");
testData.put(2, "Петров П.П.");

WebTeachers.cacheTeachers(testData);

Map<Integer, String> result = WebTeachers.getCachedTeachers();

assertEquals(2, result.size());
assertEquals("Иванов И.И.", result.get(1));
assertEquals("Петров П.П.", result.get(2));
}

ObjectMapper originalMapper;
String originalCacheName;
}