* VRFS-1531, and a fix for feed test having 'dirt' in it from other tests. also reverting batch mailer test

This commit is contained in:
Seth Call 2014-04-04 23:16:38 +01:00
parent 8f18ed09f2
commit 700ef04edf
21 changed files with 172 additions and 41 deletions

View File

@ -88,7 +88,7 @@ FOO
def send_test_batch
self.perform_event('do_test_run!')
BatchMailer.send_batch_email_test(self.id).deliver!
BatchMailer.send_batch_email_test(self.id).deliver
end
def merged_body(user)

View File

@ -270,6 +270,8 @@ module JamRuby
query = query.where(
%Q{
musician_access = true
OR
music_sessions.user_id = '#{current_user.id}'
OR
invitations.id IS NOT NULL
}

View File

@ -8,6 +8,8 @@ describe BatchMailer do
batch = FactoryGirl.create(:email_batch)
batch.send_test_batch
sleep
mail = BatchMailer.deliveries.detect { |dd| dd['to'].to_s.split(',')[0] == batch.test_emails.split(',')[0]}
# let (:mail) { BatchMailer.deliveries[0] }
# it { mail['to'].to_s.split(',')[0].should == batch.test_emails.split(',')[0] }

View File

@ -41,7 +41,7 @@
$('#band-profile-social').hide();
$('.band-profile-nav a.active').removeClass('active');
$('.band-profile-nav a.#band-profile-about-link').addClass('active');
$('.band-profile-nav a#band-profile-about-link').addClass('active');
}
/****************** MAIN PORTION OF SCREEN *****************/
@ -170,7 +170,7 @@
$('#band-profile-social').hide();
$('.band-profile-nav a.active').removeClass('active');
$('.band-profile-nav a.#band-profile-about-link').addClass('active');
$('.band-profile-nav a#band-profile-about-link').addClass('active');
bindAbout();
}

View File

@ -36,13 +36,13 @@
}
function removeSpinner() {
$('<div[layout-id=findSession] .content .spinner').remove();// remove any existing spinners
$('div[layout-id=findSession] .content .spinner').remove();// remove any existing spinners
}
function addSpinner() {
removeSpinner();
$('<div[layout-id=findSession] .content').append('<div class="spinner spinner-large"></div>')
$('div[layout-id=findSession] .content').append('<div class="spinner spinner-large"></div>')
}
function loadSessionsOriginal() {

View File

@ -67,8 +67,8 @@
function resultDivVisibility(val, isSidebar) {
if (isSidebar) {
$('div[layout=sidebar user-id=' + val.id + '].sidebar-search-connected').hide();
$('div[layout=sidebar user-id=' + val.id + '].sidebar-search-result').show();
$('div[layout="sidebar"][user-id="' + val.id + '"].sidebar-search-connected').hide();
$('div[layout="sidebar"][user-id="' + val.id + '"].sidebar-search-result').show();
}
else {
$('div[user-id=' + val.id + '].search-connected').hide();
@ -202,8 +202,8 @@
function friendRequestCallbackSidebar(userId) {
// toggle the pre-click and post-click divs
$('div[layout=sidebar] div[user-id=' + userId + '].sidebar-search-connected').show();
$('div[layout=sidebar] div[user-id=' + userId + '].sidebar-search-result').hide();
$('div[layout=sidebar] div[user-id="' + userId + '"].sidebar-search-connected').show();
$('div[layout=sidebar] div[user-id="' + userId + '"].sidebar-search-result').hide();
}
function friendRequestCallbackSearchResults(userId) {

View File

@ -190,7 +190,10 @@
openTerms(sessionId);
}
else {
if (session.musician_access) {
if(session.user_id == JK.currentUserId) {
openTerms(sessionId);
}
else if (session.musician_access) {
if (session.approval_required) {
openAlert(sessionId);
}

View File

@ -0,0 +1,8 @@
/**
*= require client/ie
*= require client/jamkazam
*= require client/screen_common
*= require client/content
*= require client/ftue
*= require minimal/minimial_main
*/

View File

@ -0,0 +1,11 @@
html {
height:100%;
}
body {
//position:absolute !important;
padding:0 !important;
overflow: visible !important;
height:100%;
margin:0 !important;
}

View File

@ -0,0 +1,8 @@
class VideosController < ApplicationController
def show_dialog
@video_id = @params[:video_id]
end
end

View File

@ -0,0 +1,60 @@
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="css/ie.css" media="screen, projection"/>
<![endif]-->
<script src="//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js"></script>
<script>
WebFont.load({
google: {
families: ['Raleway:100,200,300,400,500,600,700']
},
timeout :5000
});
</script>
<!--<link href='http://fonts.googleapis.com/css?family=Raleway:100,200,300,400,500,600,700' rel='stylesheet' type='text/css'>-->
<%= stylesheet_link_tag "minimal/minimal", media: "all" %>
<% if bugsnag? %>
<!-- THIS NEEDS TO BE IN FRONT OF ANY OTHER JAVASCRIPT INCLUDES ACCORDING TO BUGSNAG -->
<script src="//d2wy8f7a9ursnm.cloudfront.net/bugsnag-1.0.9.min.js" data-apikey="<%= Rails.application.config.bugsnag_key %>"></script>
<% end %>
<%= include_gon(:init => true) %>
<%= csrf_meta_tags %>
<% if content_for?(:social_meta) %>
<%= yield(:social_meta) %>
<% else %>
<%= render "layouts/social_meta" %>
<% end %>
</head>
<body class="jam">
<div id="minimal-container">
<%= javascript_include_tag "minimal/minimal" %>
<%= yield %>
</div>
<script type="text/javascript">
$(function () {
JK = JK || {};
JK.root_url = "<%= root_url %>"
<% if current_user %>
JK.currentUserId = '<%= current_user.id %>';
JK.currentUserAvatarUrl = JK.resolveAvatarUrl('<%= current_user.photo_url %>');
JK.currentUserName = '<%= current_user.name %>';
<% else %>
JK.currentUserId = null;
JK.currentUserAvatarUrl = null;
JK.currentUserName = null;
<% end %>
})
</script>
<%= render "shared/ga" %>
<!-- version info: <%= version %> -->
</body>
</html>
c

View File

@ -83,6 +83,7 @@ if defined?(Bundler)
config.assets.precompile += %w( landing/landing.js landing/landing.css )
config.assets.precompile += %w( corp/corporate.js corp/corporate.css )
config.assets.precompile += %w( web/web.js web/web.css )
config.assets.precompile += %w( minimal/minimal.js minimal/minimal.css )
# where is rabbitmq?

View File

@ -63,6 +63,8 @@ SampleApp::Application.routes.draw do
match '/events/:slug', to: 'events#show', :via => :get, :as => 'event'
match '/video/dialog/:id', to: 'videos#show', :via => :get
# temporarily allow for debugging--only allows admini n
match '/listen_in', to: 'spikes#listen_in'

View File

@ -3,12 +3,17 @@ require 'spec_helper'
describe "Feed", :js => true, :type => :feature, :capybara_feature => true do
let (:user) { FactoryGirl.create(:user) }
before(:all) do
MusicSessionHistory.delete_all
Recording.delete_all
end
describe "sessions" do
before(:each) do
create_session(user)
create_session(creator: user)
formal_leave_by(user)
end

View File

@ -114,7 +114,7 @@ describe "Home Screen", :js => true, :type => :feature, :capybara_feature => tru
describe 'Home Screen while in Native Client' do
before(:each) do
UserMailer.deliveries.clear
page.driver.headers = { 'User-Agent' => ' JamKazam ' }
emulate_client
sign_in_poltergeist user
visit "/client"
end

View File

@ -5,8 +5,6 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr
subject { page }
before(:all) do
Capybara.javascript_driver = :poltergeist
Capybara.current_driver = Capybara.javascript_driver
Capybara.default_wait_time = 15
end
@ -20,26 +18,29 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr
it "can't see a private session until it is made public", :slow => true do
pending "fails on build server"
create_session(user, description = "Public or private, I cant decide!")
description = "Public or private, I cant decide!"
create_session(creator: user, description: description)
in_client(user) do
set_session_as_private
end
in_client(finder) do
emulate_client
sign_in_poltergeist finder
visit "/client#/findSession"
expect(page).to have_selector('#sessions-none-found') # verify private session is not found
sign_out_poltergeist(validate: true)
end
in_client(user) do
set_session_as_public
end
join_session(finder, description) # verify the public session is able to be joined
join_session(finder, description: description) # verify the public session is able to be joined
end
it "can open the Configure Tracks modal, and Add New Audio Gear", :slow => true do
create_session(user, description = "I'm gonna bail at some point!")
join_session(finder, description)
description = "I'm gonna bail at some point!"
create_session(creator: user, description: description)
join_session(finder, description: description)
assert_all_tracks_seen(users=[user, finder])
@ -72,7 +73,7 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr
end
it "a user can change the genre and the Find Session screen will be updated" do
create_session(user)
create_session(creator: user)
in_client(finder) { sign_in_poltergeist finder }
2.times do
in_client(user) do
@ -83,4 +84,16 @@ describe "In a Session", :js => true, :type => :feature, :capybara_feature => tr
end
end
end
it "can rejoin private session as creator" do
creator, description = create_join_session(user, [finder])
in_client(user) do
set_session_as_private
formal_leave_by user
sign_out_poltergeist user
end
join_session(user, description: description)
end
end

View File

@ -25,7 +25,7 @@ describe "Welcome", :js => true, :type => :feature, :capybara_feature => true d
User.where(email: 'twitter_user1@jamkazam.com').delete_all
User.where(email: 'twitter_user2@jamkazam.com').delete_all
page.driver.headers = { 'User-Agent' => ' JamKazam ' }
emulate_client
sign_in_poltergeist user
visit "/"
find('h1', text: 'Play music together over the Internet as if in the same room')

View File

@ -16,7 +16,7 @@ describe "Welcome", :js => true, :type => :feature, :capybara_feature => true d
MusicSessionHistory.delete_all
Recording.delete_all
page.driver.headers = { 'User-Agent' => ' JamKazam ' }
emulate_client
visit "/"
find('h1', text: 'Play music together over the Internet as if in the same room')

View File

@ -12,7 +12,7 @@ describe "Home Screen", :js => true, :type => :feature, :capybara_feature => tru
before(:each) do
sign_in_poltergeist user
page.driver.headers = { 'User-Agent' => ' JamKazam ' }
emulate_client
visit "/client"
end
@ -62,7 +62,7 @@ describe "Home Screen", :js => true, :type => :feature, :capybara_feature => tru
# needed because we poke the server with an updateUser call, but their is no indication in the UI that it's done
wait_for_ajax
page.driver.headers = { 'User-Agent' => ' JamKazam ' }
emulate_client
sleep 1
visit "/client"
wait_until_curtain_gone

View File

@ -187,14 +187,17 @@ end
# takes, or creates, a unique session description which is returned for subsequent calls to join_session to use
# in finding this session)
def create_session(creator = FactoryGirl.create(:user), unique_session_desc = nil, genre = nil)
unique_session_desc ||= "create_join_session #{SecureRandom.urlsafe_base64}"
genre ||= 'Rock'
def create_session(options={})
creator = options[:creator] || FactoryGirl.create(:user)
unique_session_desc = options[:description] || "create_join_session #{SecureRandom.urlsafe_base64}"
genre = options[:genre] || 'Rock'
musician_access = options[:musician_access].nil? ? true : options[:musician_access]
fan_access = options[:fan_access].nil? ? true : options[:fan_access]
# create session in one client
in_client(creator) do
page.driver.resize(1500, 800) # makes sure all the elements are visible
page.driver.headers = { 'User-Agent' => ' JamKazam ' }
emulate_client
sign_in_poltergeist creator
wait_until_curtain_gone
visit "/client#/createSession"
@ -204,8 +207,9 @@ def create_session(creator = FactoryGirl.create(:user), unique_session_desc = ni
fill_in('description', :with => unique_session_desc)
#select(genre, :from => 'genres', :visible => false) # this works, but is 'cheating' because easydropdown hides the native select element
jk_select(genre, '#create-session-form select[name="genres"]')
jk_select('Public', '#create-session-form select#musician-access')
jk_select('Public', '#create-session-form select#fan-access')
jk_select(musician_access ? 'Public' : 'Private', '#create-session-form select#musician-access')
jk_select(fan_access ? 'Public' : 'Private', '#create-session-form select#fan-access')
find('#create-session-form div.musician-access-false.iradio_minimal').trigger(:click)
find('div.intellectual-property ins').trigger(:click)
find('#btn-create-session').trigger(:click) # fails if page width is low
@ -220,18 +224,20 @@ def create_session(creator = FactoryGirl.create(:user), unique_session_desc = ni
end
# this code assumes that there are no music sessions in the database. it should fail on the
# find('.join-link') call if > 1 session exists because capybara will complain of multiple matches
def join_session(joiner, unique_session_desc)
def join_session(joiner, options)
description = options[:description]
in_client(joiner) do
page.driver.resize(1500, 800) # makes sure all the elements are visible
emulate_client
sign_in_poltergeist joiner
wait_until_curtain_gone
visit "/client#/findSession"
# verify the session description is seen by second client
expect(page).to have_text(unique_session_desc)
expect(page).to have_text(description)
find('.join-link').trigger(:click)
find('#btn-accept-terms').trigger(:click)
expect(page).to have_selector('h2', text: 'my tracks')
@ -240,13 +246,21 @@ def join_session(joiner, unique_session_desc)
end
def create_join_session(creator, joiners=[], genre=nil)
creator, unique_session_desc = create_session(creator, nil, genre)
def emulate_client
page.driver.headers = { 'User-Agent' => ' JamKazam ' }
end
def create_join_session(creator, joiners=[], options={})
options[:creator] = creator
creator, unique_session_desc = create_session(options)
# find session in second client
joiners.each do |joiner|
join_session(joiner, unique_session_desc)
join_session(joiner, description: unique_session_desc)
end
return creator, unique_session_desc
end
def formal_leave_by user
@ -258,7 +272,7 @@ def formal_leave_by user
end
def start_recording_with(creator, joiners=[], genre=nil)
create_join_session(creator, joiners, genre)
create_join_session(creator, joiners, {genre: genre})
in_client(creator) do
find('#recording-start-stop').trigger(:click)
find('#recording-status').should have_content 'Stop Recording'
@ -299,15 +313,17 @@ end
def set_session_as_private()
find('#session-settings-button').trigger(:click)
within('#session-settings-dialog') do
select('Private', :from => 'session-settings-musician-access')
find('#session-settings-dialog-submit').trigger(:click)
jk_select("Private", '#session-settings-dialog #session-settings-musician-access')
#select('Private', :from => 'session-settings-musician-access')
find('#session-settings-dialog-submit').trigger(:click)
end
end
def set_session_as_public()
find('#session-settings-button').trigger(:click)
within('#session-settings-dialog') do
select('Public', :from => 'session-settings-musician-access')
jk_select("Public", '#session-settings-dialog #session-settings-musician-access')
# select('Public', :from => 'session-settings-musician-access')
find('#session-settings-dialog-submit').trigger(:click)
end
end