diff --git a/src/Unused/Aliases.hs b/src/Unused/Aliases.hs index 257ce9e..49173c1 100644 --- a/src/Unused/Aliases.hs +++ b/src/Unused/Aliases.hs @@ -24,6 +24,7 @@ groupedTermsAndAliases as ms = aliases = map toAlias as termsAndAliases :: [TermAlias] -> [String] -> [String] +termsAndAliases [] = id termsAndAliases as = nub . map T.unpack . concatMap (allAliases aliases . T.pack) where diff --git a/test/Unused/AliasesSpec.hs b/test/Unused/AliasesSpec.hs new file mode 100644 index 0000000..b476715 --- /dev/null +++ b/test/Unused/AliasesSpec.hs @@ -0,0 +1,21 @@ +module Unused.AliasesSpec where + +import Test.Hspec +import Unused.Aliases +import Unused.ResultsClassifier.Types (TermAlias(..)) + +main :: IO () +main = hspec spec + +spec :: Spec +spec = parallel $ + describe "termsAndAliases" $ do + it "returns the terms if no aliases are provided" $ + termsAndAliases [] ["method_1", "method_2"] `shouldBe` ["method_1", "method_2"] + + it "adds aliases to the list of terms" $ do + let predicateAlias = TermAlias "%s?" "be_%s" + let pluralizeAlias = TermAlias "really_%s" "very_%s" + + termsAndAliases [predicateAlias, pluralizeAlias] ["awesome?", "really_cool"] + `shouldBe` ["awesome?", "be_awesome", "really_cool", "very_cool"] diff --git a/test/Unused/ParserSpec.hs b/test/Unused/ParserSpec.hs index a61411c..c215503 100644 --- a/test/Unused/ParserSpec.hs +++ b/test/Unused/ParserSpec.hs @@ -30,6 +30,18 @@ spec = parallel $ result `shouldBe` Map.fromList [ ("method_name", r1Results), ("other", r2Results) ] + it "parses when no config is provided" $ do + let r1Matches = [ TermMatch "method_name" "app/path/foo.rb" 1 + , TermMatch "method_name" "app/path/other.rb" 5 + , TermMatch "method_name" "spec/path/foo_spec.rb" 10 + ] + let r1Results = TermResults "method_name" r1Matches (Occurrences 1 10) (Occurrences 2 6) (Occurrences 3 16) (Removal Low "used frequently") + + let result = parseResults [] $ SearchResults r1Matches + + result `shouldBe` + Map.fromList [ ("method_name", r1Results) ] + it "handles aliases correctly" $ do let r1Matches = [ TermMatch "admin?" "app/path/user.rb" 3 ] diff --git a/unused.cabal b/unused.cabal index 7880292..1354630 100644 --- a/unused.cabal +++ b/unused.cabal @@ -95,6 +95,7 @@ test-suite unused-test , Unused.TermSearch.InternalSpec , Unused.UtilSpec , Unused.Cache.FindArgsFromIgnoredPathsSpec + , Unused.AliasesSpec , Paths_unused ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall -Werror default-language: Haskell2010