elm-review/tests/NoImportingEverythingTest.elm

109 lines
4.0 KiB
Elm
Raw Normal View History

2019-06-03 01:30:24 +03:00
module NoImportingEverythingTest exposing (all)
import Lint.Rule.NoImportingEverything exposing (Configuration, rule)
import Lint.Test exposing (LintResult)
2019-06-26 14:47:00 +03:00
import Test exposing (Test, describe, test)
2019-06-03 01:30:24 +03:00
testRule : Configuration -> String -> LintResult
testRule options =
Lint.Test.run (rule options)
2019-06-03 01:30:24 +03:00
tests : List Test
tests =
[ test "should not report imports that do not expose anything" <|
\() ->
"""module A exposing (..)
import Html
import Http"""
2019-06-03 01:30:24 +03:00
|> testRule { exceptions = [] }
|> Lint.Test.expectNoErrors
2019-06-03 01:30:24 +03:00
, test "should not report imports that expose functions by name" <|
\() ->
"""module A exposing (..)
import Html exposing (a)
import Http exposing (a, b)"""
2019-06-03 01:30:24 +03:00
|> testRule { exceptions = [] }
|> Lint.Test.expectNoErrors
2019-06-03 01:30:24 +03:00
, test "should report imports that expose everything" <|
\() ->
"""module A exposing (..)
import Html exposing (..)"""
2019-06-03 01:30:24 +03:00
|> testRule { exceptions = [] }
|> Lint.Test.expectErrors
[ Lint.Test.error
{ message = "Do not expose everything from Html"
, under = ".."
}
|> Lint.Test.atExactly { start = { row = 2, column = 23 }, end = { row = 2, column = 25 } }
]
2019-06-03 01:30:24 +03:00
, test "should report imports from sub-modules" <|
\() ->
"""module A exposing (a)
import Html.App exposing (..)"""
2019-06-03 01:30:24 +03:00
|> testRule { exceptions = [] }
|> Lint.Test.expectErrors
[ Lint.Test.error
{ message = "Do not expose everything from Html.App"
, under = ".."
}
]
2019-06-03 01:30:24 +03:00
, test "should report imports from sub-modules (multiple dots)" <|
\() ->
"""module A exposing (a)
import Html.Foo.Bar exposing (..)"""
2019-06-03 01:30:24 +03:00
|> testRule { exceptions = [] }
|> Lint.Test.expectErrors
[ Lint.Test.error
{ message = "Do not expose everything from Html.Foo.Bar"
, under = ".."
}
]
2019-06-03 01:30:24 +03:00
, test "should not report imports that expose everything that are in the exception list" <|
\() ->
"""module A exposing (a)
import Html exposing (..)"""
2019-06-03 01:30:24 +03:00
|> testRule { exceptions = [ "Html" ] }
|> Lint.Test.expectNoErrors
2019-06-03 01:30:24 +03:00
, test "should not report imports from sub-modules that are in the exception list" <|
\() ->
"""module A exposing (a)
import Html.App exposing (..)"""
2019-06-03 01:30:24 +03:00
|> testRule { exceptions = [ "Html.App" ] }
|> Lint.Test.expectNoErrors
2019-06-03 01:30:24 +03:00
, test "should not report imports from sub-modules (multiple dots)" <|
\() ->
"""module A exposing (a)
import Html.Foo.Bar exposing (..)"""
2019-06-03 01:30:24 +03:00
|> testRule { exceptions = [ "Html.Foo.Bar" ] }
|> Lint.Test.expectNoErrors
2019-06-03 01:30:24 +03:00
, test "should report imports whose parent is ignored" <|
\() ->
"""module A exposing (a)
import Html.Foo.Bar exposing (..)"""
2019-06-03 01:30:24 +03:00
|> testRule { exceptions = [ "Html" ] }
|> Lint.Test.expectErrors
[ Lint.Test.error
{ message = "Do not expose everything from Html.Foo.Bar"
, under = ".."
}
]
2019-06-03 01:30:24 +03:00
, test "should report imports whose sub-module is ignored" <|
\() ->
"""module A exposing (a)
import Html exposing (..)"""
2019-06-03 01:30:24 +03:00
|> testRule { exceptions = [ "Html.App" ] }
|> Lint.Test.expectErrors
[ Lint.Test.error
{ message = "Do not expose everything from Html"
, under = ".."
}
]
]
2019-06-03 01:30:24 +03:00
all : Test
all =
describe "NoImportingEverything" tests