Skip to content
This repository has been archived by the owner on Aug 28, 2019. It is now read-only.

Add notifications autograding #8

Open
wants to merge 27 commits into
base: add-notifications
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
fe804a0
Merge pull request #1 from source-academy/master
geshuming Mar 17, 2019
52216f7
bumped tzdata from 0.5.19 to 0.5.20
geshuming Mar 28, 2019
1d2a877
Merge branch 'master' into master
geshuming Mar 28, 2019
334c7aa
Merge pull request #3 from source-academy/master
geshuming Apr 11, 2019
ad210df
Merge branch 'master' of https://github.com/source-academy/cadet
geshuming May 27, 2019
52a3660
Merge branch 'master' of https://github.com/geshuming/cadet
geshuming May 27, 2019
59e7fd9
Added basic model for notifications
geshuming Jun 3, 2019
3aa62b5
Change from :submissions to :assessments
geshuming Jun 3, 2019
ae6ecc6
Change from :submissions to :assessments
geshuming Jun 3, 2019
3eb642b
Merge branch 'add-notifications' of https://github.com/geshuming/cade…
geshuming Jun 3, 2019
e761b74
Added MVC for notifications
geshuming Jun 3, 2019
9910aa2
FIxed spelling
geshuming Jun 3, 2019
0e0d20f
Added submission_id and role to Notification
geshuming Jun 4, 2019
9ecdfff
Added factory for Notification
geshuming Jun 4, 2019
f825776
Merge branch 'master' into add-notifications
geshuming Jun 4, 2019
5ee31f4
Refactored notification
geshuming Jun 4, 2019
fd781dc
Merge branch 'add-notifications' into add-notifications-mocks
geshuming Jun 4, 2019
b3864cc
Merge branch 'master' into add-notifications
geshuming Jun 7, 2019
6393129
Implemented fetch for notifications, tried to work on write and ackno…
alcen Jun 11, 2019
fc99f1e
Did mix format
alcen Jun 11, 2019
ab3a3c8
Reworked acknowledge function in notification.ex
alcen Jun 12, 2019
e4aa2a7
Updated functions to work properly
geshuming Jun 12, 2019
73b99d0
Applied credo suggestion
geshuming Jun 12, 2019
1826dbe
Merge pull request #4 from geshuming/add-notifications-functions
geshuming Jun 12, 2019
9e4529b
Added functions for autograding and grading notifications
alcen Jun 17, 2019
381737c
Refactored write_notification_when_autograded and write_notification_…
alcen Jun 18, 2019
c545ab2
Added function call to send notifications for new assessments in asse…
alcen Jun 19, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Change from :submissions to :assessments
geshuming committed Jun 3, 2019
commit ae6ecc6061ec7570297799611ec49bd3a2b89eb3
10 changes: 5 additions & 5 deletions lib/cadet/accounts/notification.ex
Original file line number Diff line number Diff line change
@@ -5,27 +5,27 @@ defmodule Cadet.Accounts.Notification do
alias Cadet.Accounts.NotificationType
alias Cadet.Accounts.User
alias Cadet.Assessments.Question
alias Cadet.Assessments.Submission
alias Cadet.Assessments.Assessment

schema "notification" do
field(:type, NotificationType)
field(:read, :boolean)

belongs_to(:user, User)
belongs_to(:submission, Submission)
belongs_to(:assessment, Assessment)
belongs_to(:question, Question)

timestamps()
end

@required_fields ~w(type read user_id submission_id question_id)a
@required_fields ~w(type read user_id assessment_id)a

def changeset(answer, params) do
answer
|> cast(params, @required_fields)
|> cast(params, @required_fields ++ [:question_id])
|> validate_required(@required_fields)
|> foreign_key_constraint(:user)
|> foreign_key_constraint(:submission_id)
|> foreign_key_constraint(:assessment_id)
|> foreign_key_constraint(:question_id)
end

5 changes: 3 additions & 2 deletions priv/repo/migrations/20190603023734_add_notifications.exs
Original file line number Diff line number Diff line change
@@ -6,10 +6,11 @@ defmodule Cadet.Repo.Migrations.AddNotifications do
add(:type, :string)
add(:read, :boolean)
add(:user_id, references(:users), null: false)
add(:submission_id, references(:submissions), null: false)
add(:assessment_id, references(:assessments), null: false)
add(:question_id, references(:questions), null: true)
timestamps()
end

create(index(:notifications, [:user_id, :submission_id]))
create(index(:notifications, [:user_id, :assessment_id]))
end
end
15 changes: 8 additions & 7 deletions test/cadet/accounts/notification_test.exs
Original file line number Diff line number Diff line change
@@ -3,28 +3,23 @@ defmodule Cadet.Accounts.NotificationTest do

use Cadet.ChangesetCase, entity: Notification

@required_fields ~w(type read user_id submission_id question_id)a
@required_fields ~w(type read user_id assessment_id)a

setup do
assessment = insert(:assessment, %{is_published: true})
student = insert(:user, %{role: :student})
submission = insert(:submission, %{student: student, assessment: assessment})
programming_question = insert(:programming_question, %{assessment: assessment})

valid_notification_params = %{
type: :new,
read: false,
user_id: student.id,
submission_id: submission.id,
question_id: programming_question.id
assessment_id: assessment.id
}

{:ok,
%{
assessment: assessment,
programming_question: programming_question,
student: student,
submission: submission,
valid_notification_params: valid_notification_params
}}
end
@@ -34,6 +29,12 @@ defmodule Cadet.Accounts.NotificationTest do
assert_changeset(params, :valid)
end

test "valid notification params with question id", %{valid_notification_params: params} do
params = Map.put(params, :question_id, 12345)

assert_changeset(params, :valid)
end

test "invalid changeset missing required params", %{valid_notification_params: params} do
for field <- @required_fields do
params_missing_field = Map.delete(params, field)