diff --git a/lua/elixir/projectionist/init.lua b/lua/elixir/projectionist/init.lua index 6a93d1ec..a1dd2720 100644 --- a/lua/elixir/projectionist/init.lua +++ b/lua/elixir/projectionist/init.lua @@ -75,6 +75,25 @@ local config = { "end", }, }, + ["lib/**/controllers/*_json.ex"] = { + type = "json", + alternate = "test/{dirname}/controllers/{basename}_json_test.exs", + template = { + "defmodule {dirname|camelcase|capitalize}.{basename|camelcase|capitalize}JSON do", + "end", + }, + }, + ["test/**/controllers/*_json_test.exs"] = { + type = "test", + alternate = "lib/{dirname}/controllers/{basename}_json.ex", + template = { + "defmodule {dirname|camelcase|capitalize}.{basename|camelcase|capitalize}JSONTest do", + " use {dirname|camelcase|capitalize}.ConnCase, async: true", + "", + " alias {dirname|camelcase|capitalize}.{basename|camelcase|capitalize}JSON", + "end", + }, + }, ["lib/**/components/*.ex"] = { type = "component", alternate = "test/{dirname}/components/{basename}_test.exs", @@ -95,6 +114,26 @@ local config = { "end", }, }, + ["lib/**/live/*_component.ex"] = { + type = "livecomponent", + alternate = "test/{dirname}/live/{basename}_component_test.exs", + template = { + "defmodule {dirname|camelcase|capitalize}.{basename|camelcase|capitalize}Component do", + " use {dirname|camelcase|capitalize}, :live_component", + "end", + }, + }, + ["test/**/live/*_component_test.exs"] = { + type = "test", + alternate = "lib/{dirname}/live/{basename}_component.ex", + template = { + "defmodule {dirname|camelcase|capitalize}.{basename|camelcase|capitalize}ComponentTest do", + " use {dirname|camelcase|capitalize}.ConnCase", + "", + " import Phoenix.LiveViewTest", + "end", + }, + }, ["lib/**/live/*_live.ex"] = { type = "liveview", alternate = "test/{dirname}/live/{basename}_live_test.exs", diff --git a/tests/projectionist_spec.lua b/tests/projectionist_spec.lua index a1246c03..5786a269 100644 --- a/tests/projectionist_spec.lua +++ b/tests/projectionist_spec.lua @@ -46,6 +46,16 @@ describe("projectionist", function() }) end) + it("Ejson", function() + vim.cmd.Ejson("project_a_web/user") + vim.cmd.write() + + assert.are.same( + vim.fn.readfile("lib/project_a_web/controllers/user_json.ex"), + { "defmodule ProjectAWeb.UserJSON do", "end" } + ) + end) + it("Ecomponent", function() vim.cmd.Ecomponent("project_a_web/user") vim.cmd.write() @@ -66,6 +76,16 @@ describe("projectionist", function() ) end) + it("Elivecomponent", function() + vim.cmd.Elivecomponent("project_a_web/user") + vim.cmd.write() + + assert.are.same( + vim.fn.readfile("lib/project_a_web/live/user_component.ex"), + { "defmodule ProjectAWeb.UserComponent do", " use ProjectAWeb, :live_component", "end" } + ) + end) + it("Etask", function() vim.cmd.Etask("foo.bar") vim.cmd.write()