package com.evolutiongaming.skafka import cats.effect.IO import org.scalatest.matchers.{MatchResult, Matcher} trait IOMatchers { class IOResultMatcher[-T](expected: T) extends Matcher[IO[T]] { def apply(left: IO[T]): MatchResult = MatchResult( matches = left.unsafeRunSync() == expected, rawFailureMessage = s"IO result didn't equal $expected", rawNegatedFailureMessage = s"IO result equals $expected" ) } def produce[T](expected: T) = new IOResultMatcher[T](expected) def verify[T, U](job: IO[T])(check: T => U): U = { check(job.unsafeRunSync()) } } object IOMatchers extends IOMatchers