Refactor to FileService and PostgresService

This commit is contained in:
Guntis Smaukstelis
2023-10-22 23:51:59 +03:00
parent e2c19024a2
commit aa4fa57adb
10 changed files with 89 additions and 78 deletions
@@ -9,12 +9,12 @@ import java.time.format.DateTimeFormatter
import java.time.{LocalDate, LocalDateTime}
class DBServiceSpec extends AnyFunSuite with Matchers {
class FileServiceSpec extends AnyFunSuite with Matchers {
private val dateFormatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmm")
test("getDateFileNames should return correct file names") {
val dbService = DBService.of.unsafeRunSync()
val datesList = dbService.getDateFileNames(LocalDate.of(2023, 5, 15))
val fileService = FileService.of.unsafeRunSync()
val datesList = fileService.getDateFileNames(LocalDate.of(2023, 5, 15))
.unsafeRunSync()
val expectedFileNames = (0 to 23).toList
@@ -28,8 +28,8 @@ class DBServiceSpec extends AnyFunSuite with Matchers {
val from = LocalDateTime.parse("20230513_2200", dateFormatter)
val to = LocalDateTime.parse("20230516_1230", dateFormatter)
val dbService = DBService.of.unsafeRunSync()
val lines = dbService.getInRange(from, to).unsafeRunSync()
val fileService = FileService.of.unsafeRunSync()
val lines = fileService.getInRange(from, to).unsafeRunSync()
lines.length shouldBe 2142
}
@@ -41,8 +41,8 @@ class DBServiceSpec extends AnyFunSuite with Matchers {
LocalDate.parse("20230501", monthFormatter),
LocalDate.parse("20230601", monthFormatter),
)
val dbService = DBService.of.unsafeRunSync()
val dates = dbService.getDatesByMonths(monthList).unsafeRunSync()
val fileService = FileService.of.unsafeRunSync()
val dates = fileService.getDatesByMonths(monthList).unsafeRunSync()
dates should not be empty
@@ -56,19 +56,19 @@ class DBServiceSpec extends AnyFunSuite with Matchers {
}
test("DBService.save should return correct result") {
val dbService = DBService.of.unsafeRunSync()
val fileService = FileService.of.unsafeRunSync()
val fileName = "testFile.txt"
val fileContent = "test content..."
dbService.save(fileName, fileContent).unsafeRunSync() shouldEqual fileName
fileService.save(fileName, fileContent).unsafeRunSync() shouldEqual fileName
}
test("DBService.save returns error on invalid file name") {
val dbService = DBService.of.unsafeRunSync()
val fileService = FileService.of.unsafeRunSync()
val fileName = "/invalid/file/name"
val fileContent = "test content..."
val result = dbService.save(fileName, fileContent).attempt.unsafeRunSync()
val result = fileService.save(fileName, fileContent).attempt.unsafeRunSync()
result match {
case Left(e) =>
+1 -1
View File
@@ -3,7 +3,7 @@ package fetch
import cats.effect.IO
import cats.effect.unsafe.implicits.global
import cats.implicits.toTraverseOps
import db.DBService
import db.FileService
import org.scalatest.funsuite.AnyFunSuite
import org.scalatest.matchers.should.Matchers
import org.typelevel.log4cats.slf4j.Slf4jLogger
@@ -4,7 +4,7 @@ import base.IOSuite
import cats.effect.{Clock, IO}
import cats.effect.kernel.Ref
import cats.implicits.catsSyntaxTuple3Semigroupal
import db.DBService
import db.FileService
import org.scalatest.matchers.should.Matchers
import org.scalatest.wordspec.AsyncWordSpec
import org.typelevel.log4cats.slf4j.Slf4jLogger
@@ -19,7 +19,7 @@ class FileFetchSchedulerSpec extends AsyncWordSpec with Matchers with IOSuite {
refFetch <- Ref.of[IO, Option[(String, String)]](None)
refScheduler <- Ref.of[IO, Option[Either[Throwable, (String, String)]]](None)
log <- Slf4jLogger.create[IO]
dbService = new DBService(log) {
fileService = new FileService(log) {
override def save(fileName: String, content: String): IO[String] = {
refDb.set(Some(fileName)).as(fileName)
}
@@ -40,7 +40,7 @@ class FileFetchSchedulerSpec extends AsyncWordSpec with Matchers with IOSuite {
}
}
res = new FileFetchScheduler(dbService, fetchService, fileNameService, scheduler, log)
res = new FileFetchScheduler(fileService, fetchService, fileNameService, scheduler, log)
.run.compile.drain *>
(refDb.get, refFetch.get, refScheduler.get).tupled.map { case (db, fetch, scheduler) =>
db shouldBe Some("file_test")
+5 -5
View File
@@ -1,7 +1,7 @@
package parse
import cats.effect.unsafe.implicits.global
import db.DBService
import db.FileService
import org.scalatest.funsuite.AnyFunSuite
import org.scalatest.matchers.should.Matchers
import parse.Aggregate.{AggregateKey, DoubleValue, TimeDoubleList, UserQuery}
@@ -19,9 +19,9 @@ class ParserSpec extends AnyFunSuite with Matchers {
val to = LocalDateTime.parse("20230516_0942", formatter)
val userQuery = UserQuery(List("Bauska", "Dagda", "Daugavgrīva", "Rīga"), "precipitation", AggregateKey.Sum, ChronoUnit.HOURS)
val dbService = DBService.of.unsafeRunSync()
val fileService = FileService.of.unsafeRunSync()
val lines = dbService.getInRange(from, to).unsafeRunSync()
val lines = fileService.getInRange(from, to).unsafeRunSync()
val parsed = Parser.queryData(userQuery, lines)
parsed shouldBe HashMap(
@@ -38,9 +38,9 @@ class ParserSpec extends AnyFunSuite with Matchers {
val to = LocalDateTime.parse("20230516_0800", formatter)
val userQuery = UserQuery(List("Rīga"), "precipitation", AggregateKey.List, ChronoUnit.HOURS)
val dbService = DBService.of.unsafeRunSync()
val fileService = FileService.of.unsafeRunSync()
val lines = dbService.getInRange(from, to).unsafeRunSync()
val lines = fileService.getInRange(from, to).unsafeRunSync()
val parsed = Parser.queryData(userQuery, lines)
parsed shouldBe HashMap(