Merge remote-tracking branch 'origin/master' into fix-structured-errors

This commit is contained in:
Maximilian Grundke
2018-01-29 12:54:47 +01:00
6 changed files with 4 additions and 78 deletions

View File

@ -364,7 +364,7 @@ class Exercise < ActiveRecord::Base
end end
private :valid_main_file? private :valid_main_file?
def needs_more_feedback def needs_more_feedback?
user_exercise_feedbacks.size <= MAX_EXERCISE_FEEDBACKS user_exercise_feedbacks.size <= MAX_EXERCISE_FEEDBACKS
end end

View File

@ -57,7 +57,7 @@ class Submission < ActiveRecord::Base
end end
def redirect_to_feedback? def redirect_to_feedback?
((user_id + exercise.created_at.to_i) % 10 == 1) && exercise.needs_more_feedback ((user_id + exercise.created_at.to_i) % 10 == 1) && exercise.needs_more_feedback?
end end
def own_unsolved_rfc def own_unsolved_rfc

View File

@ -54,8 +54,6 @@ h1 = "#{@exercise} (external user #{@external_user})"
-submission_or_intervention.testruns.each do |run| -submission_or_intervention.testruns.each do |run|
- if run.passed - if run.passed
.unit-test-result.positive-result title=run.output .unit-test-result.positive-result title=run.output
- elsif run.failed
.unit-test-result.negative-result title=run.output
- else - else
.unit-test-result.unknown-result title=run.output .unit-test-result.unknown-result title=run.output
td = Time.at(deltas[1..index].inject(:+)).utc.strftime("%H:%M:%S") if index > 0 td = Time.at(deltas[1..index].inject(:+)).utc.strftime("%H:%M:%S") if index > 0

View File

@ -1,59 +0,0 @@
class Xikolo::Client
def self.get_user(user_id)
params = {:user_id => user_id}
response = get_request(user_profile_url(user_id), params)
if response
return JSON.parse(response)
else
return nil
end
end
def self.user_profile_url(user_id)
return url + 'v2/users/' + user_id
end
def self.post_request(url, params)
begin
return RestClient.post url, params, http_header
rescue
return nil
end
end
def self.get_request(url, params)
begin
return RestClient.get url, {:params => params}.merge(http_header)
rescue
return nil
end
end
def self.http_header
return {:accept => accept, :authorization => token}
end
def self.url
@url ||= CodeOcean::Config.new(:code_ocean).read.fetch(:xikolo_api_url, 'http://localhost:3000/api/') #caches this with ||=, second value of fetch is default value
end
def self.accept
'application/vnd.xikolo.v1, application/vnd.api+json, application/json'
end
def self.token
'Token token='+Rails.application.secrets.openhpi_api_token#+'"'
end
private
def authenticate_with_user
params = {:email => "admin@openhpi.de", :password => "admin"}
response = post_request(authentication_url, params)
@token = 'Token token="'+JSON.parse(response)['token']+'"'
end
def self.authentication_url
return @url + 'authenticate'
end
end

View File

@ -1,15 +0,0 @@
class Xikolo::UserClient
def self.get(user_id)
user = Xikolo::Client.get_user(user_id)
# return default values if user is not found or if there is a server issue:
if user
name = user.dig('data', 'attributes', 'name') || "User " + user_id
user_visual = user.dig('data', 'attributes', 'avatar_url') || ActionController::Base.helpers.image_path('default.png')
language = user.dig('data', 'attributes', 'language') || "DE"
return {display_name: name, user_visual: user_visual, language: language}
else
return {display_name: "User " + user_id, user_visual: ActionController::Base.helpers.image_path('default.png'), language: "DE"}
end
end
end

View File

@ -132,12 +132,14 @@ describe SessionsController do
end end
it 'redirects to recommended exercise if requested token of proxy exercise' do it 'redirects to recommended exercise if requested token of proxy exercise' do
pending 'test is currently oscillating'
FactoryBot.create(:proxy_exercise, exercises: [exercise]) FactoryBot.create(:proxy_exercise, exercises: [exercise])
post :create_through_lti, custom_locale: locale, custom_token: ProxyExercise.first.token, oauth_consumer_key: consumer.oauth_key, oauth_nonce: nonce, oauth_signature: SecureRandom.hex, user_id: user.external_id post :create_through_lti, custom_locale: locale, custom_token: ProxyExercise.first.token, oauth_consumer_key: consumer.oauth_key, oauth_nonce: nonce, oauth_signature: SecureRandom.hex, user_id: user.external_id
expect(controller).to redirect_to(implement_exercise_path(exercise.id)) expect(controller).to redirect_to(implement_exercise_path(exercise.id))
end end
it 'recommends only exercises who are 1 degree more complicated than what user has seen' do it 'recommends only exercises who are 1 degree more complicated than what user has seen' do
pending 'test is currently oscillating'
# dummy user has no exercises finished, therefore his highest difficulty is 0 # dummy user has no exercises finished, therefore his highest difficulty is 0
FactoryBot.create(:proxy_exercise, exercises: [exercise, exercise2]) FactoryBot.create(:proxy_exercise, exercises: [exercise, exercise2])
exercise.expected_difficulty = 3 exercise.expected_difficulty = 3