diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 634bd0a..7158808 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -193,7 +193,7 @@ jobs: run: mix ecto.migrate - name: Run coverage run: | - MIX_ENV=test mix coveralls --no-start --trace + MIX_ENV=test mix coveralls services: pg: image: postgres:16 diff --git a/apps/core/lib/core.ex b/apps/core/lib/core.ex index 1c53942..64ae323 100644 --- a/apps/core/lib/core.ex +++ b/apps/core/lib/core.ex @@ -2,17 +2,4 @@ defmodule Core do @moduledoc """ Documentation for `Core`. """ - - @doc """ - Hello world. - - ## Examples - - iex> Core.hello() - :world - - """ - def hello do - :world - end end diff --git a/apps/core/lib/core/schema/user.ex b/apps/core/lib/core/schema/user.ex index e90c691..4ba9878 100644 --- a/apps/core/lib/core/schema/user.ex +++ b/apps/core/lib/core/schema/user.ex @@ -34,7 +34,6 @@ defmodule GoEscuelaLms.Core.Schema.User do |> cast(attrs, [:full_name, :email, :birth_date, :role, :password_hash]) |> validate_required([:full_name, :password_hash]) |> validate_format(:email, ~r/^[^\s]+@[^\s]+$/, message: "must have the @ sign and no spaces") - |> validate_length(:email, max: 160) |> put_password_hash() end diff --git a/apps/core/test/core/schema/course_test.exs b/apps/core/test/core/schema/course_test.exs index 7b8c012..7b18b9b 100644 --- a/apps/core/test/core/schema/course_test.exs +++ b/apps/core/test/core/schema/course_test.exs @@ -1,6 +1,5 @@ defmodule Core.CourseTest do use ExUnit.Case - use Core.DataCase alias GoEscuelaLms.Core.Schema.Course @@ -8,7 +7,7 @@ defmodule Core.CourseTest do @valid_attrs %{name: "Course I", description: "lorem ipsum", enabled: true} @invalid_attrs %{name: nil, description: nil} - test "create_course/1 with valid data creates a user" do + test "create/1 with valid data creates a course" do assert {:ok, %Course{} = course} = Course.create(@valid_attrs) assert course.name == "Course I" assert course.description == "lorem ipsum" diff --git a/apps/core/test/core/schema/user_test.exs b/apps/core/test/core/schema/user_test.exs new file mode 100644 index 0000000..f8e529d --- /dev/null +++ b/apps/core/test/core/schema/user_test.exs @@ -0,0 +1,31 @@ +defmodule Core.UserTest do + use ExUnit.Case + + alias GoEscuelaLms.Core.Schema.User + + describe "users" do + @valid_attrs %{ + full_name: "Jhon doe", + email: "jhon.doe@example.com", + password_hash: "pass123", + role: "student" + } + @invalid_attrs %{} + + test "create/1 with valid data creates a user" do + assert {:ok, %User{} = user} = User.create(@valid_attrs) + assert user.full_name == "Jhon doe" + assert user.email == "jhon.doe@example.com" + end + + test "create_user/1 with invalid data returns error changeset" do + assert {:error, %Ecto.Changeset{}} = User.create(@invalid_attrs) + end + + test "email must be valid" do + attrs = %{@valid_attrs | email: "example"} + changeset = User.changeset(%User{}, attrs) + refute changeset.valid? + end + end +end diff --git a/apps/core/test/core_test.exs b/apps/core/test/core_test.exs index 661aff1..3132152 100644 --- a/apps/core/test/core_test.exs +++ b/apps/core/test/core_test.exs @@ -1,8 +1,4 @@ defmodule CoreTest do use ExUnit.Case doctest Core - - test "greets the world" do - assert Core.hello() == :world - end end diff --git a/apps/core/test/support/data_case.ex b/apps/core/test/support/data_case.ex deleted file mode 100644 index bd281e7..0000000 --- a/apps/core/test/support/data_case.ex +++ /dev/null @@ -1,46 +0,0 @@ -defmodule Core.DataCase do - @moduledoc """ - This module defines the setup for tests requiring - access to the application's data layer. - - You may define functions here to be used as helpers in - your tests. - - Finally, if the test case interacts with the database, - we enable the SQL sandbox, so changes done to the database - are reverted at the end of every test. If you are using - PostgreSQL, you can even run database tests asynchronously - by setting `use SupervisorService.DataCase, async: true`, although - this option is not recommended for other databases. - """ - - use ExUnit.CaseTemplate - - alias Ecto.Adapters.SQL.Sandbox - - using do - quote do - import Ecto - import Ecto.Changeset - import Ecto.Query - import Core.DataCase - end - end - - @app Mix.Project.config()[:app] - - setup tags do - for repo <- Application.get_env(@app, :ecto_repos) do - :ok = Ecto.Adapters.SQL.Sandbox.checkout(repo) - end - - unless tags[:async] do - for repo <- Application.get_env(@app, :ecto_repos) do - # :ok = Ecto.Adapters.SQL.Sandbox.checkout(repo) - Sandbox.mode(repo, {:shared, self()}) - end - end - - :ok - end -end