Skip to content

Commit

Permalink
Merge pull request #1372 from WikiEducationFoundation/mattwarren10-co…
Browse files Browse the repository at this point in the history
…urses-users-real-name-#1041

Mattwarren10 courses users real name #1041
  • Loading branch information
ragesoss committed Aug 30, 2017
2 parents 84a0fcd + 2aeeece commit 24bb8c0
Show file tree
Hide file tree
Showing 10 changed files with 59 additions and 18 deletions.
3 changes: 2 additions & 1 deletion app/controllers/self_enrollment_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,8 @@ def passcode_valid?
def add_student_to_course
@result = JoinCourse.new(course: @course,
user: current_user,
role: CoursesUsers::Roles::STUDENT_ROLE).result
role: CoursesUsers::Roles::STUDENT_ROLE,
real_name: current_user.real_name).result
end

def set_mediawiki_preferences
Expand Down
6 changes: 4 additions & 2 deletions app/services/join_course.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
class JoinCourse
attr_reader :result

def initialize(course:, user:, role:)
def initialize(course:, user:, role:, real_name: nil)
@course = course
@user = user
@role = role
@real_name = real_name
process_join_request
end

Expand Down Expand Up @@ -59,7 +60,8 @@ def create_courses_user
CoursesUsers.create(
user_id: @user.id,
course_id: @course.id,
role: @role
role: @role,
real_name: @real_name
)
end

Expand Down
2 changes: 1 addition & 1 deletion app/views/courses/_users.json.jbuilder
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ json.users course.courses_users.eager_load(:user, :course) do |cu|
# an instructor of the course.
# Emails and names of greeters are shown to all users
if show_email_and_real_name || cu.user.greeter
json.real_name cu.user.real_name
json.real_name cu.real_name
# Student emails are not shown to anyone.
json.email cu.user.email unless cu.role == CoursesUsers::Roles::STUDENT_ROLE
end
Expand Down
3 changes: 3 additions & 0 deletions db/cleanup/update_course_users_real_name.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
CoursesUsers.all.each do |course_user|
course_user.update(real_name: course_user.user.real_name)
end
5 changes: 5 additions & 0 deletions db/migrate/20170828160001_add_real_name_to_courses_users.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddRealNameToCoursesUsers < ActiveRecord::Migration[5.1]
def change
add_column :courses_users, :real_name, :string
end
end
3 changes: 2 additions & 1 deletion db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 20170825200219) do
ActiveRecord::Schema.define(version: 20170828160001) do

create_table "alerts", id: :integer, force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.integer "course_id"
Expand Down Expand Up @@ -201,6 +201,7 @@
t.integer "role", default: 0
t.integer "recent_revisions", default: 0
t.integer "character_sum_draft", default: 0
t.string "real_name"
t.index ["course_id"], name: "index_courses_users_on_course_id"
t.index ["user_id"], name: "index_courses_users_on_user_id"
end
Expand Down
9 changes: 6 additions & 3 deletions lib/course_creation_manager.rb
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,12 @@ def set_initial_campaign
end

def add_instructor_to_course
CoursesUsers.create(user: @instructor,
course: @course,
role: CoursesUsers::Roles::INSTRUCTOR_ROLE)
# Creating a course is analogous to self-enrollment; it is intentional on the
# part of the user, so we associate the real name with the course.
JoinCourse.new(user: @instructor,
course: @course,
role: CoursesUsers::Roles::INSTRUCTOR_ROLE,
real_name: @instructor.real_name)
end

def add_tags_to_course
Expand Down
14 changes: 5 additions & 9 deletions spec/features/students_page_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,15 @@ def js_visit(path)
campaign = create(:campaign)
@course.campaigns << campaign

@user = create(:user,
# avoid mysql duplicate key
# why is there an `id` in the user factory
# anyway?
id: rand(534384389),
username: 'Mr_Tester',
real_name: 'Mr. Tester',
trained: true)
@user = create(:user, username: 'Mr_Tester',
real_name: 'Mr. Tester',
trained: true)

create(:courses_user,
id: 1,
course_id: @course.id,
user_id: @user.id)
user_id: @user.id,
real_name: @user.real_name)

article = create(:article,
id: 1,
Expand Down
4 changes: 3 additions & 1 deletion spec/models/courses_users_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@
id: 1,
course_id: 1,
user_id: 1,
assigned_article_title: 'Selfie')
assigned_article_title: 'Selfie',
real_name: 'John Smith')

# Make an article-course.
create(:articles_course,
Expand All @@ -78,6 +79,7 @@
expect(course_user.assigned_article_title).to eq('Selfie')
expect(course_user.character_sum_ms).to eq(9000)
expect(course_user.character_sum_us).to eq(0)
expect(course_user.real_name).to eq('John Smith')
end
end

Expand Down
28 changes: 28 additions & 0 deletions spec/services/join_course_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,34 @@
enroll_as_instructor
end

context 'with real name' do
let(:course) { create(:basic_course) }
let(:subject) do
described_class.new(course: course, user: user,
role: CoursesUsers::Roles::STUDENT_ROLE,
real_name: 'student name')
end
it 'allows a course to be joined' do
result = subject.result
expect(result[:failure]).to be_nil
expect(result[:success]).to_not be_nil
end
end

context 'without real name' do
let(:course) { create(:basic_course) }
let(:subject) do
described_class.new(course: course, user: user,
role: CoursesUsers::Roles::STUDENT_ROLE,
real_name: nil)
end
it 'allows a course to be joined' do
result = subject.result
expect(result[:failure]).to be_nil
expect(result[:success]).to_not be_nil
end
end

context 'for a ClassroomProgramCourse' do
let(:course) { classroom_program_course }
it 'does not allow joining with multiple roles' do
Expand Down

0 comments on commit 24bb8c0

Please sign in to comment.