Code.require_file "../test_helper.exs", __DIR__ Code.require_file "../../lib/helpers/complete.exs", __DIR__ defmodule CompleteTest do use ExUnit.Case, async: true import Alchemist.Helpers.Complete defmodule MyModule do def say_hi, do: true end test "return completion candidates for 'List'" do assert run('List') == ['List.', 'Chars', 'first/1', 'last/1', 'to_atom/1', 'to_existing_atom/1', 'to_float/1', 'to_string/1', 'to_tuple/1', 'wrap/1', 'zip/1', 'delete/2', 'delete_at/2', 'duplicate/2', 'keysort/2', 'flatten/1', 'flatten/2', 'to_integer/1', 'to_integer/2', 'foldl/3', 'foldr/3', 'insert_at/3', 'keydelete/3', 'keymember?/3', 'keytake/3', 'replace_at/3', 'update_at/3', 'keyfind/4', 'keyreplace/4', 'keystore/4'] end test "return completion candidates for 'Str'" do assert run('Str') == ['Str', 'Stream', 'String', 'StringIO'] end test "return completion candidates for 'List.del'" do assert run('List.del') == ['List.delete', 'delete/2', 'delete_at/2'] end test "return completion candidates for module with alias" do Application.put_env(:"alchemist.el", :aliases, [{MyList, List}]) assert run('MyList.del') == ['MyList.delete', 'delete/2', 'delete_at/2'] end test "return completion candidates for functions from import" do imports = [MyModule] assert run('say', imports) == ["say_hi/0"] end end