52 lines
2.2 KiB
Scala
52 lines
2.2 KiB
Scala
package fetch
|
|
|
|
import cats.effect.IO
|
|
import cats.effect.unsafe.implicits.global
|
|
import cats.implicits.toTraverseOps
|
|
import org.scalatest.funsuite.AnyFunSuite
|
|
import org.scalatest.matchers.should.Matchers
|
|
import org.typelevel.log4cats.slf4j.Slf4jLogger
|
|
|
|
import java.time.LocalDateTime
|
|
|
|
class FetchServiceSpec extends AnyFunSuite with Matchers {
|
|
// def fetchInRange: IO[Unit] = {
|
|
// val from = LocalDateTime.of(2023, 4, 28, 10, 0)
|
|
// val to = LocalDateTime.of(2023, 4, 28, 13, 30)
|
|
// for {
|
|
// log <- Slf4jLogger.create[IO]
|
|
// fetch <- FetchService.of
|
|
// // fetchResultEither <- fetch.fetchFromDate(LocalDate.of(2023, 4, 28)).attempt
|
|
// fetchResultEither <- fetch.fetchInRange(from, to).attempt
|
|
// fetchServiceError = fetchResultEither.left.toOption.map(e => s"FetchServiceError: ${e.getMessage}").toList
|
|
// fetchResult = fetchResultEither.getOrElse(List.empty)
|
|
// (fetchErrors, successDownloads) = fetchResult.partitionMap(identity)
|
|
// dbService <- DBService.of
|
|
// saveResults <- successDownloads.traverse { case (name, content) => dbService.save(name, content) }
|
|
// (saveErrors, successSaves) = saveResults.partitionMap(identity)
|
|
// successes = successDownloads.map(s => s"fetched: ${s._1}") ++ successSaves.map(s => s"saved: $s")
|
|
// errors = fetchServiceError ++ fetchErrors.map(e => s"FetchError: ${e.getMessage}") ++ saveErrors.map(e => s"SaveError: ${e.getMessage}")
|
|
// _ <- log.info(s"errors: $errors")
|
|
// _ <- log.info(s"successes: $successes")
|
|
// } yield (successes, errors)
|
|
// }
|
|
//
|
|
// def fetchSingleFile: IO[Unit] = {
|
|
// for {
|
|
// fetch <- FetchService.of
|
|
// fetchResultEither <- fetch.fetchSingleFile("20230524_0030.csv").attempt
|
|
// fetchResultEither <- fetch.fetchSingleFile("20230522_0130.csv").attempt
|
|
// fetchServiceError = fetchResultEither.left.toOption.map(e => s"FetchServiceError: ${e.getMessage}").toList
|
|
// fetchResult = fetchResultEither.flatMap(res => res.flatMap(aaa => {
|
|
// println(s"fffffff: ${aaa._1}")
|
|
// Right(aaa._1)
|
|
// }))
|
|
// // _ = println(s"${fetchResult.map()}")
|
|
// } yield ()
|
|
// }
|
|
//
|
|
// def main(args: Array[String]): Unit = {
|
|
// run.unsafeRunSync()
|
|
// }
|
|
}
|