mirror of
https://github.com/dillonkearns/elm-pages-v3-beta.git
synced 2024-12-25 12:52:27 +03:00
Handle splat route for generating variants.
This commit is contained in:
parent
fdefee7036
commit
2115b9be9d
@ -176,7 +176,14 @@ endingToVariantName ending =
|
||||
( name ++ "__", Just ( decapitalize name, Elm.Annotation.maybe Elm.Annotation.string ) )
|
||||
|
||||
RequiredSplat ->
|
||||
( "SPLAT_", Just ( "splat", Elm.Annotation.string ) )
|
||||
( "SPLAT_"
|
||||
, Just
|
||||
( "splat"
|
||||
, Elm.Annotation.tuple
|
||||
Elm.Annotation.string
|
||||
(Elm.Annotation.list Elm.Annotation.string)
|
||||
)
|
||||
)
|
||||
|
||||
OptionalSplat ->
|
||||
( "SPLAT__", Just ( "splat", Elm.Annotation.string ) )
|
||||
|
@ -2,7 +2,8 @@ module Pages.RouteParamsTest exposing (..)
|
||||
|
||||
import Elm
|
||||
import Elm.Annotation
|
||||
import Expect
|
||||
import Elm.ToString
|
||||
import Expect exposing (Expectation)
|
||||
import Pages.Internal.RoutePattern as RoutePattern
|
||||
import Test exposing (Test, describe, test)
|
||||
|
||||
@ -71,10 +72,9 @@ suite =
|
||||
, describe "toRouteVariant"
|
||||
[ test "root route" <|
|
||||
\() ->
|
||||
RoutePattern.fromModuleName []
|
||||
|> Maybe.map RoutePattern.toVariant
|
||||
|> Expect.equal
|
||||
(Just (Elm.variant "Index"))
|
||||
[]
|
||||
|> expectRouteDefinition
|
||||
(Elm.variant "Index")
|
||||
, test "static-only route" <|
|
||||
\() ->
|
||||
RoutePattern.fromModuleName [ "About" ]
|
||||
@ -83,16 +83,44 @@ suite =
|
||||
(Just (Elm.variant "About"))
|
||||
, test "dynamic param" <|
|
||||
\() ->
|
||||
RoutePattern.fromModuleName [ "User", "Id_" ]
|
||||
|> Maybe.map RoutePattern.toVariant
|
||||
|> Expect.equal
|
||||
(Just
|
||||
[ "User", "Id_" ]
|
||||
|> expectRouteDefinition
|
||||
(Elm.variantWith "User__Id_"
|
||||
[ Elm.Annotation.record
|
||||
[ ( "id", Elm.Annotation.string )
|
||||
]
|
||||
]
|
||||
)
|
||||
, test "required splat" <|
|
||||
\() ->
|
||||
[ "Username_", "Repo_", "Blob", "SPLAT_" ]
|
||||
|> expectRouteDefinition
|
||||
(Elm.variantWith "Username___Repo___Blob__SPLAT_"
|
||||
[ Elm.Annotation.record
|
||||
[ ( "username", Elm.Annotation.string )
|
||||
, ( "repo", Elm.Annotation.string )
|
||||
, ( "splat"
|
||||
, Elm.Annotation.tuple
|
||||
Elm.Annotation.string
|
||||
(Elm.Annotation.list Elm.Annotation.string)
|
||||
)
|
||||
]
|
||||
]
|
||||
)
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
expectRouteDefinition : Elm.Variant -> List String -> Expectation
|
||||
expectRouteDefinition expected moduleName =
|
||||
RoutePattern.fromModuleName moduleName
|
||||
|> Maybe.map (RoutePattern.toVariant >> toString)
|
||||
|> Maybe.withDefault "<ERROR>"
|
||||
|> Expect.equal (expected |> toString)
|
||||
|
||||
|
||||
toString : Elm.Variant -> String
|
||||
toString variants =
|
||||
Elm.customType "Route" [ variants ]
|
||||
|> Elm.ToString.declaration
|
||||
|> .body
|
||||
|
Loading…
Reference in New Issue
Block a user