Merge remote-tracking branch 'origin/master' into exercise-anomaly-detection

# Conflicts:
#	db/schema.rb
This commit is contained in:
Maximilian Grundke
2017-12-13 13:15:29 +01:00
95 changed files with 526 additions and 397 deletions

View File

@ -0,0 +1,5 @@
class RemoveExpectedWorkingTime < ActiveRecord::Migration
def change
remove_column :exercises, :expected_worktime_seconds
end
end

View File

@ -0,0 +1,6 @@
class AddTimestampsToUserExerciseFeedbacks < ActiveRecord::Migration
def up
add_column :user_exercise_feedbacks, :created_at, :datetime, null: false, default: Time.now
add_column :user_exercise_feedbacks, :updated_at, :datetime, null: false, default: Time.now
end
end

View File

@ -128,19 +128,18 @@ ActiveRecord::Schema.define(version: 20171210172208) do
create_table "exercises", force: :cascade do |t|
t.text "description"
t.integer "execution_environment_id"
t.string "title", limit: 255
t.string "title", limit: 255
t.datetime "created_at"
t.datetime "updated_at"
t.integer "user_id"
t.text "instructions"
t.boolean "public"
t.string "user_type", limit: 255
t.string "token", limit: 255
t.string "user_type", limit: 255
t.string "token", limit: 255
t.boolean "hide_file_tree"
t.boolean "allow_file_creation"
t.boolean "allow_auto_completion", default: false
t.integer "expected_worktime_seconds", default: 60
t.integer "expected_difficulty", default: 1
t.boolean "allow_auto_completion", default: false
t.integer "expected_difficulty", default: 1
end
add_index "exercises", ["id"], name: "index_exercises_on_id", using: :btree
@ -355,13 +354,15 @@ ActiveRecord::Schema.define(version: 20171210172208) do
end
create_table "user_exercise_feedbacks", force: :cascade do |t|
t.integer "exercise_id", null: false
t.integer "user_id", null: false
t.string "user_type", null: false
t.integer "difficulty"
t.integer "working_time_seconds"
t.string "feedback_text"
t.integer "user_estimated_worktime"
t.integer "exercise_id", null: false
t.integer "user_id", null: false
t.string "user_type", null: false
t.integer "difficulty"
t.integer "working_time_seconds"
t.string "feedback_text"
t.integer "user_estimated_worktime"
t.datetime "created_at", default: '2017-11-20 18:20:25', null: false
t.datetime "updated_at", default: '2017-11-20 18:20:25', null: false
end
create_table "user_exercise_interventions", force: :cascade do |t|

View File

@ -1,5 +1,5 @@
def find_factories_by_class(klass)
FactoryGirl.factories.select do |factory|
FactoryBot.factories.select do |factory|
factory.instance_variable_get(:@class_name) == klass || factory.instance_variable_get(:@name) == klass.model_name.singular.to_sym
end
end
@ -9,7 +9,7 @@ module ActiveRecord
[:build, :create].each do |strategy|
define_singleton_method("#{strategy}_factories") do |attributes = {}|
find_factories_by_class(self).map(&:name).map do |factory_name|
FactoryGirl.send(strategy, factory_name, attributes)
FactoryBot.send(strategy, factory_name, attributes)
end
end
end

View File

@ -1,9 +1,9 @@
# consumers
FactoryGirl.create(:consumer)
FactoryGirl.create(:consumer, name: 'openSAP')
FactoryBot.create(:consumer)
FactoryBot.create(:consumer, name: 'openSAP')
# users
[:admin, :external_user, :teacher].each { |factory_name| FactoryGirl.create(factory_name) }
[:admin, :external_user, :teacher].each { |factory_name| FactoryBot.create(factory_name) }
# execution environments
ExecutionEnvironment.create_factories
@ -12,7 +12,7 @@ ExecutionEnvironment.create_factories
Error.create_factories
# exercises
@exercises = find_factories_by_class(Exercise).map(&:name).map { |factory_name| [factory_name, FactoryGirl.create(factory_name)] }.to_h
@exercises = find_factories_by_class(Exercise).map(&:name).map { |factory_name| [factory_name, FactoryBot.create(factory_name)] }.to_h
# file types
FileType.create_factories
@ -21,4 +21,4 @@ FileType.create_factories
Hint.create_factories
# submissions
FactoryGirl.create(:submission, exercise: @exercises[:fibonacci])
FactoryBot.create(:submission, exercise: @exercises[:fibonacci])

View File

@ -1,7 +1,7 @@
require 'highline/import'
# consumers
FactoryGirl.create(:consumer)
FactoryBot.create(:consumer)
# users
email = ask('Enter admin email: ')
@ -11,7 +11,7 @@ passwords = ['password', 'password confirmation'].map do |attribute|
end
if passwords.uniq.length == 1
FactoryGirl.create(:admin, email: email, name: 'Administrator', password: passwords.first)
FactoryBot.create(:admin, email: email, name: 'Administrator', password: passwords.first)
else
abort('Passwords do not match!')
end