* wip
This commit is contained in:
parent
8f49a9ab66
commit
9c4ab6418c
|
|
@ -493,7 +493,7 @@ module JamRuby
|
|||
|
||||
# retrieve users that have approved RSVPs
|
||||
def approved_rsvps
|
||||
User.find_by_sql(%Q{select distinct ON(u.id) u.id, u.photo_url, u.first_name, u.last_name, json_agg(ii.id) as instrument_ids, json_agg(ii.description) as instrument_descriptions, json_agg(rs.proficiency_level) as instrument_proficiencies, json_agg(rr.id) as rsvp_request_ids
|
||||
User.find_by_sql(%Q{select distinct ON(u.id) u.id, u.photo_url, u.first_name, u.last_name, u.last_jam_audio_latency, json_agg(ii.id) as instrument_ids, json_agg(ii.description) as instrument_descriptions, json_agg(rs.proficiency_level) as instrument_proficiencies, json_agg(rr.id) as rsvp_request_ids
|
||||
from rsvp_slots rs
|
||||
inner join rsvp_requests_rsvp_slots rrrs on rrrs.rsvp_slot_id = rs.id
|
||||
inner join rsvp_requests rr on rrrs.rsvp_request_id = rr.id
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
context.JK.HelpBubbleHelper = helpBubble;
|
||||
var logger = context.JK.logger;
|
||||
|
||||
var defaultScoreBreakDownOptions = {positions: ['right', 'top', 'bottom', 'left'], width:'600px' };
|
||||
var defaultScoreBreakDownOptions = {positions: ['right', 'top', 'bottom', 'left'], width:'600px', closeWhenOthersOpen: true };
|
||||
helpBubble.scoreBreakdown = function($element, isCurrentUser, full_score, myAudioLatency, otherAudioLatency, internetScore, options) {
|
||||
options = options || {};
|
||||
options = $.extend({}, defaultScoreBreakDownOptions, options)
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@
|
|||
latencyDescription = LATENCY.MEDIUM.description;
|
||||
latencyStyle = LATENCY.MEDIUM.style;
|
||||
}
|
||||
else if (latency > LATENCY.POOR.min && latency <= LATENCY.UNACCEPTABLE.max) {
|
||||
else if (latency > LATENCY.POOR.min && latency <= LATENCY.POOR.max) {
|
||||
latencyDescription = LATENCY.POOR.description;
|
||||
latencyStyle = LATENCY.POOR.style;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,6 +110,10 @@
|
|||
options = {}
|
||||
}
|
||||
|
||||
$element.on('remove', function() {
|
||||
$element.btOff();
|
||||
})
|
||||
|
||||
|
||||
var helpText = context._.template($('#template-help-' + templateName).html(), data, { variable: 'data' });
|
||||
var holder = $('<div class="hover-bubble help-bubble"></div>');
|
||||
|
|
|
|||
|
|
@ -12,4 +12,9 @@ module ScoreHelper
|
|||
user = @user_scores[user_id] || {}
|
||||
{ full_score: user[:full_score], audio_latency: user[:audio_latency], internet_score: user[:internet_score] }
|
||||
end
|
||||
|
||||
def last_jam_audio_latency(user)
|
||||
user.last_jam_audio_latency ? user.last_jam_audio_latency.round : nil
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -93,9 +93,9 @@ else
|
|||
attributes :id, :sender_id, :receiver_id
|
||||
|
||||
node do |invitation|
|
||||
{
|
||||
receiver_avatar_url: invitation.receiver.resolved_photo_url
|
||||
}.merge(user_score(invitation.receiver.id))
|
||||
user_score(invitation.receiver.id).merge({
|
||||
receiver_avatar_url: invitation.receiver.resolved_photo_url, audio_latency: last_jam_audio_latency(invitation.receiver)
|
||||
})
|
||||
end
|
||||
}
|
||||
|
||||
|
|
@ -103,10 +103,11 @@ else
|
|||
attributes :id, :photo_url, :first_name, :last_name, :name, :resolved_photo_url, :rsvp_request_id
|
||||
|
||||
node do |user|
|
||||
{
|
||||
user_score(user.id).merge({
|
||||
instrument_list: process_approved_rsvps(user),
|
||||
rsvp_request_id: JSON.parse(user.rsvp_request_ids)[0] # there must always be a rsvp_request_id; and they should all be the same
|
||||
}.merge(user_score(user.id))
|
||||
rsvp_request_id: JSON.parse(user.rsvp_request_ids)[0], # there must always be a rsvp_request_id; and they should all be the same
|
||||
audio_latency: last_jam_audio_latency(user)
|
||||
})
|
||||
end
|
||||
}
|
||||
|
||||
|
|
@ -125,7 +126,9 @@ else
|
|||
attributes :id, :photo_url, :name, :first_name, :last_name
|
||||
|
||||
node do |user|
|
||||
{ name: user.name }.merge(user_score(user.id))
|
||||
user_score(user.id).merge({
|
||||
name: user.name,
|
||||
audio_latency: last_jam_audio_latency(user)})
|
||||
end
|
||||
}
|
||||
}
|
||||
|
|
@ -154,7 +157,13 @@ else
|
|||
attributes :ip_address, :client_id, :joined_session_at
|
||||
|
||||
node :user do |connection|
|
||||
{ :id => connection.user.id, :photo_url => connection.user.photo_url, :name => connection.user.name, :is_friend => connection.user.friends?(current_user), :connection_state => connection.aasm_state }.merge(user_score(connection.user.id))
|
||||
user_score(connection.user.id).merge({
|
||||
:id => connection.user.id,
|
||||
:photo_url => connection.user.photo_url,
|
||||
:name => connection.user.name,
|
||||
:is_friend => connection.user.friends?(current_user),
|
||||
:connection_state => connection.aasm_state,
|
||||
audio_latency: last_jam_audio_latency(connection.user)})
|
||||
end
|
||||
|
||||
child(:tracks => :tracks) {
|
||||
|
|
|
|||
|
|
@ -73,44 +73,31 @@ describe "Find Session", :js => true, :type => :feature, :capybara_feature => tr
|
|||
user.last_jam_locidispid = austin[:locidispid]
|
||||
user.save!
|
||||
|
||||
find('#btn-refresh').trigger(:click)
|
||||
page.assert_selector('div#sessions-active .found-session', count: 1)
|
||||
find(".latency-value.latency-unknown[data-user-id='#{session1_creator.id}']", text: 'UNKNOWN')
|
||||
|
||||
# create score with viewer and creator
|
||||
score1, score2 = create_score(austin, dallas, { auserid: user.id, buserid: session1_creator.id},
|
||||
austin[:jamisp].beginip, dallas[:jamisp].beginip, 'a_client_id', 'b_client_id', score=3) # creates scores with very recent created_at, so it should be skipped
|
||||
find('#btn-refresh').trigger(:click)
|
||||
page.assert_selector('div#sessions-active .found-session', count: 1)
|
||||
find(".latency-value.latency-good[data-user-id='#{session1_creator.id}']", text: 'GOOD')
|
||||
|
||||
Score.connection.execute('DELETE FROM scores').check
|
||||
score1, score2 = create_score(austin, dallas, { auserid: user.id, buserid: session1_creator.id},
|
||||
austin[:jamisp].beginip, dallas[:jamisp].beginip, 'a_client_id', 'b_client_id', score=40) # creates scores with very recent created_at, so it should be skipped
|
||||
|
||||
find('#btn-refresh').trigger(:click)
|
||||
page.assert_selector('div#sessions-active .found-session', count: 1)
|
||||
find(".latency-value.latency-fair[data-user-id='#{session1_creator.id}']", text: 'FAIR')
|
||||
|
||||
Score.connection.execute('DELETE FROM scores').check
|
||||
score1, score2 = create_score(austin, dallas, { auserid: user.id, buserid: session1_creator.id},
|
||||
austin[:jamisp].beginip, dallas[:jamisp].beginip, 'a_client_id', 'b_client_id', score=100) # creates scores with very recent created_at, so it should be skipped
|
||||
find('#btn-refresh').trigger(:click)
|
||||
page.assert_selector('div#sessions-active .found-session', count: 1)
|
||||
find(".latency-value.latency-poor[data-user-id='#{session1_creator.id}']", text: 'POOR')
|
||||
|
||||
Score.connection.execute('DELETE FROM scores').check
|
||||
score1, score2 = create_score(austin, dallas, { auserid: user.id, buserid: session1_creator.id},
|
||||
austin[:jamisp].beginip, dallas[:jamisp].beginip, 'a_client_id', 'b_client_id', score=200) # creates scores with very recent created_at, so it should be skipped
|
||||
find('#btn-refresh').trigger(:click)
|
||||
page.assert_selector('div#sessions-active .found-session', count: 1)
|
||||
find(".latency-value.latency-unacceptable[data-user-id='#{session1_creator.id}']", text: 'UNACCEPTABLE')
|
||||
|
||||
verify_score(nil, '#sessions-active', user, session1_creator)
|
||||
verify_score(3, '#sessions-active', user, session1_creator)
|
||||
verify_score(40, '#sessions-active', user, session1_creator)
|
||||
verify_score(80, '#sessions-active', user, session1_creator)
|
||||
verify_score(110, '#sessions-active', user, session1_creator)
|
||||
|
||||
fast_signout
|
||||
fast_signin(session1_creator, "/client#/findSession")
|
||||
page.assert_selector('div#sessions-active .found-session', count: 1)
|
||||
find(".latency-value.latency-me[data-user-id='#{session1_creator.id}']", text: 'ME')
|
||||
|
||||
verify_score(nil, '#sessions-active', session1_creator, session1_creator)
|
||||
|
||||
# this should cause it to move to the scheduled session view; we'll check all the values again
|
||||
ActiveMusicSession.delete_all
|
||||
|
||||
verify_score(nil, '#sessions-scheduled', session1_creator, session1_creator)
|
||||
|
||||
fast_signout
|
||||
fast_signin(user, "/client#/findSession")
|
||||
|
||||
verify_score(nil, '#sessions-scheduled', user, session1_creator)
|
||||
verify_score(3, '#sessions-scheduled', user, session1_creator)
|
||||
verify_score(40, '#sessions-scheduled', user, session1_creator)
|
||||
verify_score(80, '#sessions-scheduled', user, session1_creator)
|
||||
verify_score(110, '#sessions-scheduled', user, session1_creator)
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -200,4 +200,62 @@ def locidispid_from_ip(ip_address)
|
|||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
def expected_score_info(score, parent_selector, current_user, target_user)
|
||||
full_score = score ? score + current_user.last_jam_audio_latency + target_user.last_jam_audio_latency : nil
|
||||
|
||||
if current_user == target_user
|
||||
expected = {latency_badge_selector: '.latency-me', latency_badge_text: 'ME'}
|
||||
elsif full_score == nil
|
||||
expected = {latency_badge_selector: '.latency-unknown', latency_badge_text: 'UNKNOWN'}
|
||||
elsif full_score < 40
|
||||
expected = {latency_badge_selector: '.latency-good', latency_badge_text: 'GOOD'}
|
||||
elsif full_score < 70
|
||||
expected = {latency_badge_selector: '.latency-fair', latency_badge_text: 'FAIR'}
|
||||
elsif full_score < 100
|
||||
expected = {latency_badge_selector: '.latency-poor', latency_badge_text: 'POOR'}
|
||||
else
|
||||
expected = {latency_badge_selector: '.latency-unacceptable', latency_badge_text: 'UNACCEPTABLE'}
|
||||
end
|
||||
|
||||
expected
|
||||
end
|
||||
# will verify that the score shown match the score desired
|
||||
def verify_score(score, parent_selector, current_user, target_user)
|
||||
|
||||
expected = expected_score_info(score, parent_selector, current_user, target_user)
|
||||
|
||||
Score.connection.execute('DELETE FROM scores').check
|
||||
if score
|
||||
create_score(austin, dallas, { auserid: user.id, buserid: session1_creator.id},
|
||||
austin[:jamisp].beginip, dallas[:jamisp].beginip, 'a_client_id', 'b_client_id', score=score) # creates scores with very recent created_at, so it should be skipped
|
||||
end
|
||||
|
||||
find('#btn-refresh').trigger(:click)
|
||||
page.assert_selector("div#{parent_selector} .found-session", count: 1)
|
||||
find(".latency-value#{expected[:latency_badge_selector]}[data-user-id='#{target_user.id}']", text: expected[:latency_badge_text])
|
||||
|
||||
verify_score_hover(score, parent_selector, current_user, target_user)
|
||||
end
|
||||
|
||||
def verify_score_hover(score, parent_selector, current_user, target_user)
|
||||
expected = expected_score_info(score, parent_selector, current_user, target_user)
|
||||
find(".latency-value#{expected[:latency_badge_selector]}[data-user-id='#{target_user.id}']", text: expected[:latency_badge_text]).help_bubble
|
||||
|
||||
if current_user == target_user
|
||||
find('.help-musician-score-self p', text: 'You are looking at your own account.')
|
||||
|
||||
if current_user.last_jam_audio_latency
|
||||
find('.help-musician-score-self .my-gear-latency .measurement-value', text: "#{current_user.last_jam_audio_latency.round} ms")
|
||||
else
|
||||
find('.help-musician-score-self .my-gear-latency .measurement-value', text: "13 ms*")
|
||||
end
|
||||
else
|
||||
find('.help-musician-score-count .my-gear-latency .measurement-value', text: current_user.last_jam_audio_latency ? "#{current_user.last_jam_audio_latency.round} ms" : '13 ms*')
|
||||
find('.help-musician-score-count .their-gear-latency .measurement-value', text: target_user.last_jam_audio_latency ? "#{target_user.last_jam_audio_latency.round} ms" : '13 ms*')
|
||||
find('.help-musician-score-count .internet-latency .measurement-value', text: score ? "#{score} ms": '?')
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
@ -18,6 +18,10 @@ module Capybara
|
|||
sleep 0.3
|
||||
attempt_hover
|
||||
end
|
||||
|
||||
def help_bubble
|
||||
hover
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue