diff --git a/ruby/lib/jam_ruby/models/email_batch.rb b/ruby/lib/jam_ruby/models/email_batch.rb
index dc909ac27..9b13f1f4d 100644
--- a/ruby/lib/jam_ruby/models/email_batch.rb
+++ b/ruby/lib/jam_ruby/models/email_batch.rb
@@ -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)
diff --git a/ruby/lib/jam_ruby/models/music_session.rb b/ruby/lib/jam_ruby/models/music_session.rb
index 899f738fe..5a1090b28 100644
--- a/ruby/lib/jam_ruby/models/music_session.rb
+++ b/ruby/lib/jam_ruby/models/music_session.rb
@@ -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
}
diff --git a/ruby/spec/mailers/batch_mailer_spec.rb b/ruby/spec/mailers/batch_mailer_spec.rb
index b915999e8..fc430a233 100644
--- a/ruby/spec/mailers/batch_mailer_spec.rb
+++ b/ruby/spec/mailers/batch_mailer_spec.rb
@@ -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] }
diff --git a/web/app/assets/javascripts/bandProfile.js b/web/app/assets/javascripts/bandProfile.js
index 2fc6a68b6..dbd840463 100644
--- a/web/app/assets/javascripts/bandProfile.js
+++ b/web/app/assets/javascripts/bandProfile.js
@@ -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();
}
diff --git a/web/app/assets/javascripts/findSession.js b/web/app/assets/javascripts/findSession.js
index a684081cb..11001f3e3 100644
--- a/web/app/assets/javascripts/findSession.js
+++ b/web/app/assets/javascripts/findSession.js
@@ -36,13 +36,13 @@
}
function removeSpinner() {
- $('
')
+ $('div[layout-id=findSession] .content').append('')
}
function loadSessionsOriginal() {
diff --git a/web/app/assets/javascripts/searchResults.js b/web/app/assets/javascripts/searchResults.js
index 975da29e3..7cb7a0f9d 100644
--- a/web/app/assets/javascripts/searchResults.js
+++ b/web/app/assets/javascripts/searchResults.js
@@ -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) {
diff --git a/web/app/assets/javascripts/sessionList.js b/web/app/assets/javascripts/sessionList.js
index 81dfc77b3..37539b3b0 100644
--- a/web/app/assets/javascripts/sessionList.js
+++ b/web/app/assets/javascripts/sessionList.js
@@ -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);
}
diff --git a/web/app/assets/stylesheets/minimal/minimal.css.scss b/web/app/assets/stylesheets/minimal/minimal.css.scss
new file mode 100644
index 000000000..ad673a435
--- /dev/null
+++ b/web/app/assets/stylesheets/minimal/minimal.css.scss
@@ -0,0 +1,8 @@
+/**
+*= require client/ie
+*= require client/jamkazam
+*= require client/screen_common
+*= require client/content
+*= require client/ftue
+*= require minimal/minimial_main
+*/
\ No newline at end of file
diff --git a/web/app/assets/stylesheets/minimal/minimal_main.css.scss b/web/app/assets/stylesheets/minimal/minimal_main.css.scss
new file mode 100644
index 000000000..5a170e128
--- /dev/null
+++ b/web/app/assets/stylesheets/minimal/minimal_main.css.scss
@@ -0,0 +1,11 @@
+html {
+ height:100%;
+}
+
+body {
+ //position:absolute !important;
+ padding:0 !important;
+ overflow: visible !important;
+ height:100%;
+ margin:0 !important;
+}
diff --git a/web/app/controllers/videos_controller.rb b/web/app/controllers/videos_controller.rb
new file mode 100644
index 000000000..a63343776
--- /dev/null
+++ b/web/app/controllers/videos_controller.rb
@@ -0,0 +1,8 @@
+
+class VideosController < ApplicationController
+
+ def show_dialog
+ @video_id = @params[:video_id]
+ end
+
+end
\ No newline at end of file
diff --git a/web/app/views/layouts/minimal.html.erb b/web/app/views/layouts/minimal.html.erb
new file mode 100644
index 000000000..e0f490bab
--- /dev/null
+++ b/web/app/views/layouts/minimal.html.erb
@@ -0,0 +1,60 @@
+
+
+
+ <%= full_title(yield(:title)) %>
+
+
+
+
+
+ <%= stylesheet_link_tag "minimal/minimal", media: "all" %>
+ <% if bugsnag? %>
+
+
+ <% end %>
+ <%= include_gon(:init => true) %>
+ <%= csrf_meta_tags %>
+ <% if content_for?(:social_meta) %>
+ <%= yield(:social_meta) %>
+ <% else %>
+ <%= render "layouts/social_meta" %>
+ <% end %>
+
+
+
+ <%= javascript_include_tag "minimal/minimal" %>
+ <%= yield %>
+
+
+
+
+ <%= render "shared/ga" %>
+
+
+
+c
\ No newline at end of file
diff --git a/web/app/views/videos/show_dialog.html.haml b/web/app/views/videos/show_dialog.html.haml
new file mode 100644
index 000000000..e69de29bb
diff --git a/web/config/application.rb b/web/config/application.rb
index 5f1e18959..5175e0e1d 100644
--- a/web/config/application.rb
+++ b/web/config/application.rb
@@ -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?
diff --git a/web/config/routes.rb b/web/config/routes.rb
index 9f95134a5..7408b0f1e 100644
--- a/web/config/routes.rb
+++ b/web/config/routes.rb
@@ -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'
diff --git a/web/spec/features/feed_spec.rb b/web/spec/features/feed_spec.rb
index 49c98b9d0..343d26bb7 100644
--- a/web/spec/features/feed_spec.rb
+++ b/web/spec/features/feed_spec.rb
@@ -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
diff --git a/web/spec/features/home_spec.rb b/web/spec/features/home_spec.rb
index b4a529407..31abb2387 100644
--- a/web/spec/features/home_spec.rb
+++ b/web/spec/features/home_spec.rb
@@ -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
diff --git a/web/spec/features/in_session_spec.rb b/web/spec/features/in_session_spec.rb
index 992e459a9..bb24708da 100644
--- a/web/spec/features/in_session_spec.rb
+++ b/web/spec/features/in_session_spec.rb
@@ -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
diff --git a/web/spec/features/twitter_auth_spec.rb b/web/spec/features/twitter_auth_spec.rb
index 5c20e5076..40962ef94 100644
--- a/web/spec/features/twitter_auth_spec.rb
+++ b/web/spec/features/twitter_auth_spec.rb
@@ -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')
diff --git a/web/spec/features/welcome_spec.rb b/web/spec/features/welcome_spec.rb
index 355593c3d..7c23d26e7 100644
--- a/web/spec/features/welcome_spec.rb
+++ b/web/spec/features/welcome_spec.rb
@@ -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')
diff --git a/web/spec/features/whats_next_spec.rb b/web/spec/features/whats_next_spec.rb
index 4562dbdb3..9073e09ce 100644
--- a/web/spec/features/whats_next_spec.rb
+++ b/web/spec/features/whats_next_spec.rb
@@ -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
diff --git a/web/spec/support/utilities.rb b/web/spec/support/utilities.rb
index 8529365e1..74474cc65 100644
--- a/web/spec/support/utilities.rb
+++ b/web/spec/support/utilities.rb
@@ -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