Skip to content
This repository has been archived by the owner on May 28, 2019. It is now read-only.

Commit

Permalink
Merge pull request #72 from buildo/71-allow_to_ignore_routes
Browse files Browse the repository at this point in the history
#71: Allow to ignore routes (closes #71)
  • Loading branch information
gabro authored Jan 23, 2019
2 parents a1d441d + 8c9b2e1 commit 21b9920
Show file tree
Hide file tree
Showing 5 changed files with 131 additions and 99 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ import scala.meta.contrib._

package object controller {

implicit val extractVarMods: Extract[Decl.Def, Mod] =
Extract(_.mods)

private[this] def extractMethod(m: Decl.Def): String =
m.mods.collectFirst {
case Mod.Annot(Ctor.Ref.Name("query")) => "get"
Expand Down Expand Up @@ -77,9 +80,9 @@ package object controller {

def extractRoute(source: Source, t: Defn.Trait): List[intermediate.Route] = {
val methods = t.collect {
case m: Decl.Def if m.mods.collect {
case Mod.Annot(Ctor.Ref.Name("query" | "command")) => ()
}.nonEmpty =>
case m: Decl.Def
if (m.hasMod(mod"@query") || m.hasMod(mod"@command")) &&
!m.hasMod(mod"@metarpheusIgnore") =>
m
}

Expand Down
6 changes: 6 additions & 0 deletions core/shared/src/test/resources/fixtures/controllers.scala
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ trait CampingController {
*/
@command
def create(camping: Camping, parameters: OperationParameters): Future[Either[String, Camping]]

@command @metarpheusIgnore
def ignoreMe(ignore: IgnoreMe): Future[Either[String, String]]
}

class CampingControllerImpl(
Expand Down Expand Up @@ -87,4 +90,7 @@ class CampingControllerImpl(

@command
def create(camping: Camping): Future[Either[String, Camping]] = ???

@command
def ignoreMe(ignore: IgnoreMe): Future[Either[String, String]] = ???
}
4 changes: 4 additions & 0 deletions core/shared/src/test/resources/fixtures/models.scala
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,7 @@ object Surface {
/* Not sure campings exist */
Another
}

case class IgnoreMe(
ignore: String
)
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,17 @@ class ApiSuite extends FunSuite {
), _, _, _, _, _, _, _) => ()
// format: on
}.isDefined)

assert(api.models.collectFirst {
case CaseClass(
"IgnoreMe",
_,
_,
_,
_
) =>
()
}.isEmpty)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,115 +21,123 @@ class ModelSuite extends FunSuite {
import intermediate._

val expected =
List(
CaseClass(
name = "CampingName",
members = List(
CaseClass.Member(name = "s", tpe = Type.Name("String"), desc = None)
),
desc = None,
isValueClass = true,
List(
CaseClass(
name = "CampingName",
members = List(
CaseClass.Member(name = "s", tpe = Type.Name("String"), desc = None)
),
CaseClass(
name = "Camping",
members = List(
CaseClass.Member(name = "id", tpe = Type.Name("UUID"), desc = None),
CaseClass.Member(name = "name", tpe = Type.Name("CampingName"), desc = None),
CaseClass
.Member(name = "size", tpe = Type.Name("Int"), desc = Some("number of tents")),
CaseClass.Member(
name = "location",
tpe = Type.Name("CampingLocation"),
desc = Some("camping location")
),
CaseClass.Member(
name = "rating",
tpe = Type.Name("CampingRating"),
desc = Some("camping rating")
),
CaseClass.Member(
name = "a",
tpe = Type.Name("A"),
desc = None
)
desc = None,
isValueClass = true,
),
CaseClass(
name = "Camping",
members = List(
CaseClass.Member(name = "id", tpe = Type.Name("UUID"), desc = None),
CaseClass.Member(name = "name", tpe = Type.Name("CampingName"), desc = None),
CaseClass
.Member(name = "size", tpe = Type.Name("Int"), desc = Some("number of tents")),
CaseClass.Member(
name = "location",
tpe = Type.Name("CampingLocation"),
desc = Some("camping location")
),
CaseClass.Member(
name = "rating",
tpe = Type.Name("CampingRating"),
desc = Some("camping rating")
),
desc = Some("Represents a camping site"),
typeParams = List(
Type.Name("A")
CaseClass.Member(
name = "a",
tpe = Type.Name("A"),
desc = None
)
),
CaseClass(
name = "Swan",
members = List(
CaseClass.Member(
name = "color",
tpe = Type.Name("String"),
desc = Some("color of the swan")
)
),
desc = Some("Represents a swan")
desc = Some("Represents a camping site"),
typeParams = List(
Type.Name("A")
)
),
CaseClass(
name = "Swan",
members = List(
CaseClass.Member(
name = "color",
tpe = Type.Name("String"),
desc = Some("color of the swan")
)
),
CaseEnum(
name = "CampingLocation",
values = List(
CaseEnum.Member(
name = "Seaside",
desc = Some("Near the sea")
),
CaseEnum.Member(
name = "Mountains",
desc = Some("High up")
)
desc = Some("Represents a swan")
),
CaseEnum(
name = "CampingLocation",
values = List(
CaseEnum.Member(
name = "Seaside",
desc = Some("Near the sea")
),
desc = Some("Location of the camping site")
CaseEnum.Member(
name = "Mountains",
desc = Some("High up")
)
),
CaseEnum(
name = "CampingRating",
values = List(
CaseEnum.Member(
name = "High",
desc = Some("High")
),
CaseEnum.Member(
name = "Medium",
desc = Some("Medium")
),
CaseEnum.Member(
name = "Low",
desc = Some("Low")
)
desc = Some("Location of the camping site")
),
CaseEnum(
name = "CampingRating",
values = List(
CaseEnum.Member(
name = "High",
desc = Some("High")
),
CaseEnum.Member(
name = "Medium",
desc = Some("Medium")
),
desc = Some("Rating of the camping site")
CaseEnum.Member(
name = "Low",
desc = Some("Low")
)
),
CaseEnum(
name = "Planet",
values = List(
CaseEnum.Member(
name = "Earth",
desc = Some("Earth is a blue planet")
),
CaseEnum.Member(
name = "Another",
desc = Some("Not sure campings exist")
)
desc = Some("Rating of the camping site")
),
CaseEnum(
name = "Planet",
values = List(
CaseEnum.Member(
name = "Earth",
desc = Some("Earth is a blue planet")
),
desc = Some("Planet of the camping site")
CaseEnum.Member(
name = "Another",
desc = Some("Not sure campings exist")
)
),
CaseEnum(
name = "Surface",
values = List(
CaseEnum.Member(
name = "Sand",
desc = Some("Sandy")
),
CaseEnum.Member(
name = "Earth",
desc = Some("Dirt")
)
desc = Some("Planet of the camping site")
),
CaseEnum(
name = "Surface",
values = List(
CaseEnum.Member(
name = "Sand",
desc = Some("Sandy")
),
desc = Some("Surface of the camping site")
)
CaseEnum.Member(
name = "Earth",
desc = Some("Dirt")
)
),
desc = Some("Surface of the camping site")
),
CaseClass(
name = "IgnoreMe",
members = List(
CaseClass.Member(name = "ignore", tpe = Type.Name("String"), desc = None)
),
desc = None,
isValueClass = false,
)
)
val comparison = DiffShow.diff[List[Model]](expected, result)
assert(comparison.isIdentical, comparison.string)
}
Expand Down

0 comments on commit 21b9920

Please sign in to comment.