forked from github/wulkanowy-mirror
SDK update (#2168)
This commit is contained in:
parent
b195fda026
commit
f8431d7ad6
44 changed files with 260 additions and 321 deletions
|
@ -48,7 +48,7 @@ fun getSemesterPojo(diaryId: Int, semesterId: Int, start: LocalDate, end: LocalD
|
|||
end = end,
|
||||
)
|
||||
|
||||
fun getStudentEntity(mode: Sdk.Mode = Sdk.Mode.API) = Student(
|
||||
fun getStudentEntity(mode: Sdk.Mode = Sdk.Mode.HEBE) = Student(
|
||||
scrapperBaseUrl = "http://fakelog.cf",
|
||||
email = "jan@fakelog.cf",
|
||||
certificateKey = "",
|
||||
|
|
|
@ -3,7 +3,7 @@ package io.github.wulkanowy.data.mappers
|
|||
import io.github.wulkanowy.data.db.entities.Semester
|
||||
import io.github.wulkanowy.data.db.entities.Timetable
|
||||
import io.github.wulkanowy.sdk.pojo.Attendance
|
||||
import io.github.wulkanowy.sdk.scrapper.attendance.SentExcuse
|
||||
import io.github.wulkanowy.sdk.scrapper.attendance.SentExcuseStatus
|
||||
import org.junit.Test
|
||||
import java.time.Instant
|
||||
import java.time.LocalDate
|
||||
|
@ -98,7 +98,7 @@ class AttendanceMapperTest {
|
|||
timeId = 1,
|
||||
categoryId = 1,
|
||||
deleted = false,
|
||||
excuseStatus = SentExcuse.Status.WAITING,
|
||||
excuseStatus = SentExcuseStatus.WAITING,
|
||||
excusable = false,
|
||||
absence = false,
|
||||
excused = false,
|
||||
|
|
|
@ -63,7 +63,7 @@ class AttendanceRepositoryTest {
|
|||
@Test
|
||||
fun `force refresh without difference`() {
|
||||
// prepare
|
||||
coEvery { sdk.getAttendance(startDate, endDate, 1) } returns remoteList
|
||||
coEvery { sdk.getAttendance(startDate, endDate) } returns remoteList
|
||||
coEvery { attendanceDb.loadAll(1, 1, startDate, endDate) } returnsMany listOf(
|
||||
flowOf(remoteList.mapToEntities(semester, emptyList())),
|
||||
flowOf(remoteList.mapToEntities(semester, emptyList()))
|
||||
|
@ -77,7 +77,7 @@ class AttendanceRepositoryTest {
|
|||
// verify
|
||||
assertEquals(null, res.errorOrNull)
|
||||
assertEquals(2, res.dataOrNull?.size)
|
||||
coVerify { sdk.getAttendance(startDate, endDate, 1) }
|
||||
coVerify { sdk.getAttendance(startDate, endDate) }
|
||||
coVerify { attendanceDb.loadAll(1, 1, startDate, endDate) }
|
||||
coVerify { attendanceDb.insertAll(match { it.isEmpty() }) }
|
||||
coVerify { attendanceDb.deleteAll(match { it.isEmpty() }) }
|
||||
|
@ -86,7 +86,7 @@ class AttendanceRepositoryTest {
|
|||
@Test
|
||||
fun `force refresh with more items in remote`() {
|
||||
// prepare
|
||||
coEvery { sdk.getAttendance(startDate, endDate, 1) } returns remoteList
|
||||
coEvery { sdk.getAttendance(startDate, endDate) } returns remoteList
|
||||
coEvery { attendanceDb.loadAll(1, 1, startDate, endDate) } returnsMany listOf(
|
||||
flowOf(remoteList.dropLast(1).mapToEntities(semester, emptyList())),
|
||||
flowOf(remoteList.dropLast(1).mapToEntities(semester, emptyList())), // after fetch end before save result
|
||||
|
@ -101,7 +101,7 @@ class AttendanceRepositoryTest {
|
|||
// verify
|
||||
assertEquals(null, res.errorOrNull)
|
||||
assertEquals(2, res.dataOrNull?.size)
|
||||
coVerify { sdk.getAttendance(startDate, endDate, 1) }
|
||||
coVerify { sdk.getAttendance(startDate, endDate) }
|
||||
coVerify { attendanceDb.loadAll(1, 1, startDate, endDate) }
|
||||
coVerify {
|
||||
attendanceDb.insertAll(match {
|
||||
|
@ -114,7 +114,7 @@ class AttendanceRepositoryTest {
|
|||
@Test
|
||||
fun `force refresh with more items in local`() {
|
||||
// prepare
|
||||
coEvery { sdk.getAttendance(startDate, endDate, 1) } returns remoteList.dropLast(1)
|
||||
coEvery { sdk.getAttendance(startDate, endDate) } returns remoteList.dropLast(1)
|
||||
coEvery { attendanceDb.loadAll(1, 1, startDate, endDate) } returnsMany listOf(
|
||||
flowOf(remoteList.mapToEntities(semester, emptyList())),
|
||||
flowOf(remoteList.mapToEntities(semester, emptyList())), // after fetch end before save result
|
||||
|
@ -129,7 +129,7 @@ class AttendanceRepositoryTest {
|
|||
// verify
|
||||
assertEquals(null, res.errorOrNull)
|
||||
assertEquals(1, res.dataOrNull?.size)
|
||||
coVerify { sdk.getAttendance(startDate, endDate, 1) }
|
||||
coVerify { sdk.getAttendance(startDate, endDate) }
|
||||
coVerify { attendanceDb.loadAll(1, 1, startDate, endDate) }
|
||||
coVerify { attendanceDb.insertAll(match { it.isEmpty() }) }
|
||||
coVerify {
|
||||
|
|
|
@ -59,7 +59,7 @@ class ExamRemoteTest {
|
|||
@Test
|
||||
fun `force refresh without difference`() {
|
||||
// prepare
|
||||
coEvery { sdk.getExams(startDate, realEndDate, 1) } returns remoteList
|
||||
coEvery { sdk.getExams(startDate, realEndDate) } returns remoteList
|
||||
coEvery { examDb.loadAll(1, 1, startDate, realEndDate) } returnsMany listOf(
|
||||
flowOf(remoteList.mapToEntities(semester)),
|
||||
flowOf(remoteList.mapToEntities(semester))
|
||||
|
@ -73,7 +73,7 @@ class ExamRemoteTest {
|
|||
// verify
|
||||
assertEquals(null, res.errorOrNull)
|
||||
assertEquals(2, res.dataOrNull?.size)
|
||||
coVerify { sdk.getExams(startDate, realEndDate, 1) }
|
||||
coVerify { sdk.getExams(startDate, realEndDate) }
|
||||
coVerify { examDb.loadAll(1, 1, startDate, realEndDate) }
|
||||
coVerify { examDb.insertAll(match { it.isEmpty() }) }
|
||||
coVerify { examDb.deleteAll(match { it.isEmpty() }) }
|
||||
|
@ -82,7 +82,7 @@ class ExamRemoteTest {
|
|||
@Test
|
||||
fun `force refresh with more items in remote`() {
|
||||
// prepare
|
||||
coEvery { sdk.getExams(startDate, realEndDate, 1) } returns remoteList
|
||||
coEvery { sdk.getExams(startDate, realEndDate) } returns remoteList
|
||||
coEvery { examDb.loadAll(1, 1, startDate, realEndDate) } returnsMany listOf(
|
||||
flowOf(remoteList.dropLast(1).mapToEntities(semester)),
|
||||
flowOf(remoteList.dropLast(1).mapToEntities(semester)), // after fetch end before save result
|
||||
|
@ -97,7 +97,7 @@ class ExamRemoteTest {
|
|||
// verify
|
||||
assertEquals(null, res.errorOrNull)
|
||||
assertEquals(2, res.dataOrNull?.size)
|
||||
coVerify { sdk.getExams(startDate, realEndDate, 1) }
|
||||
coVerify { sdk.getExams(startDate, realEndDate) }
|
||||
coVerify { examDb.loadAll(1, 1, startDate, realEndDate) }
|
||||
coVerify {
|
||||
examDb.insertAll(match {
|
||||
|
@ -110,7 +110,7 @@ class ExamRemoteTest {
|
|||
@Test
|
||||
fun `force refresh with more items in local`() {
|
||||
// prepare
|
||||
coEvery { sdk.getExams(startDate, realEndDate, 1) } returns remoteList.dropLast(1)
|
||||
coEvery { sdk.getExams(startDate, realEndDate) } returns remoteList.dropLast(1)
|
||||
coEvery { examDb.loadAll(1, 1, startDate, realEndDate) } returnsMany listOf(
|
||||
flowOf(remoteList.mapToEntities(semester)),
|
||||
flowOf(remoteList.mapToEntities(semester)), // after fetch end before save result
|
||||
|
@ -125,7 +125,7 @@ class ExamRemoteTest {
|
|||
// verify
|
||||
assertEquals(null, res.errorOrNull)
|
||||
assertEquals(1, res.dataOrNull?.size)
|
||||
coVerify { sdk.getExams(startDate, realEndDate, 1) }
|
||||
coVerify { sdk.getExams(startDate, realEndDate) }
|
||||
coVerify { examDb.loadAll(1, 1, startDate, realEndDate) }
|
||||
coVerify { examDb.insertAll(match { it.isEmpty() }) }
|
||||
coVerify {
|
||||
|
@ -137,7 +137,6 @@ class ExamRemoteTest {
|
|||
|
||||
private fun getExam(date: LocalDate) = SdkExam(
|
||||
subject = "",
|
||||
group = "",
|
||||
type = "",
|
||||
description = "",
|
||||
teacher = "",
|
||||
|
|
|
@ -9,13 +9,21 @@ import io.github.wulkanowy.data.toFirstResult
|
|||
import io.github.wulkanowy.getSemesterEntity
|
||||
import io.github.wulkanowy.getStudentEntity
|
||||
import io.github.wulkanowy.sdk.Sdk
|
||||
import io.github.wulkanowy.sdk.pojo.Grades
|
||||
import io.github.wulkanowy.utils.AutoRefreshHelper
|
||||
import io.mockk.*
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.Runs
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.coVerify
|
||||
import io.mockk.every
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.impl.annotations.SpyK
|
||||
import io.mockk.just
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.junit.Assert.*
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import java.time.LocalDate
|
||||
|
@ -72,7 +80,7 @@ class GradeRepositoryTest {
|
|||
createGradeApi(5, 4.0, of(2019, 2, 27), "Ocena z dnia logowania"),
|
||||
createGradeApi(5, 4.0, of(2019, 2, 28), "Ocena jeszcze nowsza")
|
||||
)
|
||||
coEvery { sdk.getGrades(1) } returns (remoteList to emptyList())
|
||||
coEvery { sdk.getGrades(1) } returns createGrades(remoteList)
|
||||
|
||||
coEvery { gradeDb.loadAll(1, 1) } returnsMany listOf(
|
||||
flowOf(listOf()), // empty because it is new user
|
||||
|
@ -122,7 +130,7 @@ class GradeRepositoryTest {
|
|||
),
|
||||
createGradeApi(2, 5.0, of(2019, 2, 28), "Ta jest już w ogóle nowa")
|
||||
)
|
||||
coEvery { sdk.getGrades(1) } returns (remoteList to emptyList())
|
||||
coEvery { sdk.getGrades(1) } returns createGrades(remoteList)
|
||||
|
||||
val localList = listOf(
|
||||
createGradeApi(5, 3.0, of(2019, 2, 25), "Jedna ocena"),
|
||||
|
@ -169,7 +177,7 @@ class GradeRepositoryTest {
|
|||
createGradeApi(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
createGradeApi(3, 5.0, of(2019, 2, 26), "Jakaś inna ocena")
|
||||
)
|
||||
coEvery { sdk.getGrades(1) } returns (remoteList to emptyList())
|
||||
coEvery { sdk.getGrades(1) } returns createGrades(remoteList)
|
||||
|
||||
val localList = listOf(
|
||||
createGradeApi(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
|
@ -200,7 +208,7 @@ class GradeRepositoryTest {
|
|||
createGradeApi(5, 3.0, of(2019, 2, 25), "Taka sama ocena"), // will be added...
|
||||
createGradeApi(3, 5.0, of(2019, 2, 26), "Jakaś inna ocena")
|
||||
)
|
||||
coEvery { sdk.getGrades(1) } returns (remoteList to emptyList())
|
||||
coEvery { sdk.getGrades(1) } returns createGrades(remoteList)
|
||||
|
||||
val localList = listOf(
|
||||
createGradeApi(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
|
@ -230,7 +238,7 @@ class GradeRepositoryTest {
|
|||
createGradeApi(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
createGradeApi(3, 5.0, of(2019, 2, 26), "Jakaś inna ocena")
|
||||
)
|
||||
coEvery { sdk.getGrades(1) } returns (remoteList to emptyList())
|
||||
coEvery { sdk.getGrades(1) } returns createGrades(remoteList)
|
||||
|
||||
coEvery { gradeDb.loadAll(1, 1) } returnsMany listOf(
|
||||
flowOf(listOf()),
|
||||
|
@ -250,7 +258,7 @@ class GradeRepositoryTest {
|
|||
fun `force refresh when remote is empty`() {
|
||||
// prepare
|
||||
val remoteList = emptyList<SdkGrade>()
|
||||
coEvery { sdk.getGrades(semester.semesterId) } returns (remoteList to emptyList())
|
||||
coEvery { sdk.getGrades(semester.semesterId) } returns createGrades(remoteList)
|
||||
|
||||
val localList = listOf(
|
||||
createGradeApi(5, 3.0, of(2019, 2, 25), "Taka sama ocena"),
|
||||
|
@ -284,4 +292,13 @@ class GradeRepositoryTest {
|
|||
weight = weight.toString(),
|
||||
weightValue = weight
|
||||
)
|
||||
|
||||
private fun createGrades(grades: List<SdkGrade>): Grades = Grades(
|
||||
details = grades,
|
||||
summary = listOf(),
|
||||
isAverage = false,
|
||||
isPoints = false,
|
||||
isForAdults = false,
|
||||
type = 0,
|
||||
)
|
||||
}
|
||||
|
|
|
@ -224,7 +224,7 @@ class MessageRepositoryTest {
|
|||
recipients = listOf(),
|
||||
subject = "",
|
||||
content = "Test",
|
||||
dateZoned = Instant.EPOCH.atZone(ZoneOffset.UTC),
|
||||
date = Instant.EPOCH.atZone(ZoneOffset.UTC),
|
||||
folderId = 1,
|
||||
unread = true,
|
||||
readBy = 1,
|
||||
|
|
|
@ -10,16 +10,21 @@ import io.github.wulkanowy.getStudentEntity
|
|||
import io.github.wulkanowy.sdk.Sdk
|
||||
import io.github.wulkanowy.sdk.pojo.Device
|
||||
import io.github.wulkanowy.utils.AutoRefreshHelper
|
||||
import io.mockk.*
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.Runs
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.coVerify
|
||||
import io.mockk.every
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.impl.annotations.SpyK
|
||||
import io.mockk.just
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import java.time.LocalDateTime.of
|
||||
import java.time.ZoneId
|
||||
import java.time.ZoneOffset
|
||||
import java.time.ZonedDateTime.of
|
||||
|
||||
class MobileDeviceRepositoryTest {
|
||||
|
||||
|
@ -134,9 +139,7 @@ class MobileDeviceRepositoryTest {
|
|||
id = 0,
|
||||
name = "",
|
||||
deviceId = "",
|
||||
createDate = of(2019, 5, day, 0, 0, 0),
|
||||
modificationDate = of(2019, 5, day, 0, 0, 0),
|
||||
createDateZoned = of(2019, 5, day, 0, 0, 0).atZone(ZoneId.systemDefault()),
|
||||
modificationDateZoned = of(2019, 5, day, 0, 0, 0).atZone(ZoneId.systemDefault())
|
||||
createDate = of(2019, 5, day, 0, 0, 0, 0, ZoneOffset.UTC),
|
||||
modificationDate = of(2019, 5, day, 0, 0, 0, 0, ZoneOffset.UTC),
|
||||
)
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ class SemesterRepositoryTest {
|
|||
coEvery { semesterDb.deleteAll(any()) } just Runs
|
||||
coEvery { semesterDb.insertSemesters(any()) } returns listOf()
|
||||
|
||||
val items = runBlocking { semesterRepository.getSemesters(student.copy(loginMode = Sdk.Mode.API.name)) }
|
||||
val items = runBlocking { semesterRepository.getSemesters(student.copy(loginMode = Sdk.Mode.HEBE.name)) }
|
||||
assertEquals(2, items.size)
|
||||
assertEquals(0, items[0].diaryId)
|
||||
}
|
||||
|
@ -215,6 +215,7 @@ class SemesterRepositoryTest {
|
|||
@Test(expected = RuntimeException::class)
|
||||
fun getCurrentSemester_emptyList() {
|
||||
coEvery { semesterDb.loadAll(student.studentId, student.classId) } returns emptyList()
|
||||
coEvery { sdk.getSemesters() } returns emptyList()
|
||||
|
||||
runBlocking { semesterRepository.getCurrentSemester(student) }
|
||||
}
|
||||
|
|
|
@ -1,81 +0,0 @@
|
|||
package io.github.wulkanowy.data.repositories
|
||||
|
||||
import io.github.wulkanowy.TestDispatchersProvider
|
||||
import io.github.wulkanowy.data.db.dao.SemesterDao
|
||||
import io.github.wulkanowy.data.db.dao.StudentDao
|
||||
import io.github.wulkanowy.sdk.Sdk
|
||||
import io.github.wulkanowy.sdk.pojo.Student
|
||||
import io.github.wulkanowy.utils.AppInfo
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.mockk
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
|
||||
class StudentTest {
|
||||
|
||||
@MockK
|
||||
private lateinit var mockSdk: Sdk
|
||||
|
||||
@MockK
|
||||
private lateinit var studentDb: StudentDao
|
||||
|
||||
@MockK
|
||||
private lateinit var semesterDb: SemesterDao
|
||||
|
||||
private lateinit var studentRepository: StudentRepository
|
||||
|
||||
@Before
|
||||
fun initApi() {
|
||||
MockKAnnotations.init(this)
|
||||
studentRepository = StudentRepository(
|
||||
context = mockk(),
|
||||
dispatchers = TestDispatchersProvider(),
|
||||
studentDb = studentDb,
|
||||
semesterDb = semesterDb,
|
||||
sdk = mockSdk,
|
||||
appInfo = AppInfo(),
|
||||
appDatabase = mockk()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testRemoteAll() {
|
||||
coEvery { mockSdk.getStudentsFromScrapper(any(), any(), any(), any()) } returns listOf(
|
||||
getStudent("test")
|
||||
)
|
||||
|
||||
val students = runBlocking { studentRepository.getStudentsScrapper("", "", "http://fakelog.cf", "") }
|
||||
assertEquals(1, students.size)
|
||||
assertEquals("test Kowalski", students.first().student.studentName)
|
||||
}
|
||||
|
||||
private fun getStudent(name: String): Student {
|
||||
return Student(
|
||||
email = "",
|
||||
symbol = "",
|
||||
studentId = 0,
|
||||
userLoginId = 0,
|
||||
userLogin = "",
|
||||
userName = "",
|
||||
studentName = name,
|
||||
studentSurname = "Kowalski",
|
||||
schoolSymbol = "",
|
||||
schoolShortName = "",
|
||||
schoolName = "",
|
||||
className = "",
|
||||
classId = 0,
|
||||
certificateKey = "",
|
||||
privateKey = "",
|
||||
loginMode = Sdk.Mode.SCRAPPER,
|
||||
mobileBaseUrl = "",
|
||||
loginType = Sdk.ScrapperLoginType.STANDARD,
|
||||
scrapperBaseUrl = "",
|
||||
isParent = false,
|
||||
semesters = emptyList()
|
||||
)
|
||||
}
|
||||
}
|
|
@ -10,12 +10,17 @@ import io.github.wulkanowy.data.toFirstResult
|
|||
import io.github.wulkanowy.getSemesterEntity
|
||||
import io.github.wulkanowy.getStudentEntity
|
||||
import io.github.wulkanowy.sdk.Sdk
|
||||
import io.github.wulkanowy.sdk.pojo.TimetableFull
|
||||
import io.github.wulkanowy.services.alarm.TimetableNotificationSchedulerHelper
|
||||
import io.github.wulkanowy.utils.AutoRefreshHelper
|
||||
import io.mockk.*
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.Runs
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.coVerify
|
||||
import io.mockk.every
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.impl.annotations.SpyK
|
||||
import io.mockk.just
|
||||
import io.mockk.mockk
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.junit.Assert.assertEquals
|
||||
|
@ -25,7 +30,7 @@ import java.time.LocalDate
|
|||
import java.time.LocalDateTime
|
||||
import java.time.LocalDateTime.of
|
||||
import java.time.ZoneId
|
||||
import io.github.wulkanowy.sdk.pojo.Timetable as SdkTimetable
|
||||
import io.github.wulkanowy.sdk.pojo.Lesson as SdkLesson
|
||||
|
||||
class TimetableRepositoryTest {
|
||||
|
||||
|
@ -62,18 +67,43 @@ class TimetableRepositoryTest {
|
|||
MockKAnnotations.init(this)
|
||||
every { refreshHelper.shouldBeRefreshed(any()) } returns false
|
||||
|
||||
timetableRepository = TimetableRepository(timetableDb, timetableAdditionalDao, timetableHeaderDao, sdk, timetableNotificationSchedulerHelper, refreshHelper)
|
||||
timetableRepository = TimetableRepository(
|
||||
timetableDb,
|
||||
timetableAdditionalDao,
|
||||
timetableHeaderDao,
|
||||
sdk,
|
||||
timetableNotificationSchedulerHelper,
|
||||
refreshHelper
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `force refresh without difference`() {
|
||||
val remoteList = listOf(
|
||||
createTimetableRemote(of(2021, 1, 4, 8, 0), 1, "123", "Język polski", "Jan Kowalski", false),
|
||||
createTimetableRemote(of(2021, 1, 4, 8, 50), 2, "124", "Język niemiecki", "Joanna Czarniecka", true)
|
||||
createTimetableRemote(
|
||||
start = of(2021, 1, 4, 8, 0),
|
||||
number = 1,
|
||||
room = "123",
|
||||
subject = "Język polski",
|
||||
teacher = "Jan Kowalski",
|
||||
changes = false
|
||||
),
|
||||
createTimetableRemote(
|
||||
start = of(2021, 1, 4, 8, 50),
|
||||
number = 2,
|
||||
room = "124",
|
||||
subject = "Język niemiecki",
|
||||
teacher = "Joanna Czarniecka",
|
||||
changes = true
|
||||
)
|
||||
)
|
||||
|
||||
// prepare
|
||||
coEvery { sdk.getTimetableFull(startDate, endDate) } returns TimetableFull(emptyList(), remoteList, emptyList())
|
||||
coEvery { sdk.getTimetable(startDate, endDate) } returns mockk {
|
||||
every { headers } returns emptyList()
|
||||
every { lessons } returns remoteList
|
||||
every { additional } returns emptyList()
|
||||
}
|
||||
coEvery { timetableDb.loadAll(1, 1, startDate, endDate) } returnsMany listOf(
|
||||
flowOf(remoteList.mapToEntities(semester)),
|
||||
flowOf(remoteList.mapToEntities(semester))
|
||||
|
@ -81,7 +111,14 @@ class TimetableRepositoryTest {
|
|||
coEvery { timetableDb.insertAll(any()) } returns listOf(1, 2, 3)
|
||||
coEvery { timetableDb.deleteAll(any()) } just Runs
|
||||
|
||||
coEvery { timetableAdditionalDao.loadAll(1, 1, startDate, endDate) } returns flowOf(listOf())
|
||||
coEvery {
|
||||
timetableAdditionalDao.loadAll(
|
||||
diaryId = 1,
|
||||
studentId = 1,
|
||||
from = startDate,
|
||||
end = endDate
|
||||
)
|
||||
} returns flowOf(listOf())
|
||||
coEvery { timetableAdditionalDao.deleteAll(emptyList()) } just Runs
|
||||
coEvery { timetableAdditionalDao.insertAll(emptyList()) } returns listOf(1, 2, 3)
|
||||
|
||||
|
@ -90,23 +127,36 @@ class TimetableRepositoryTest {
|
|||
coEvery { timetableHeaderDao.deleteAll(emptyList()) } just Runs
|
||||
|
||||
// execute
|
||||
val res = runBlocking { timetableRepository.getTimetable(student, semester, startDate, endDate, true).toFirstResult() }
|
||||
val res = runBlocking {
|
||||
timetableRepository.getTimetable(
|
||||
student = student,
|
||||
semester = semester,
|
||||
start = startDate,
|
||||
end = endDate,
|
||||
forceRefresh = true
|
||||
).toFirstResult()
|
||||
}
|
||||
|
||||
// verify
|
||||
assertEquals(null, res.errorOrNull)
|
||||
assertEquals(2, res.dataOrNull!!.lessons.size)
|
||||
coVerify { sdk.getTimetableFull(startDate, endDate) }
|
||||
coVerify { sdk.getTimetable(startDate, endDate) }
|
||||
coVerify { timetableDb.loadAll(1, 1, startDate, endDate) }
|
||||
coVerify { timetableDb.insertAll(match { it.isEmpty() }) }
|
||||
coVerify { timetableDb.deleteAll(match { it.isEmpty() }) }
|
||||
}
|
||||
|
||||
private fun createTimetableRemote(start: LocalDateTime, number: Int = 1, room: String = "", subject: String = "", teacher: String = "", changes: Boolean = false) = SdkTimetable(
|
||||
private fun createTimetableRemote(
|
||||
start: LocalDateTime,
|
||||
number: Int = 1,
|
||||
room: String = "",
|
||||
subject: String = "",
|
||||
teacher: String = "",
|
||||
changes: Boolean = false
|
||||
) = SdkLesson(
|
||||
number = number,
|
||||
start = start,
|
||||
end = start.plusMinutes(45),
|
||||
startZoned = start.atZone(ZoneId.systemDefault()),
|
||||
endZoned = start.plusMinutes(45).atZone(ZoneId.systemDefault()),
|
||||
start = start.atZone(ZoneId.systemDefault()),
|
||||
end = start.plusMinutes(45).atZone(ZoneId.systemDefault()),
|
||||
date = start.toLocalDate(),
|
||||
subject = subject,
|
||||
group = "",
|
||||
|
|
|
@ -207,7 +207,7 @@ class GetMailboxByStudentUseCaseTest {
|
|||
className = "",
|
||||
isCurrent = false,
|
||||
isParent = false,
|
||||
loginMode = Sdk.Mode.API.name,
|
||||
loginMode = Sdk.Mode.HEBE.name,
|
||||
loginType = Sdk.ScrapperLoginType.STANDARD.name,
|
||||
mobileBaseUrl = "",
|
||||
password = "",
|
||||
|
|
|
@ -456,7 +456,7 @@ class GradeAverageProviderTest {
|
|||
|
||||
@Test
|
||||
fun `force calc current semester average with custom modifiers in api mode`() {
|
||||
val student = student.copy(loginMode = Sdk.Mode.API.name)
|
||||
val student = student.copy(loginMode = Sdk.Mode.HEBE.name)
|
||||
|
||||
every { preferencesRepository.gradeAverageForceCalcFlow } returns flowOf(true)
|
||||
every { preferencesRepository.isOptionalArithmeticAverageFlow } returns flowOf(false)
|
||||
|
|
|
@ -3,11 +3,18 @@ package io.github.wulkanowy.ui.modules.login.form
|
|||
import io.github.wulkanowy.MainCoroutineRule
|
||||
import io.github.wulkanowy.data.pojos.RegisterUser
|
||||
import io.github.wulkanowy.data.repositories.StudentRepository
|
||||
import io.github.wulkanowy.sdk.Sdk
|
||||
import io.github.wulkanowy.sdk.scrapper.Scrapper
|
||||
import io.github.wulkanowy.ui.modules.login.LoginErrorHandler
|
||||
import io.github.wulkanowy.utils.AnalyticsHelper
|
||||
import io.mockk.*
|
||||
import io.github.wulkanowy.utils.AppInfo
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.Runs
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.every
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.just
|
||||
import io.mockk.verify
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
|
@ -30,13 +37,17 @@ class LoginFormPresenterTest {
|
|||
@MockK(relaxed = true)
|
||||
lateinit var analytics: AnalyticsHelper
|
||||
|
||||
@MockK
|
||||
lateinit var appInfo: AppInfo
|
||||
|
||||
private lateinit var presenter: LoginFormPresenter
|
||||
|
||||
private val registerUser = RegisterUser(
|
||||
email = "",
|
||||
password = "",
|
||||
login = "",
|
||||
baseUrl = "",
|
||||
scrapperBaseUrl = "",
|
||||
loginMode = Sdk.Mode.HEBE,
|
||||
loginType = Scrapper.LoginType.AUTO,
|
||||
symbols = listOf(),
|
||||
)
|
||||
|
@ -54,8 +65,14 @@ class LoginFormPresenterTest {
|
|||
every { loginFormView.setErrorPassInvalid(any()) } just Runs
|
||||
every { loginFormView.setErrorPassRequired(any()) } just Runs
|
||||
every { loginFormView.setErrorUsernameRequired() } just Runs
|
||||
every { appInfo.isDebug } returns false
|
||||
|
||||
presenter = LoginFormPresenter(repository, errorHandler, analytics)
|
||||
presenter = LoginFormPresenter(
|
||||
studentRepository = repository,
|
||||
loginErrorHandler = errorHandler,
|
||||
appInfo = appInfo,
|
||||
analytics = analytics,
|
||||
)
|
||||
presenter.onAttachView(loginFormView)
|
||||
}
|
||||
|
||||
|
|
|
@ -6,14 +6,22 @@ import io.github.wulkanowy.data.pojos.RegisterSymbol
|
|||
import io.github.wulkanowy.data.pojos.RegisterUnit
|
||||
import io.github.wulkanowy.data.pojos.RegisterUser
|
||||
import io.github.wulkanowy.data.repositories.StudentRepository
|
||||
import io.github.wulkanowy.sdk.Sdk
|
||||
import io.github.wulkanowy.sdk.scrapper.Scrapper
|
||||
import io.github.wulkanowy.services.sync.SyncManager
|
||||
import io.github.wulkanowy.ui.modules.login.LoginData
|
||||
import io.github.wulkanowy.ui.modules.login.LoginErrorHandler
|
||||
import io.github.wulkanowy.utils.AnalyticsHelper
|
||||
import io.github.wulkanowy.utils.AppInfo
|
||||
import io.mockk.*
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.Runs
|
||||
import io.mockk.clearMocks
|
||||
import io.mockk.coEvery
|
||||
import io.mockk.every
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.just
|
||||
import io.mockk.slot
|
||||
import io.mockk.verify
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
|
@ -76,6 +84,9 @@ class LoginStudentSelectPresenterTest {
|
|||
symbol = "",
|
||||
error = null,
|
||||
userName = "",
|
||||
keyId = null,
|
||||
privatePem = null,
|
||||
hebeBaseUrl = null,
|
||||
schools = listOf(school),
|
||||
)
|
||||
|
||||
|
@ -83,7 +94,8 @@ class LoginStudentSelectPresenterTest {
|
|||
email = "",
|
||||
password = "",
|
||||
login = "",
|
||||
baseUrl = "",
|
||||
scrapperBaseUrl = "",
|
||||
loginMode = Sdk.Mode.SCRAPPER,
|
||||
loginType = Scrapper.LoginType.AUTO,
|
||||
symbols = listOf(symbol),
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue