@@ -18,10 +18,11 @@ package github4s.integration
1818
1919import cats .data .NonEmptyList
2020import cats .effect .{IO , Resource }
21+ import cats .implicits ._
2122import github4s .GHError .NotFoundError
22- import github4s .Github
2323import github4s .domain ._
2424import github4s .utils .{BaseIntegrationSpec , Integration }
25+ import github4s .{GHResponse , Github }
2526
2627trait ReposSpec extends BaseIntegrationSpec {
2728
@@ -61,6 +62,39 @@ trait ReposSpec extends BaseIntegrationSpec {
6162 response.statusCode shouldBe okStatusCode
6263 }
6364
65+ " Repos >> getRelease" should " return the expected repos when a valid org is provided" taggedAs Integration in {
66+
67+ val responseResource = for {
68+ client <- clientResource
69+
70+ gh : Github [IO ] = Github [IO ](client, accessToken)
71+ releasesIO =
72+ gh.repos.listReleases(validRepoOwner, validRepoName, None , headers = headerUserAgent)
73+
74+ releasesResponse <- Resource .liftF(releasesIO)
75+
76+ releases <- Resource .liftF(IO .fromEither(releasesResponse.result))
77+
78+ releasesAreFoundCheck : IO [List [(Release , GHResponse [Option [Release ]])]] = releases.map {
79+ release =>
80+ val releaseIO = gh.repos
81+ .getRelease(release.id, validRepoOwner, validRepoName, headers = headerUserAgent)
82+ releaseIO.map(r => release -> r)
83+ }.sequence
84+
85+ } yield releasesAreFoundCheck
86+
87+ val responseList : List [(Release , GHResponse [Option [Release ]])] = responseResource
88+ .use(identity)
89+ .unsafeRunSync()
90+
91+ forAll(responseList) {
92+ case (release, response) =>
93+ testIsRight[Option [Release ]](response, r => r should contain(release))
94+ response.statusCode shouldBe okStatusCode
95+ }
96+ }
97+
6498 " Repos >> LatestRelease" should " return the expected repos when a valid org is provided" taggedAs Integration in {
6599 val response = clientResource
66100 .use { client =>
0 commit comments