elm-review/tests/NoNoOpMsgTest.elm

79 lines
2.3 KiB
Elm
Raw Normal View History

2020-08-09 19:55:15 +03:00
module NoNoOpMsgTest exposing (all)
import NoNoOpMsg exposing (rule)
import Review.Test
import Test exposing (Test, describe, test)
message : String
message =
"Don't use NoOp, give it a better name"
details : List String
details =
[ "A Msg name should explain what happened. NoOp means that nothing happened."
2020-08-09 19:55:15 +03:00
, "Even if you don't care about handling the event, give it a name that describes what happened."
, "@noahzgordon's talk on it: https://www.youtube.com/watch?v=w6OVDBqergc"
]
all : Test
all =
describe "NoNoOpMsg"
[ test "should report an error when there is a NoOp Msg constructor" <|
\() ->
"""module A exposing (..)
type Msg
= NoOp
"""
|> Review.Test.run rule
|> Review.Test.expectErrors
[ Review.Test.error
{ message = message
, details = details
, under = "NoOp"
}
]
, test "should report an error when there is a Noop Msg constructor" <|
\() ->
"""module A exposing (..)
type Msg
= Noop
"""
|> Review.Test.run rule
|> Review.Test.expectErrors
[ Review.Test.error
{ message = message
, details = details
, under = "Noop"
}
]
, test "should not report an error when there is no custom type" <|
\() ->
"""module A exposing (..)
a = 1
"""
|> Review.Test.run rule
|> Review.Test.expectNoErrors
, test "should not report an error when the constructor name is not NoOp" <|
\() ->
"""module A exposing (..)
type Msg
= Foo
| Bar
"""
|> Review.Test.run rule
|> Review.Test.expectNoErrors
, test "should not report an error when we see NoOp in pattern matching" <|
\() ->
"""module A exposing (..)
update : Msg -> Model -> Model
update msg model =
case msg of
NoOp -> model
"""
|> Review.Test.run rule
|> Review.Test.expectNoErrors
]