diff --git a/src/main/scala/com/codacy/client/bitbucket/v2/Repository.scala b/src/main/scala/com/codacy/client/bitbucket/v2/Repository.scala index 9ca7697..3334cf7 100644 --- a/src/main/scala/com/codacy/client/bitbucket/v2/Repository.scala +++ b/src/main/scala/com/codacy/client/bitbucket/v2/Repository.scala @@ -20,7 +20,8 @@ case class Repository( language: Option[String], urls: Seq[RepositoryUrl], uuid: String, - slug: String + slug: String, + project: Option[Project] ) object Repository { @@ -32,6 +33,9 @@ object Repository { .localDateTimeReads(dateFormat) .orElse(Reads.localDateTimeReads(dateFormatWithoutMillis)) + implicit val projectReads: Reads[Project] = + ((__ \ "name").read[String] and (__ \ "key").read[String])(Project.apply _) + // format: off implicit val reader: Reads[Repository] = { ((__ \ "name").read[String] and @@ -47,7 +51,8 @@ object Repository { (__ \ "language").readNullable[String] and (__ \ "links").read[Map[String, JsValue]].map(parseLinks) and (__ \ "uuid" ).read[String] and - (__ \ "slug" ).read[String] + (__ \ "slug" ).read[String] and + (__ \ "project").readNullable[Project] ) (Repository.apply _) } // format: on diff --git a/src/test/scala/com/codacy/client/bitbucket/v2/RepositorySpecs.scala b/src/test/scala/com/codacy/client/bitbucket/v2/RepositorySpecs.scala index 3c36f56..7968d3f 100644 --- a/src/test/scala/com/codacy/client/bitbucket/v2/RepositorySpecs.scala +++ b/src/test/scala/com/codacy/client/bitbucket/v2/RepositorySpecs.scala @@ -127,6 +127,7 @@ class RepositorySpecs extends FlatSpec with Matchers { | "type": "repository", | "slug": "tweakmsg", | "is_private": false, + | "project": {"name": "tweakmsg", "key": "TWEAKMSG"}, | "description": "Mercurial (hg) extension to allow commenting on commit messages. Mainly written for practice reading & working with mercurial internals.\r\n" |}""".stripMargin val json = Json.parse(input) @@ -135,6 +136,7 @@ class RepositorySpecs extends FlatSpec with Matchers { value.fold(e => fail(s"$e"), r => { r.name shouldBe "tweakmsg" r.owner.display_name shouldBe "John Mulligan" + r.project.map(_.name) shouldBe Some("tweakmsg") }) }