Skip to content

Commit

Permalink
add test to activity create quiz
Browse files Browse the repository at this point in the history
  • Loading branch information
nmenag committed Mar 16, 2024
1 parent c0ae62b commit f7e6c63
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 12 deletions.
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,6 @@ jobs:
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
coverage_threshold: 80
# working_directory: ./your_project_directory
services:
pg:
image: postgres:16
Expand Down
7 changes: 3 additions & 4 deletions apps/core/lib/core/schema/activity.ex
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ defmodule GoEscuelaLms.Core.Schema.Activity do
activity |> Repo.preload(questions: :answers)
else
error ->
IO.puts("#{inspect(error)}")
Repo.rollback({:failed, error})
end
end)
Expand All @@ -74,9 +73,9 @@ defmodule GoEscuelaLms.Core.Schema.Activity do

def activity_types, do: Ecto.Enum.dump_values(Activity, :activity_type)

def resource?(activity) do
activity.activity_type == :resource
end
def resource?(activity), do: activity.activity_type == :resource

def quiz?(activity), do: activity.activity_type == :quiz

def changeset(course, attrs) do
course
Expand Down
79 changes: 78 additions & 1 deletion apps/core/test/core/schema/activity_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,85 @@ defmodule Core.ActivityTest do

describe "create_with_quiz/1" do
test "create valid activity", %{topic: topic} = _context do
questions = [
%{
mark: 10.0,
description: nil,
title: Faker.Lorem.sentence(),
uuid: nil,
feedback: nil,
question_type: :multiple_choice,
answers: [
%{
description: Faker.Lorem.sentence(),
match_answer: nil,
feedback: nil,
correct_answer: true
}
]
}
]

activity =
build(:activity, activity_type: :resource, topic_id: topic.uuid) |> Map.from_struct()
build(:activity, activity_type: :quiz, topic_id: topic.uuid, questions: questions)
|> Map.from_struct()

{:ok, resource_activity} = Activity.create_with_quiz(activity)

assert resource_activity.activity_type == activity.activity_type
assert resource_activity.enabled == activity.enabled
assert resource_activity.end_date == activity.end_date
assert resource_activity.feedback == activity.feedback
assert resource_activity.grade_pass == activity.grade_pass
assert resource_activity.max_attempts == activity.max_attempts
assert resource_activity.name == activity.name
assert resource_activity.start_date == activity.start_date
assert resource_activity.topic_id == activity.topic_id
end

test "invalid create activity", _context do
{:error, {:failed, {:error, errors}}} = Activity.create_with_quiz(%{})

assert errors.valid? == false
end
end

describe "create/1" do
test "create valid activity", %{topic: topic} = _context do
activity =
build(:activity, topic_id: topic.uuid) |> Map.from_struct()

{:ok, resource_activity} = Activity.create(activity)

assert resource_activity.activity_type == activity.activity_type
assert resource_activity.enabled == activity.enabled
assert resource_activity.end_date == activity.end_date
assert resource_activity.feedback == activity.feedback
assert resource_activity.grade_pass == activity.grade_pass
assert resource_activity.max_attempts == activity.max_attempts
assert resource_activity.name == activity.name
assert resource_activity.start_date == activity.start_date
assert resource_activity.topic_id == activity.topic_id
end

test "invalid create activity", _context do
{:error, errors} = Activity.create(%{})

assert errors.valid? == false
end
end

describe "activity_types/0" do
test "return all activity_types", _context do
assert Activity.activity_types() == ["resource", "quiz"]
end
end

describe "resource?/0" do
test "return true resource", %{topic: topic} do
activity = build(:activity, activity_type: :resource, topic_id: topic.uuid)

assert activity |> Activity.resource?() == true
end
end
end
9 changes: 5 additions & 4 deletions apps/core/test/support/factory.ex
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,11 @@ defmodule Core.Factory do

def build(:question) do
%Question{
tittle: Faker.Lorem.word(),
title: Faker.Lorem.word(),
description: nil,
mark: true,
feedback: true
mark: 10.0,
feedback: nil,
question_type: :multiple_choice
}
end

Expand All @@ -48,7 +49,7 @@ defmodule Core.Factory do
description: Faker.Lorem.word(),
match_answer: nil,
feedback: nil,
correct_answer: :answer
correct_answer: true
}
end

Expand Down
10 changes: 10 additions & 0 deletions excoveralls.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"coverage_options": {
"treat_no_relevant_lines_as_covered": true,
"minimum_coverage": 80
},
"terminal_options": {
"file_column_width": 400
},
"skip_files": []
}
4 changes: 2 additions & 2 deletions mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ defmodule GoEscuelaLms.MixProject do
start_permanent: Mix.env() == :prod,
deps: deps(),
aliases: aliases(),
test_coverage: [tool: ExCoveralls],
test_coverage: [tool: ExCoveralls, threshold: 80],
preferred_cli_env: [
coveralls: :test,
"coveralls.detail": :test,
Expand Down Expand Up @@ -44,7 +44,7 @@ defmodule GoEscuelaLms.MixProject do
[
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:excoveralls, "~> 0.18.0", only: [:dev, :test]}
{:excoveralls, "~> 0.18.0", only: :test}
]
end

Expand Down

0 comments on commit f7e6c63

Please sign in to comment.