Skip to content

Commit

Permalink
Run a Fetch into a Monix Task
Browse files Browse the repository at this point in the history
  • Loading branch information
purrgrammer committed Nov 12, 2018
1 parent d9af77c commit 71efad6
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 1 deletion.
62 changes: 62 additions & 0 deletions examples/src/test/scala/MonixExample.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/*
* Copyright 2016-2018 47 Degrees, LLC. <http://www.47deg.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import cats.effect._

import scala.concurrent._

import monix.execution._
import monix.eval._
import monix.eval.instances._

import fetch._

import org.scalatest.{AsyncFreeSpec, Matchers, WordSpec}

class MonixExample extends AsyncFreeSpec with Matchers {
implicit val scheduler: Scheduler = Scheduler.io(name = "test-scheduler")
override val executionContext: ExecutionContext = scheduler
implicit val t: Timer[Task] = scheduler.timer
implicit val cs: ContextShift[Task] = scheduler.contextShift

val NumberSource = new DataSource[Int, Int] {
override def name = "Number source"

override def fetch[F[_]](id: Int)(
implicit C: ConcurrentEffect[F]
): F[Option[Int]] =
C.pure(Option(id))
}

def number[F[_]: ConcurrentEffect](id: Int): Fetch[F, Int] =
Fetch(id, NumberSource)

"We can run a Fetch into a Monix Task" in {
def fetch[F[_]: ConcurrentEffect]: Fetch[F, Int] =
number(1)

val task = Fetch.runEnv[Task](fetch)

task
.map({
case (env, result) => {
result shouldEqual 1
env.rounds.size shouldEqual 1
}
})
.runToFuture
}
}
3 changes: 2 additions & 1 deletion project/ProjectPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ object ProjectPlugin extends AutoPlugin {
%%("doobie-h2"),
"org.http4s" %% "http4s-blaze-client" % "0.19.0-M2",
"org.http4s" %% "http4s-circe" % "0.19.0-M2",
"redis.clients" % "jedis" % "2.9.0"
"redis.clients" % "jedis" % "2.9.0",
"io.monix" %% "monix" % "3.0.0-RC2"
) ++ commonCrossDependencies
}

Expand Down

0 comments on commit 71efad6

Please sign in to comment.