Alexis Hernandez
7 years ago
1 changed files with 87 additions and 0 deletions
@ -0,0 +1,87 @@ |
|||
package controllers |
|||
|
|||
import com.alexitc.playsonify.core.ApplicationResult |
|||
import com.xsn.explorer.data.BalanceBlockingDataHandler |
|||
import com.xsn.explorer.helpers.DataHelper |
|||
import com.xsn.explorer.models.Balance |
|||
import com.xsn.explorer.models.base._ |
|||
import controllers.common.MyAPISpec |
|||
import org.scalactic.Good |
|||
import play.api.inject.bind |
|||
import play.api.libs.json.JsValue |
|||
import play.api.test.Helpers._ |
|||
|
|||
class BalancesControllerSpec extends MyAPISpec { |
|||
|
|||
val balances = List( |
|||
Balance( |
|||
address = DataHelper.createAddress("XxQ7j37LfuXgsLd5DZAwFKhT3s2ZMkW85F"), |
|||
received = BigDecimal("1000"), |
|||
spent = BigDecimal("0")), |
|||
|
|||
Balance( |
|||
address = DataHelper.createAddress("Xbh5pJdBNm8J9PxnEmwVcuQKRmZZ7DkpcF"), |
|||
received = BigDecimal("1000"), |
|||
spent = BigDecimal("100")), |
|||
|
|||
Balance( |
|||
address = DataHelper.createAddress("XfAATXtkRgCdMTrj2fxHvLsKLLmqAjhEAt"), |
|||
received = BigDecimal("10000"), |
|||
spent = BigDecimal("1000")), |
|||
|
|||
Balance( |
|||
address = DataHelper.createAddress("XiHW7SR56UPHeXKwcpeVsE4nUfkHv5RqE3"), |
|||
received = BigDecimal("1000"), |
|||
spent = BigDecimal("500"))) |
|||
.sortBy(_.available) |
|||
.reverse |
|||
|
|||
val dataHandler = new BalanceBlockingDataHandler { |
|||
|
|||
override def upsert(balance: Balance): ApplicationResult[Balance] = ??? |
|||
|
|||
override def getRichest(query: PaginatedQuery): ApplicationResult[PaginatedResult[Balance]] = { |
|||
val list = balances.drop(query.offset.int).take(query.limit.int) |
|||
val result = PaginatedResult( |
|||
offset = query.offset, |
|||
limit = query.limit, |
|||
total = Count(balances.size), |
|||
data = list) |
|||
|
|||
Good(result) |
|||
} |
|||
|
|||
} |
|||
val application = guiceApplicationBuilder |
|||
.overrides(bind[BalanceBlockingDataHandler].to(dataHandler)) |
|||
.build() |
|||
|
|||
"GET /balances" should { |
|||
"get the richest addresses" in { |
|||
val query = PaginatedQuery(Offset(1), Limit(2)) |
|||
val expected1 = balances(1) |
|||
val expected2 = balances(2) |
|||
val response = GET(s"/balances?offset=${query.offset.int}&limit=${query.limit.int}") |
|||
|
|||
status(response) mustEqual OK |
|||
|
|||
val json = contentAsJson(response) |
|||
(json \ "total").as[Int] mustEqual balances.size |
|||
(json \ "offset").as[Int] mustEqual query.offset.int |
|||
(json \ "limit").as[Int] mustEqual query.limit.int |
|||
|
|||
val list = (json \ "data").as[List[JsValue]] |
|||
list.size mustEqual 2 |
|||
|
|||
(list(0) \ "address").as[String] mustEqual expected1.address.string |
|||
(list(0) \ "available").as[BigDecimal] mustEqual expected1.available |
|||
(list(0) \ "received").as[BigDecimal] mustEqual expected1.received |
|||
(list(0) \ "spent").as[BigDecimal] mustEqual expected1.spent |
|||
|
|||
(list(1) \ "address").as[String] mustEqual expected2.address.string |
|||
(list(1) \ "available").as[BigDecimal] mustEqual expected2.available |
|||
(list(1) \ "received").as[BigDecimal] mustEqual expected2.received |
|||
(list(1) \ "spent").as[BigDecimal] mustEqual expected2.spent |
|||
} |
|||
} |
|||
} |
Loading…
Reference in new issue