From 08f7f4571e5bdd21f1debe427b110f51ef7e6150 Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Sat, 12 Dec 2020 20:15:14 +0300 Subject: [PATCH] Release 0.9.11 change loggin, more tests, cosmetic changes --- src/main/resources/logback.xml | 3 ++- .../ffxivbis/http/api/v1/HttpHandler.scala | 4 ++-- .../me/arcanis/ffxivbis/http/view/BiSView.scala | 4 ++-- .../arcanis/ffxivbis/http/view/LootView.scala | 4 ++-- .../arcanis/ffxivbis/http/view/PlayerView.scala | 4 ++-- .../arcanis/ffxivbis/http/view/UserView.scala | 4 ++-- .../me/arcanis/ffxivbis/models/PieceType.scala | 3 ++- .../me/arcanis/ffxivbis/utils/Implicits.scala | 1 + .../scala/me/arcanis/ffxivbis/Fixtures.scala | 17 +++++++++++++++++ .../ffxivbis/service/bis/BisProviderTest.scala | 6 ++++++ version.sbt | 2 +- 11 files changed, 39 insertions(+), 13 deletions(-) diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 402138e..71ccb7b 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -8,9 +8,10 @@ - + + diff --git a/src/main/scala/me/arcanis/ffxivbis/http/api/v1/HttpHandler.scala b/src/main/scala/me/arcanis/ffxivbis/http/api/v1/HttpHandler.scala index af7bced..6a85c11 100644 --- a/src/main/scala/me/arcanis/ffxivbis/http/api/v1/HttpHandler.scala +++ b/src/main/scala/me/arcanis/ffxivbis/http/api/v1/HttpHandler.scala @@ -17,7 +17,7 @@ import spray.json._ trait HttpHandler extends StrictLogging { this: JsonSupport => - implicit def exceptionHandler: ExceptionHandler = ExceptionHandler { + def exceptionHandler: ExceptionHandler = ExceptionHandler { case ex: IllegalArgumentException => complete(StatusCodes.BadRequest, ErrorResponse(ex.getMessage)) @@ -26,7 +26,7 @@ trait HttpHandler extends StrictLogging { this: JsonSupport => complete(StatusCodes.InternalServerError, ErrorResponse("unknown server error")) } - implicit def rejectionHandler: RejectionHandler = + def rejectionHandler: RejectionHandler = RejectionHandler.default .mapRejectionResponse { case response @ HttpResponse(_, _, entity: HttpEntity.Strict, _) => diff --git a/src/main/scala/me/arcanis/ffxivbis/http/view/BiSView.scala b/src/main/scala/me/arcanis/ffxivbis/http/view/BiSView.scala index 52d119c..81d3f23 100644 --- a/src/main/scala/me/arcanis/ffxivbis/http/view/BiSView.scala +++ b/src/main/scala/me/arcanis/ffxivbis/http/view/BiSView.scala @@ -69,7 +69,7 @@ class BiSView(override val storage: ActorRef[Message], def bisAction(playerId: PlayerId, piece: String, pieceType: String)(fn: Piece => Future[Unit]) = getPiece(playerId, piece, pieceType) match { - case Some(item) => fn(item).map(_ => ()) + case Some(item) => fn(item) case _ => Future.failed(new Error(s"Could not construct piece from `$piece ($pieceType)`")) } @@ -79,7 +79,7 @@ class BiSView(override val storage: ActorRef[Message], bisAction(playerId, piece, pieceType)(addPieceBiS(playerId, _)) case (Some(piece), Some(pieceType), "remove", _) => bisAction(playerId, piece, pieceType)(removePieceBiS(playerId, _)) - case (_, _, "create", Some(link)) => putBiS(playerId, link).map(_ => ()) + case (_, _, "create", Some(link)) => putBiS(playerId, link) case _ => Future.failed(new Error(s"Could not perform $action")) } case _ => Future.failed(new Error(s"Could not construct player id from `$player`")) diff --git a/src/main/scala/me/arcanis/ffxivbis/http/view/LootView.scala b/src/main/scala/me/arcanis/ffxivbis/http/view/LootView.scala index 1fb5f5f..db10da8 100644 --- a/src/main/scala/me/arcanis/ffxivbis/http/view/LootView.scala +++ b/src/main/scala/me/arcanis/ffxivbis/http/view/LootView.scala @@ -70,8 +70,8 @@ class LootView(override val storage: ActorRef[Message]) PlayerId(partyId, player) match { case Some(playerId) => (getPiece(playerId), action) match { - case (Some(piece), "add") => addPieceLoot(playerId, piece, maybeFreeLoot).map(_ => ()) - case (Some(piece), "remove") => removePieceLoot(playerId, piece).map(_ => ()) + case (Some(piece), "add") => addPieceLoot(playerId, piece, maybeFreeLoot) + case (Some(piece), "remove") => removePieceLoot(playerId, piece) case _ => Future.failed(new Error(s"Could not construct piece from `$maybePiece ($maybePieceType)`")) } case _ => Future.failed(new Error(s"Could not construct player id from `$player`")) diff --git a/src/main/scala/me/arcanis/ffxivbis/http/view/PlayerView.scala b/src/main/scala/me/arcanis/ffxivbis/http/view/PlayerView.scala index 4530f6c..343b325 100644 --- a/src/main/scala/me/arcanis/ffxivbis/http/view/PlayerView.scala +++ b/src/main/scala/me/arcanis/ffxivbis/http/view/PlayerView.scala @@ -68,8 +68,8 @@ class PlayerView(override val storage: ActorRef[Message], Player(-1, partyId, playerId.job, playerId.nick, BiS.empty, Seq.empty, maybeLink, maybePriority.getOrElse(0)) (action, maybePlayerId) match { - case ("add", Some(playerId)) => addPlayer(player(playerId)).map(_ => ()) - case ("remove", Some(playerId)) => removePlayer(playerId).map(_ => ()) + case ("add", Some(playerId)) => addPlayer(player(playerId)) + case ("remove", Some(playerId)) => removePlayer(playerId) case _ => Future.failed(new Error(s"Could not perform $action with $nick ($job)")) } } diff --git a/src/main/scala/me/arcanis/ffxivbis/http/view/UserView.scala b/src/main/scala/me/arcanis/ffxivbis/http/view/UserView.scala index a9de452..84aa310 100644 --- a/src/main/scala/me/arcanis/ffxivbis/http/view/UserView.scala +++ b/src/main/scala/me/arcanis/ffxivbis/http/view/UserView.scala @@ -68,10 +68,10 @@ class UserView(override val storage: ActorRef[Message]) action match { case "add" => (maybePassword, permission) match { - case (Some(password), Some(permission)) => addUser(User(partyId, username, password, permission), isHashedPassword = false).map(_ => ()) + case (Some(password), Some(permission)) => addUser(User(partyId, username, password, permission), isHashedPassword = false) case _ => Future.failed(new Error(s"Could not construct permission/password from `$maybePermission`/`$maybePassword`")) } - case "remove" => removeUser(partyId, username).map(_ => ()) + case "remove" => removeUser(partyId, username) case _ => Future.failed(new Error(s"Could not perform $action")) } } diff --git a/src/main/scala/me/arcanis/ffxivbis/models/PieceType.scala b/src/main/scala/me/arcanis/ffxivbis/models/PieceType.scala index 43c0b61..88cf4b4 100644 --- a/src/main/scala/me/arcanis/ffxivbis/models/PieceType.scala +++ b/src/main/scala/me/arcanis/ffxivbis/models/PieceType.scala @@ -7,9 +7,10 @@ object PieceType { case object Crafted extends PieceType case object Tome extends PieceType case object Savage extends PieceType + case object Artifact extends PieceType lazy val available: Seq[PieceType] = - Seq(Crafted, Tome, Savage) + Seq(Crafted, Tome, Savage, Artifact) def withName(pieceType: String): PieceType = available.find(_.toString.equalsIgnoreCase(pieceType)) match { diff --git a/src/main/scala/me/arcanis/ffxivbis/utils/Implicits.scala b/src/main/scala/me/arcanis/ffxivbis/utils/Implicits.scala index ec43870..0c01e61 100644 --- a/src/main/scala/me/arcanis/ffxivbis/utils/Implicits.scala +++ b/src/main/scala/me/arcanis/ffxivbis/utils/Implicits.scala @@ -17,6 +17,7 @@ import scala.concurrent.duration.FiniteDuration import scala.language.implicitConversions object Implicits { + implicit def getBooleanFromOptionString(maybeYes: Option[String]): Boolean = maybeYes.map(_.toLowerCase) match { case Some("yes" | "on") => true case _ => false diff --git a/src/test/scala/me/arcanis/ffxivbis/Fixtures.scala b/src/test/scala/me/arcanis/ffxivbis/Fixtures.scala index a672992..f238227 100644 --- a/src/test/scala/me/arcanis/ffxivbis/Fixtures.scala +++ b/src/test/scala/me/arcanis/ffxivbis/Fixtures.scala @@ -19,10 +19,27 @@ object Fixtures { Ring(pieceType = PieceType.Tome, Job.DNC, "right ring") ) ) + lazy val bis2: BiS = BiS( + Seq( + Weapon(pieceType = PieceType.Savage ,Job.DNC), + Head(pieceType = PieceType.Tome, Job.DNC), + Body(pieceType = PieceType.Savage, Job.DNC), + Hands(pieceType = PieceType.Tome, Job.DNC), + Waist(pieceType = PieceType.Tome, Job.DNC), + Legs(pieceType = PieceType.Savage, Job.DNC), + Feet(pieceType = PieceType.Tome, Job.DNC), + Ears(pieceType = PieceType.Savage, Job.DNC), + Neck(pieceType = PieceType.Savage, Job.DNC), + Wrist(pieceType = PieceType.Savage, Job.DNC), + Ring(pieceType = PieceType.Tome, Job.DNC, "left ring"), + Ring(pieceType = PieceType.Savage, Job.DNC, "right ring") + ) + ) lazy val link: String = "https://ffxiv.ariyala.com/19V5R" lazy val link2: String = "https://ffxiv.ariyala.com/1A0WM" lazy val link3: String = "https://etro.gg/gearset/26a67536-b4ce-4adc-a46a-f70e348bb138" + lazy val link4: String = "https://etro.gg/gearset/865fc886-994f-4c28-8fc1-4379f160a916" lazy val lootWeapon: Piece = Weapon(pieceType = PieceType.Tome, Job.AnyJob) lazy val lootBody: Piece = Body(pieceType = PieceType.Savage, Job.AnyJob) diff --git a/src/test/scala/me/arcanis/ffxivbis/service/bis/BisProviderTest.scala b/src/test/scala/me/arcanis/ffxivbis/service/bis/BisProviderTest.scala index 3d20613..a5aef87 100644 --- a/src/test/scala/me/arcanis/ffxivbis/service/bis/BisProviderTest.scala +++ b/src/test/scala/me/arcanis/ffxivbis/service/bis/BisProviderTest.scala @@ -29,5 +29,11 @@ class BisProviderTest extends ScalaTestWithActorTestKit(Settings.withRandomDatab probe.expectMessage(askTimeout, Fixtures.bis) } + "get best in slot set (etro 2)" in { + val probe = testKit.createTestProbe[BiS]() + provider ! DownloadBiS(Fixtures.link4, Job.DNC, probe.ref) + probe.expectMessage(askTimeout, Fixtures.bis2) + } + } } diff --git a/version.sbt b/version.sbt index 757cbe7..53acfcf 100644 --- a/version.sbt +++ b/version.sbt @@ -1 +1 @@ -version := "0.9.10" +version := "0.9.11"