added junit test for TimetableParser
All checks were successful
continuous-integration/drone/push Build is passing

* this also is release 1.1.4 (api version 1.1.2)
* closes issue #5
This commit is contained in:
2019-09-14 00:43:59 +02:00
parent 7d1f825057
commit 3be98f6129
6 changed files with 1226 additions and 10 deletions

View File

@ -30,8 +30,7 @@ import org.slf4j.LoggerFactory
import java.net.SocketTimeoutException
class MensaParser {
var logger: org.slf4j.Logger = LoggerFactory.getLogger(MensaParser::class.java)
private var logger: org.slf4j.Logger = LoggerFactory.getLogger(MensaParser::class.java)
/**
* returns the mensa's menu for a week

View File

@ -26,8 +26,10 @@ import org.jsoup.Jsoup
import org.jsoup.nodes.Document
import org.mosad.thecitadelofricks.Lesson
import org.mosad.thecitadelofricks.TimetableWeek
import org.slf4j.LoggerFactory
class TimetableParser {
private var logger: org.slf4j.Logger = LoggerFactory.getLogger(TimetableParser::class.java)
private val days = arrayOf("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday")
/**
@ -37,10 +39,18 @@ class TimetableParser {
* @param timetableURL the URL of the timetable you want to get
*/
fun getTimeTable(timetableURL: String): TimetableWeek {
val timetableWeek = TimetableWeek()
val scheduleHTML = Jsoup.connect(timetableURL).get() // TODO add a try catch block to cover timeouts
return try {
parseTimeTable(Jsoup.connect(timetableURL).get())
} catch (gex: Exception) {
logger.error("general TimetableParser error", gex)
TimetableWeek()
}
}
fun parseTimeTable(htmlDoc: Document): TimetableWeek {
val timetableWeek = TimetableWeek()
val rows = htmlDoc.select("table.timetable").select("tr[scope=\"row\"]")
val rows = scheduleHTML.select("table.timetable").select("tr[scope=\"row\"]")
var sDay = -1
var sRow = -1
var sLesson = Lesson("", "", "", "", "")
@ -113,7 +123,8 @@ class TimetableParser {
fun getWeekNumberYear(timetableURL: String): Int {
return try {
parseWeekNumberYear(Jsoup.connect(timetableURL).get())
} catch (ex: Exception) {
} catch (gex: Exception) {
logger.error("general TimetableParser error", gex)
0
}
}