Skip to content

Commit

Permalink
fix up cI
Browse files Browse the repository at this point in the history
  • Loading branch information
nmenag committed Mar 31, 2024
1 parent 6a5c1a4 commit ad56d0b
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 28 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ jobs:
uses: josecfreittas/elixir-coverage-feedback-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
coverage_threshold: 70
coverage_threshold: 80
services:
pg:
image: postgres:16
Expand Down
5 changes: 4 additions & 1 deletion apps/core/test/core/schema/topic_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@ defmodule Core.TopicTest do

describe "find/1" do
test "when exist", %{course: course} do
topic = insert!(:topic, course_id: course.uuid) |> Repo.preload(:activities)
topic =
insert!(:topic, course_id: course.uuid)
|> Repo.preload(:course)
|> Repo.preload(:activities)

assert Topic.find(topic.uuid) == topic
end
Expand Down
2 changes: 1 addition & 1 deletion apps/web/lib/web/controllers/topics/topics_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ defmodule Web.Topics.TopicsController do
end

def delete(conn, _params) do
topic = conn.assigns.topic
topic = conn.assigns.object

case topic |> Topic.delete() do
{:ok, topic} ->
Expand Down
2 changes: 1 addition & 1 deletion apps/web/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ defmodule Web.MixProject do
deps: deps(),
test_coverage: [
summary: [
threshold: 70
threshold: 80
]
]
]
Expand Down
105 changes: 81 additions & 24 deletions apps/web/test/web/controllers/topics_controller_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ defmodule Web.TopicsControllerTest do
import Web.Auth.Guardian
import Core.Factory

alias GoEscuelaLms.Core.Schema.Topic

setup do
course = insert!(:course)
student = insert!(:user, role: :student)
Expand Down Expand Up @@ -60,11 +62,11 @@ defmodule Web.TopicsControllerTest do
{:ok, token, _} = encode_and_sign(instructor, %{}, token_type: :access)

conn =
session_conn()
|> put_session(:user_id, instructor.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> post(~p"/api/courses/#{course.uuid}/topics", %{name: nil})
session_conn()
|> put_session(:user_id, instructor.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> post(~p"/api/courses/#{course.uuid}/topics", %{name: nil})

assert json_response(conn, 422)["errors"] == %{"detail" => %{"name" => ["is required"]}}
end
Expand All @@ -76,11 +78,11 @@ defmodule Web.TopicsControllerTest do
name = Faker.Lorem.word()

conn =
session_conn()
|> put_session(:user_id, instructor.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> post(~p"/api/courses/#{course.uuid}/topics", %{name: name})
session_conn()
|> put_session(:user_id, instructor.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> post(~p"/api/courses/#{course.uuid}/topics", %{name: name})

response = json_response(conn, 200)["data"]

Expand Down Expand Up @@ -121,6 +123,7 @@ defmodule Web.TopicsControllerTest do
test "invalid enrollment", %{instructor: instructor, course: course} do
topic = insert!(:topic, course_id: course.uuid)
{:ok, token, _} = encode_and_sign(instructor, %{}, token_type: :access)

conn =
session_conn()
|> put_session(:user_id, instructor.uuid)
Expand All @@ -137,11 +140,11 @@ defmodule Web.TopicsControllerTest do
{:ok, token, _} = encode_and_sign(instructor, %{}, token_type: :access)

conn =
session_conn()
|> put_session(:user_id, instructor.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> put(~p"/api/topics/#{topic.uuid}", %{name: nil})
session_conn()
|> put_session(:user_id, instructor.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> put(~p"/api/topics/#{topic.uuid}", %{name: nil})

assert json_response(conn, 422)["errors"] == %{"detail" => %{"name" => ["is required"]}}
end
Expand All @@ -154,11 +157,11 @@ defmodule Web.TopicsControllerTest do
name = Faker.Lorem.word()

conn =
session_conn()
|> put_session(:user_id, instructor.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> put(~p"/api/topics/#{topic.uuid}", %{name: name})
session_conn()
|> put_session(:user_id, instructor.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> put(~p"/api/topics/#{topic.uuid}", %{name: name})

response = json_response(conn, 200)["data"]

Expand All @@ -167,9 +170,63 @@ defmodule Web.TopicsControllerTest do
end
end

# describe "delete/2" do
# test "unauthorized", %{user: user} do
describe "delete/2" do
test "unauthorized", %{student: student, course: course} do
topic = insert!(:topic, course_id: course.uuid)

{:ok, token, _} = encode_and_sign(student, %{}, token_type: :access)

conn =
session_conn()
|> put_session(:user_id, student.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> delete(~p"/api/topics/#{topic.uuid}", %{})

assert json_response(conn, 403)["errors"] == %{"detail" => "Forbidden resource"}
end

test "invalid topic", %{organizer: organizer} do
{:ok, token, _} = encode_and_sign(organizer, %{}, token_type: :access)

conn =
session_conn()
|> put_session(:user_id, organizer.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> delete(~p"/api/topics/#{Faker.UUID.v4()}", %{})

assert json_response(conn, 422)["errors"] == %{"detail" => "topic is invalid"}
end

test "invalid enrollment", %{instructor: instructor, course: course} do
topic = insert!(:topic, course_id: course.uuid)
{:ok, token, _} = encode_and_sign(instructor, %{}, token_type: :access)

conn =
session_conn()
|> put_session(:user_id, instructor.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> delete(~p"/api/topics/#{topic.uuid}", %{})

assert json_response(conn, 403)["errors"] == %{"detail" => "Forbidden resource"}
end

test "valid delete", %{instructor: instructor, course: course} do
topic = insert!(:topic, course_id: course.uuid)
insert!(:enrollment, course_id: course.uuid, user_id: instructor.uuid)
{:ok, token, _} = encode_and_sign(instructor, %{}, token_type: :access)

# end
# end
conn =
session_conn()
|> put_session(:user_id, instructor.uuid)
|> put_req_header("accept", "application/json")
|> put_req_header("authorization", "Bearer " <> token)
|> delete(~p"/api/topics/#{topic.uuid}")

assert json_response(conn, 200)
assert Topic.find(topic.uuid) == nil
end
end
end

0 comments on commit ad56d0b

Please sign in to comment.