* VRFS-3236 - update landing pages for jamtracks

This commit is contained in:
Seth Call 2015-05-15 15:02:00 -05:00
parent 939f8cdf82
commit 8e7ebcf3d6
39 changed files with 262 additions and 247 deletions

View File

@ -274,8 +274,11 @@ module JamRuby
# we made it past all checks; let's slap on the redeemed_fingerprint
self.redeemed_and_fingerprinted = true
MachineFingerprint.create(all_fingerprint, current_user, MachineFingerprint::TAKEN_ON_SUCCESSFUL_DOWNLOAD, MachineFingerprint::PRINT_TYPE_ALL, remote_ip, self)
MachineFingerprint.create(running_fingerprint, current_user, MachineFingerprint::TAKEN_ON_SUCCESSFUL_DOWNLOAD, MachineFingerprint::PRINT_TYPE_ACTIVE, remote_ip, self)
if all_fingerprint != running_fingerprint
MachineFingerprint.create(running_fingerprint, current_user, MachineFingerprint::TAKEN_ON_SUCCESSFUL_DOWNLOAD, MachineFingerprint::PRINT_TYPE_ACTIVE, remote_ip, self)
end
save!
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@ -9,7 +9,7 @@ context.JK.JamTrackPreview = class JamTrackPreview
@EVENTS = context.JK.EVENTS
@rest = context.JK.Rest()
@logger = context.JK.logger
@options = options || {master_shows_duration: false, color:'gray'}
@options = options || {master_shows_duration: false, color:'gray', add_line_break: false}
@app = app
@jamTrack = jamTrack
@jamTrackTrack = jamTrackTrack
@ -56,17 +56,26 @@ context.JK.JamTrackPreview = class JamTrackPreview
if @jamTrackTrack.track_type == 'Track'
part = "#{@jamTrackTrack.part}" if @jamTrackTrack.part? && @jamTrackTrack.part != instrumentDescription
@part.text("(#{part})") if part != ''
else
if @options.master_shows_duration
duration = 'entire song'
if @jamTrack.duration
duration = "#{context.JK.prettyPrintSeconds(@jamTrack.duration)}"
part = duration
else
part = @jamTrack.name + ' by ' + @jamTrack.original_artist
if @options.master_adds_line_break
part = '"' + @jamTrack.name + '"' + ' by ' + @jamTrack.original_artist
@part.html("#{part}") if part != ''
@part.addClass('adds-line-break')
else
if @options.master_shows_duration
duration = 'entire song'
if @jamTrack.duration
duration = "#{context.JK.prettyPrintSeconds(@jamTrack.duration)}"
part = duration
else
part = @jamTrack.name + ' by ' + @jamTrack.original_artist
@part.text("(#{part})") if part != ''
@part.text("(#{part})") if part != ''
if @jamTrackTrack.preview_mp3_url?

View File

@ -9,24 +9,32 @@
var logger = context.JK.logger;
var $page = null;
var $jamtrack_name = null;
var $jamtrack_band = null;
var $previews = null;
var $jamTracksButton = null;
var $genericHeader = null;
var $individualizedHeader = null;
var $ctaJamTracksButton = null;
function fetchJamTrack() {
rest.getJamTrack({plan_code: gon.jam_track_plan_code})
rest.getJamTrackWithArtistInfo({plan_code: gon.jam_track_plan_code})
.done(function (jam_track) {
logger.debug("jam_track", jam_track)
if(!gon.just_previews) {
if (gon.generic) {
$genericHeader.removeClass('hidden');
$jamTracksButton.attr('href', '/client#/jamtrackBrowse')
$jamTracksButton.removeClass('hidden').text("Check out all 100+ JamTracks")
}
else {
$individualizedHeader.removeClass('hidden')
$jamtrack_name.text(jam_track.name);
$jamtrack_name.text('"' + jam_track.name + '"');
$jamtrack_band.text(jam_track.original_artist)
$jamTracksButton.attr('href', '/client?artist=' + jam_track.original_artist + '#/jamtrackBrowse')
$jamTracksButton.removeClass('hidden').text("Preview all " + jam_track.band_jam_track_count + " of our " + jam_track.original_artist + " JamTracks")
$ctaJamTracksButton.attr('href', '/client?artist=' + jam_track.original_artist + '#/jamtrackBrowse')
}
}
@ -36,24 +44,28 @@
$previews.append($element);
new context.JK.JamTrackPreview(app, $element, jam_track, track, {master_shows_duration: false, color:'black'})
new context.JK.JamTrackPreview(app, $element, jam_track, track, {master_shows_duration: false, color:'black', master_adds_line_break: true})
})
$previews.append('<br clear = "all" />')
})
.fail(function () {
app.notify({title: 'Unable to fetch JamTrack', text: "Please refresh the page or try again later."})
})
}
function initialize() {
$page = $('body')
$jamtrack_name = $page.find('.jamtrack_name')
$jamtrack_band = $page.find('.jamtrack_band')
$previews = $page.find('.previews')
$jamTracksButton = $page.find('.browse-jamtracks-wrapper .white-bordered-button')
$jamTracksButton = $page.find('.browse-jamtracks')
$ctaJamTracksButton = $page.find('.cta-free-jamtrack');
$genericHeader = $page.find('h1.generic')
$individualizedHeader = $page.find('h1.individualized')
fetchJamTrack();
}

View File

@ -13,27 +13,28 @@
var $jamTrackNoun = null;
var $previews = null;
var $jamTracksButton = null;
var $jamtrack_band = null;
var $checkItOut = null;
var $ctaJamTracksButton = null;
function fetchJamTrack() {
rest.getJamTrackWithArtistInfo({plan_code: gon.jam_track_plan_code})
.done(function (jam_track) {
logger.debug("jam_track", jam_track)
$jamTrackBandInfo.text(jam_track.band_jam_track_count + ' ' + jam_track.original_artist);
$jamtrack_band.text(jam_track.original_artist)
$jamTracksButton.attr('href', '/client?artist=' + jam_track.original_artist + '#/jamtrackBrowse')
$jamTracksButton.removeClass('hidden').text("Preview all " + jam_track.band_jam_track_count + " of our " + jam_track.original_artist + " JamTracks")
$ctaJamTracksButton.attr('href', '/client?artist=' + jam_track.original_artist + '#/jamtrackBrowse')
if(jam_track.band_jam_track_count == 1) {
$jamTrackNoun.text('JamTrack')
$checkItOut.text(', Check It Out!')
}
context._.each(jam_track.tracks, function (track) {
var $element = $('<div class="jam-track-preview-holder"></div>')
$previews.append($element);
new context.JK.JamTrackPreview(app, $element, jam_track, track, {master_shows_duration: false, color:'black'})
new context.JK.JamTrackPreview(app, $element, jam_track, track, {master_shows_duration: false, color:'black', master_adds_line_break:true})
})
$previews.append('<br clear = "all" />')
@ -48,9 +49,9 @@
$page = $('body')
$jamTrackBandInfo = $page.find('.jamtrack_band_info')
$previews = $page.find('.previews')
$jamTracksButton = $page.find('.browse-jamtracks-wrapper .white-bordered-button')
$jamTrackNoun = $page.find('.jamtrack_noun')
$checkItOut = $page.find('.check-it-out')
$jamtrack_band = $page.find('.jamtrack_band')
$jamTracksButton = $page.find('.browse-jamtracks')
$ctaJamTracksButton = $page.find('.cta-free-jamtrack');
fetchJamTrack();
}

View File

@ -68,4 +68,10 @@
display:none;
}
}
.adds-line-break {
display:block;
margin-left:66px;
vertical-align: top;
}
}

View File

@ -16,17 +16,20 @@ body.web.landing_jamtrack.individual_jamtrack {
width:90%;
}
.prompt {
margin-top:10px;
}
.jam-track-preview-holder {
margin-bottom: 7px;
float: left;
&[data-track-type="Master"] {
width: 100%;
}
&[data-track-type="Track"] {
width: 50%;
width: 100%;
}
}
}

View File

@ -16,17 +16,20 @@ body.web.landing_jamtrack.individual_jamtrack_band {
width:90%;
}
.prompt {
margin-top:10px;
}
.jam-track-preview-holder {
margin-bottom: 7px;
float: left;
&[data-track-type="Master"] {
width: 100%;
}
&[data-track-type="Track"] {
width: 50%;
width: 100%;
}
}
}

View File

@ -2,6 +2,28 @@
body.web.landing_page {
div.cta-free-jamtrack {
top: 32px;
position: absolute;
left: 383px;
a {
width: 296px;
height: 57px;
}
.value-indicator {
position:absolute;
left: 311px;
top: 19px;
width:80px;
}
img {
height:100%;
width:100%;
}
}
.two_by_two {
h1 {
@ -29,6 +51,41 @@ body.web.landing_page {
}
}
.one_by_two {
h1 {
margin:0 0 5px;
padding:7px 0;
display:inline-block;
&.hidden {
display:none;
}
}
.row {
@include border_box_sizing;
&:nth-of-type(1) {
padding:20px 0 0 0;
}
.column {
@include border_box_sizing;
&:nth-of-type(1) {
width:35%;
}
&:nth-of-type(2) {
width:65%;
}
}
}
.video-container {
width:100%;
padding-bottom:56.25%;
}
}
&.landing_jamtrack, &.landing_product {
.landing-tag {

View File

@ -139,7 +139,7 @@ class ApiJamTracksController < ApiController
# jamtracks come in the form id-44 or id-48, so we need to do a little extra parsing
puts "#{jamtracks.inspect}"
jamtrack_ids = Set.new
jamtracks_fq_ids = Set.new
jamtracks.each do |jamtrack|
@ -151,8 +151,6 @@ class ApiJamTracksController < ApiController
end
end
puts "#{jamtrack_ids.inspect} #{jamtracks_fq_ids.inspect}"
@jam_tracks = JamTrackRight.list_keys(current_user, jamtrack_ids)
@jamtracks_fq_ids = jamtracks_fq_ids
end

View File

@ -67,6 +67,8 @@ class LandingsController < ApplicationController
end
def individual_jamtrack
@no_landing_tag = true
@show_cta_free_jamtrack = true
@jam_track = JamTrack.find_by_plan_code("jamtrack-" + params[:plan_code])
gon.jam_track_plan_code = params[:plan_code] ? "jamtrack-" + params[:plan_code] : nil
gon.generic = params[:generic]
@ -74,6 +76,8 @@ class LandingsController < ApplicationController
end
def individual_jamtrack_band
@no_landing_tag = true
@show_cta_free_jamtrack = true
@jam_track = JamTrack.find_by_plan_code("jamtrack-" + params[:plan_code])
gon.jam_track_plan_code = params[:plan_code] ? "jamtrack-" + params[:plan_code] : nil

View File

@ -10,7 +10,7 @@
<!-- inner wrapper -->
<div class="overlay-video-inner">
<iframe id="video-dialog-iframe" width="550" height="309" frameborder="0" allowfullscreen></iframe>
<iframe id="video-dialog-iframe" width="550" height="309" frameborder="0" allowfullscreen="allowfullscreen"></iframe>
</div>
<!-- end inner -->

View File

@ -1,42 +1,26 @@
- provide(:page_name, 'landing_page full landing_jamtrack individual_jamtrack')
- provide(:description, @jam_track.nil? ? nil : "Preview multi-track JamTrack recording: #{@jam_track.name} by #{@jam_track.original_artist}. Way better than a backing track.")
.two_by_two
.one_by_two
.row
.column
h1.hidden.individualized
| Check Out Our&nbsp;
| Preview&nbsp;
strong.jamtrack_name
| &nbsp;JamTrack
br
| JamTrack by&nbsp;
span.jamtrack_band
h1.hidden.generic
| We Have 100+ Amazing JamTracks, Check One Out!
p Click the play buttons below to hear the master mix and each fully isolated track. All are included in each single JamTrack.
| Preview One of Our JamTracks
p.prompt Click play buttons to preview tracks. Every JamTrack includes fully isolated tracks for each part of the song!
.previews
a.browse-jamtracks.hidden
.column
h1 See What You Can Do With JamTracks
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/askHvcCoNfw" frameborder="0" allowfullscreen
br clear="all"
.row
.column
h1
| Get Your First JamTrack Free Now!
p Click the GET A JAMTRACK FREE button below. Browse to find the one you want. Click Add to cart, and we'll apply a credit during checkout to make this first one free! We're confident you'll be back for more.
.browse-jamtracks-wrapper
a.white-bordered-button href="/client#/jamtrackBrowse" GET A JAMTRACK FREE!
.column
h1 Why Are JamTracks Different & Better?
p
| JamTracks are the best way to play with your favorite music.&nbsp;
| Unlike traditional backing tracks, JamTracks are complete multitrack recordings,&nbsp;
| with fully isolated tracks for each part. Used with the free JamKazam app/service, you can:
ul.jamtrack-reasons
li Solo just the individual track you want to play to hear and learn it
li Mute just the track you want to play, and play along with the rest
li Make audio recordings and share them via Facebook or URL
li Make video recordings and share them via YouTube or URL
li And even go online to play JamTracks with others in real time!
iframe src="//www.youtube.com/embed/askHvcCoNfw" frameborder="0" allowfullscreen="allowfullscreen"
br clear="all"
br clear="all"

View File

@ -1,42 +1,22 @@
- provide(:page_name, 'landing_page full landing_jamtrack individual_jamtrack_band')
- provide(:description, @jam_track.nil? ? nil : "Preview multi-track JamTrack recording: #{@jam_track.name} by #{@jam_track.original_artist}. Way better than a backing track.")
.two_by_two
.one_by_two
.row
.column
h1
| We Have&nbsp;
span.jamtrack_band_info
| &nbsp;
span.jamtrack_noun JamTracks
span.check-it-out , Check One Out!
p Click the play buttons below to hear the master mix and each fully isolated track. All are included in each single JamTrack.
| Preview a&nbsp;
| JamTrack by&nbsp;
span.jamtrack_band
p.prompt Click play buttons to preview tracks. Every JamTrack includes fully isolated tracks for each part of the song!
.previews
a.browse-jamtracks.hidden
.column
h1 See What You Can Do With JamTracks
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/askHvcCoNfw" frameborder="0" allowfullscreen
br clear="all"
.row
.column
h1
| Get Your First JamTrack Free Now!
p Click the GET A JAMTRACK FREE button below. Browse to find the one you want. Click Add to cart, and we'll apply a credit during checkout to make this first one free! We're confident you'll be back for more.
.browse-jamtracks-wrapper
a.white-bordered-button href="/client#/jamtrackBrowse" GET A JAMTRACK FREE!
.column
h1 Why Are JamTracks Different & Better?
p
| JamTracks are the best way to play with your favorite music.&nbsp;
| Unlike traditional backing tracks, JamTracks are complete multitrack recordings,&nbsp;
| with fully isolated tracks for each part. Used with the free JamKazam app/service, you can:
ul.jamtrack-reasons
li Solo just the individual track you want to play to hear and learn it
li Mute just the track you want to play, and play along with the rest
li Make audio recordings and share them via Facebook or URL
li Make video recordings and share them via YouTube or URL
li And even go online to play JamTracks with others in real time!
iframe src="//www.youtube.com/embed/askHvcCoNfw" frameborder="0" allowfullscreen="allowfullscreen"
br clear="all"
br clear="all"

View File

@ -18,7 +18,7 @@
h1 See What You Can Do With The JamBlaster
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/YHZQHfKDdMc" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/YHZQHfKDdMc" frameborder="0" allowfullscreen="allowfullscreen"
br clear="all"
.row
.column

View File

@ -13,7 +13,7 @@
h1 See What You Can With JamTracks
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/askHvcCoNfw" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/askHvcCoNfw" frameborder="0" allowfullscreen="allowfullscreen"
br clear="all"
.row
.column

View File

@ -21,7 +21,7 @@
h1 See What You Can Do With JamKazam
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen="allowfullscreen"
br clear="all"
.row
.column

View File

@ -5,7 +5,7 @@
h1 Watch 6 Bands Play Together from Different Locations
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/I2reeNKtRjg" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/I2reeNKtRjg" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
h2 It's FREE! Ready to Go?
= link_to image_tag("web/cta_button.png", :alt => "Sign up now for your free account!"), signup_path, class: "signup", id: "signup"

View File

@ -5,7 +5,7 @@
h1 See How JamKazam Works
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
h2 It's FREE! Ready to Go?
= link_to image_tag("web/cta_button.png", :alt => "Sign up now for your free account!"), signup_path, class: "signup", id: "signup"

View File

@ -5,7 +5,7 @@
h1 See How to Get Started
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/DBo--aj_P1w" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/DBo--aj_P1w" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
h2 It's FREE! Ready to Go?
= link_to image_tag("web/cta_button.png", :alt => "Sign up now for your free account!"), signup_path, class: "signup", id: "signup"

View File

@ -4,7 +4,7 @@
h1 Watch 6 Bands Play Together from Different Locations
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/I2reeNKtRjg" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/I2reeNKtRjg" frameborder="0" allowfullscreen="allowfullscreen"
.row
.column
.cta-container

View File

@ -7,7 +7,7 @@
b &nbsp;JamBlaster
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/gAJAIHMyois?rel=0&autoplay=1" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/gAJAIHMyois?rel=0&autoplay=1" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
h1
span.badge-number 3
@ -20,7 +20,7 @@
| Learn About the Free JamKazam Service
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
h1
span.badge-number 4

View File

@ -9,7 +9,7 @@
p Band performance starts at 1:00 mark
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/gAJAIHMyois" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/gAJAIHMyois" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
p
| If you don't own an audio interface, we strongly recommend that you grab a JamBlaster on KickStarter now. It is far faster than traditional interfaces and easily&nbsp;

View File

@ -12,7 +12,7 @@
b JamBlaster
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/2Zk7-04IAx4?rel=0&autoplay=1" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/2Zk7-04IAx4?rel=0&autoplay=1" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
p
| If you want to be able to play like this, grab a JamBlaster on KickStarter while it's available - only about 20 more days!

View File

@ -6,7 +6,7 @@
| Learn About the Free JamKazam Service
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
p
| If you already own an audio interface, you are ready to go!
@ -22,7 +22,7 @@
| from Atlanta, Austin, Chicago & Brooklyn
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/2Zk7-04IAx4" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/2Zk7-04IAx4" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
p
| If you don't already own an audio interface, grab a JamBlaster on KickStarter today! Absolutely the best way to play online.

View File

@ -5,7 +5,7 @@
h1 Watch Video to See How JamKazam Works
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
h2 It's FREE! Ready to Go?
= link_to image_tag("web/cta_button.png", :alt => "Sign up now for your free account!"), signup_path, class: "signup", id: "signup", rel: "external"
@ -15,7 +15,7 @@
b &nbsp;JamBlaster
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/gAJAIHMyois" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/gAJAIHMyois" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
h2 More Resources:
a href="https://www.youtube.com/watch?v=_7qj5RXyHCo" rel="external"

View File

@ -5,7 +5,7 @@
h1 Watch 6 Bands Play Together from Different Locations
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/I2reeNKtRjg" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/I2reeNKtRjg" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
h2 It's FREE! Ready to Go?
= link_to image_tag("web/cta_button.png", :alt => "Sign up now for your free account!"), signup_path, class: "signup", id: "signup"

View File

@ -5,7 +5,7 @@
h1 See How to Get Started Using JamKazam
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/DBo--aj_P1w" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/DBo--aj_P1w" frameborder="0" allowfullscreen="allowfullscreen"
.cta-container
h2 It's FREE! Ready to Go?
= link_to image_tag("web/cta_button.png", :alt => "Sign up now for your free account!"), signup_path, class: "signup", id: "signup"

View File

@ -4,7 +4,7 @@
h1 Watch Overview Video to See How JamKazam Works
.video-wrapper
.video-container
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen="allowfullscreen"
.row
.column
.cta-container

View File

@ -54,13 +54,20 @@
<% end %>
</div>
<% unless @welcome_page %>
<% unless @welcome_page || @no_landing_tag %>
<div class="landing-tag <%= @no_user_dropdown ? 'no-user-dropdown' : '' %>">
<h1>Live music platform & <br/> social network for musicians</h1>
</div>
<div class="clearall"></div>
<% end %>
<% if @show_cta_free_jamtrack %>
<div class="cta-free-jamtrack">
<%= link_to image_tag("web/free-jamtrack-cta.png", :alt => "ClICK HERE TO PICK YOUR FIRST JAMTRACK FREE!"), "/client#/jamtrackBrowse", class: "cta-free-jamtrack" %>
<span class="value-indicator">$1.99 value</span>
</div>
<% end %>
</div>
<div class="landing-content">

View File

@ -47,7 +47,7 @@
| &nbsp;for your first JamTrack - free! Add it to your shopping cart, and we'll
| &nbsp;make it free during the checkout process. Free offer good for 1 week only!
.video-container
iframe src="//www.youtube.com/embed/askHvcCoNfw" frameborder="0" allowfullscreen
iframe src="//www.youtube.com/embed/askHvcCoNfw" frameborder="0" allowfullscreen="allowfullscreen"
a.go-jamtrack-shopping href="/client#/jamtrackBrowse" rel="external"
| Shop for free

View File

@ -15,6 +15,7 @@ describe ApiJamTracksController do
end
before(:each) do
MachineFingerprint.destroy_all
JamTrackRight.destroy_all
JamTrack.destroy_all
@user = FactoryGirl.create(:user)
@ -65,7 +66,7 @@ describe ApiJamTracksController do
it "finds a download" do
#get "/download/#{right.id}/"
right = JamTrackRight.create(:user=>@user, :jam_track=>@jam_track)
get :download, { :format=>'json', :id=>@jam_track.id }
get :download, { :format=>'json', :id=>@jam_track.id, all_fp: 'all', running_fp: 'running' }
response.should be_success
response.status.should == 202
@ -142,12 +143,13 @@ describe ApiJamTracksController do
ResqueSpec.reset!
end
it "download depends on rights" do
get :download, :id=>@jam_track.id, sample_rate: 48
it "download depends on rights" do
fingerprint={all:'all', running:'running'}
get :download, :id=>@jam_track.id, sample_rate: 48, all_fp: 'all', running_fp: 'running'
response.status.should == 403
right = JamTrackRight.create(:user=>@user, :jam_track=>@jam_track)
get :download, :id=>@jam_track.id, sample_rate: 48
get :download, :id=>@jam_track.id, sample_rate: 48, all_fp: 'all', running_fp: 'running'
response.status.should == 202
right.download_count.should eq(0)
right.private_key_44.should be_nil
@ -166,20 +168,19 @@ describe ApiJamTracksController do
right.private_key_48.should_not be_nil
right.download_count.should eq(0)
get :download, :id=>@jam_track.id, sample_rate: 48
get :download, :id=>@jam_track.id, sample_rate: 48, all_fp: 'all', running_fp: 'running'
response.status.should == 302
puts response.location
response.location.should =~ /.*#{Regexp.escape(right.filename(:url_48))}.*/
right.reload
right.download_count.should eq(1)
end
it "supports multiple bitrates" do
get :download, :id=>@jam_track.id, :sample_rate=>44
get :download, :id=>@jam_track.id, :sample_rate=>44, all_fp: 'all', running_fp: 'running'
response.status.should == 403
right = JamTrackRight.create(:user=>@user, :jam_track=>@jam_track)
get :download, :id=>@jam_track.id, :sample_rate=>44
get :download, :id=>@jam_track.id, :sample_rate=>44, all_fp: 'all', running_fp: 'running'
response.status.should == 202
right.download_count.should eq(0)
right.private_key_44.should be_nil
@ -198,7 +199,7 @@ describe ApiJamTracksController do
right.private_key_48.should be_nil
right.download_count.should eq(0)
get :download, :id=>@jam_track.id, :sample_rate=>44
get :download, :id=>@jam_track.id, :sample_rate=>44, all_fp: 'all', running_fp: 'running'
response.status.should == 302
response.location.should =~ /.*#{Regexp.escape(right.filename(:url_44))}.*/
right.reload
@ -276,7 +277,7 @@ describe ApiJamTracksController do
it "success" do
right = FactoryGirl.create(:jam_track_right, user: @user, signed_44: false, signed_48:false)
right.signing_queued_at.should be_nil
post :enqueue, {:format=>'json', :id=>right.jam_track.id}
post :enqueue, {:format=>'json', :id=>right.jam_track.id, fingerprint: {all: 'all', running: 'running'} }
response.should be_success
right.reload
@ -295,4 +296,49 @@ describe ApiJamTracksController do
json['error_count'].should eq(0)
end
end
describe "guard fraud" do
it "stops second user from downloading using same machine" do
right = JamTrackRight.create(:user=>@user, :jam_track=>@jam_track)
right.redeemed = true
right.save!
get :download, :id=>@jam_track.id, sample_rate: 48, all_fp: 'all', running_fp: 'running'
response.status.should == 202
user2 = FactoryGirl.create(:user)
controller.current_user = user2
right = JamTrackRight.create(:user=>user2, :jam_track=>@jam_track)
right.redeemed = true
right.save!
get :download, :id=>@jam_track.id, sample_rate: 48, all_fp: 'all', running_fp: 'running'
response.status.should == 403
JSON.parse(response.body)['message'].should eq("other user has 'all' fingerprint")
end
it "stops second user from enqueuing using same machine" do
right = JamTrackRight.create(:user=>@user, :jam_track=>@jam_track)
right.redeemed = true
right.save!
right.signing_queued_at.should be_nil
post :enqueue, {:format=>'json', :id=>right.jam_track.id, fingerprint: {all: 'all', running: 'running'} }
response.should be_success
user2 = FactoryGirl.create(:user)
controller.current_user = user2
right = JamTrackRight.create(:user=>user2, :jam_track=>@jam_track)
right.redeemed = true
right.save!
right.signing_queued_at.should be_nil
post :enqueue, {:format=>'json', :id=>right.jam_track.id, fingerprint: {all: 'all', running: 'running'} }
get :download, :id=>@jam_track.id, sample_rate: 48, all_fp: 'all', running_fp: 'running'
response.status.should == 403
JSON.parse(response.body)['message'].should eq("other user has 'all' fingerprint")
end
end
end

View File

@ -55,7 +55,7 @@ describe ApiShoppingCartsController do
describe "anonymous" do
let(:user) { AnonymousUser.new('abc') }
let(:user) { AnonymousUser.new('abc', {}) }
before(:each) do
controller.current_user = nil

View File

@ -3,7 +3,7 @@ require 'spec_helper'
describe ApiSignupHintsController, :type=>:controller do
render_views
let(:user) {AnonymousUser.new(SecureRandom.uuid)}
let(:user) {AnonymousUser.new(SecureRandom.uuid, {})}
before(:each) do
SignupHint.delete_all

View File

@ -15,60 +15,19 @@ describe "Individual JamTrack Band", :js => true, :type => :feature, :capybara_f
let(:user) { FactoryGirl.create(:user) }
let(:jamtrack_acdc_backinblack) { @jamtrack_acdc_backinblack }
let(:billing_info) {
{
first_name: 'Seth',
last_name: 'Call',
address1: '10704 Buckthorn Drive',
city: 'Austin',
state: 'Texas',
country: 'US',
zip: '78759',
number: '4111111111111111',
month: '08',
year: '2017',
verification_value: '012'
}
}
def create_account(user, billing_info)
@recurlyClient.create_account(user, billing_info)
@created_accounts << user
end
before(:all) do
@recurlyClient = RecurlyClient.new
@created_accounts = []
@jamtrack_acdc_backinblack = FactoryGirl.create(:jam_track, name: 'Back in Black', original_artist: 'AC/DC', sales_region: 'United States', make_track: true, plan_code: 'jamtrack-acdc-backinblack')
end
# make sure tax estimate plans are there
@recurlyClient.create_jam_track_plan(@jamtrack_acdc_backinblack) unless @recurlyClient.find_jam_track_plan(@jamtrack_acdc_backinblack)
end
after(:each) do
@created_accounts.each do |user|
if user.recurly_code
begin
@account = Recurly::Account.find(user.recurly_code)
if @account.present?
@account.destroy
end
rescue
end
end
end
end
describe "AC/DC Back in Black" do
it "logged out" do
visit "/landing/jamtracks/band/acdc-backinblack"
find('h1', text: "We Have 1 #{@jamtrack_acdc_backinblack.original_artist} JamTrack, Check It Out!")
find('.jamtrack_band', text: @jamtrack_acdc_backinblack.original_artist)
jamtrack_acdc_backinblack.jam_track_tracks.each do |track|
if track.master?
find('.jam-track-preview-holder[data-id="' + track.id + '"] img.instrument-icon[data-instrument-id="other"]')
@ -78,16 +37,17 @@ describe "Individual JamTrack Band", :js => true, :type => :feature, :capybara_f
find('.jam-track-preview-holder[data-id="' + track.id + '"] .instrument-name', text:track.instrument.description)
end
end
find('a.white-bordered-button')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.cta-free-jamtrack')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.browse-jamtracks')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.white-bordered-button').trigger(:click)
find('a.browse-jamtracks').trigger(:click)
find('h1', text: 'jamtracks')
end
it "logged in" do
fast_signin(user, "/landing/jamtracks/band/acdc-backinblack")
find('h1', text: "We Have 1 #{@jamtrack_acdc_backinblack.original_artist} JamTrack, Check It Out!")
find('.jamtrack_band', text: @jamtrack_acdc_backinblack.original_artist)
jamtrack_acdc_backinblack.jam_track_tracks.each do |track|
if track.master?
find('.jam-track-preview-holder[data-id="' + track.id + '"] img.instrument-icon[data-instrument-id="other"]')
@ -97,9 +57,10 @@ describe "Individual JamTrack Band", :js => true, :type => :feature, :capybara_f
find('.jam-track-preview-holder[data-id="' + track.id + '"] .instrument-name', text:track.instrument.description)
end
end
find('a.white-bordered-button')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.cta-free-jamtrack')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.browse-jamtracks')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.white-bordered-button').trigger(:click)
find('a.browse-jamtracks').trigger(:click)
find('h1', text: 'jamtracks')
end
end

View File

@ -31,44 +31,19 @@ describe "Individual JamTrack", :js => true, :type => :feature, :capybara_featur
}
}
def create_account(user, billing_info)
@recurlyClient.create_account(user, billing_info)
@created_accounts << user
end
before(:all) do
@recurlyClient = RecurlyClient.new
@created_accounts = []
@jamtrack_acdc_backinblack = FactoryGirl.create(:jam_track, name: 'Back in Black', original_artist: 'AC/DC', sales_region: 'United States', make_track: true, plan_code: 'jamtrack-acdc-backinblack')
end
# make sure plans are there
@recurlyClient.create_jam_track_plan(@jamtrack_acdc_backinblack) unless @recurlyClient.find_jam_track_plan(@jamtrack_acdc_backinblack)
end
after(:each) do
@created_accounts.each do |user|
if user.recurly_code
begin
@account = Recurly::Account.find(user.recurly_code)
if @account.present?
@account.destroy
end
rescue
end
end
end
end
describe "AC/DC Back in Black" do
it "logged out" do
visit "/landing/jamtracks/acdc-backinblack"
find('h1', text: 'Check Out Our Back in Black JamTrack')
find('.jamtrack_name', '"Back in Black"')
find('.jamtrack_band', '"AC/DC"')
jamtrack_acdc_backinblack.jam_track_tracks.each do |track|
if track.master?
find('.jam-track-preview-holder[data-id="' + track.id + '"] img.instrument-icon[data-instrument-id="other"]')
@ -78,16 +53,18 @@ describe "Individual JamTrack", :js => true, :type => :feature, :capybara_featur
find('.jam-track-preview-holder[data-id="' + track.id + '"] .instrument-name', text:track.instrument.description)
end
end
find('a.white-bordered-button')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.cta-free-jamtrack')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.browse-jamtracks')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.white-bordered-button').trigger(:click)
find('a.browse-jamtracks').trigger(:click)
find('h1', text: 'jamtracks')
end
it "logged in" do
fast_signin(user, "/landing/jamtracks/acdc-backinblack")
find('h1', text: 'Check Out Our Back in Black JamTrack')
find('.jamtrack_name', '"Back in Black"')
find('.jamtrack_band', '"AC/DC"')
jamtrack_acdc_backinblack.jam_track_tracks.each do |track|
if track.master?
find('.jam-track-preview-holder[data-id="' + track.id + '"] img.instrument-icon[data-instrument-id="other"]')
@ -97,16 +74,17 @@ describe "Individual JamTrack", :js => true, :type => :feature, :capybara_featur
find('.jam-track-preview-holder[data-id="' + track.id + '"] .instrument-name', text:track.instrument.description)
end
end
find('a.white-bordered-button')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.cta-free-jamtrack')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.browse-jamtracks')['href'].should eq("/client?artist=#{jamtrack_acdc_backinblack.original_artist}#/jamtrackBrowse")
find('a.white-bordered-button').trigger(:click)
find('a.browse-jamtracks').trigger(:click)
find('h1', text: 'jamtracks')
end
it "generic version" do
visit "/landing/jamtracks/acdc-backinblack?generic=true"
find('h1', text: 'We Have 100+ Amazing JamTracks, Check One Out!')
find('h1', text: 'Preview One of Our JamTracks')
jamtrack_acdc_backinblack.jam_track_tracks.each do |track|
if track.master?
find('.jam-track-preview-holder[data-id="' + track.id + '"] img.instrument-icon[data-instrument-id="other"]')
@ -116,10 +94,13 @@ describe "Individual JamTrack", :js => true, :type => :feature, :capybara_featur
find('.jam-track-preview-holder[data-id="' + track.id + '"] .instrument-name', text:track.instrument.description)
end
end
find('a.white-bordered-button')['href'].should eq("/client#/jamtrackBrowse")
find('a.cta-free-jamtrack')['href'].should eq("/client#/jamtrackBrowse")
find('a.browse-jamtracks')['href'].should eq("/client#/jamtrackBrowse")
find('a.white-bordered-button').trigger(:click)
find('a.browse-jamtracks').trigger(:click)
find('h1', text: 'jamtracks')
end
end
end

View File

@ -35,9 +35,9 @@ describe "JamTrack Shopping", :js => true, :type => :feature, :capybara_feature
def find_jamtrack jamtrack, options = {}
jamtrack_record = find(".jamtrack-record[jamtrack-id=\"#{jamtrack.id}\"]")
jamtrack_record.find('.detail-value', text: jamtrack.name)
#jamtrack_record.find('.detail-value', text: jamtrack.name)
#jamtrack_record.find('.detail-value', text: jamtrack.recording_type)
jamtrack_record.find('.detail-value', text: jamtrack.original_artist)
#jamtrack_record.find('.detail-value', text: jamtrack.original_artist)
# jamtrack_record.find('.detail-value', text: jamtrack.genre.description)
# jamtrack_record.find('.detail-value', text: [jamtrack.songwriter, jamtrack.publisher].join(', '))
# jamtrack_record.find('.copyright-value', text: jamtrack.licensor.name)

View File

@ -15,54 +15,14 @@ describe "Product Pages", :js => true, :type => :feature, :capybara_feature => t
let(:user) { FactoryGirl.create(:user) }
let(:jamtrack_acdc_backinblack) { @jamtrack_acdc_backinblack }
let(:billing_info) {
{
first_name: 'Seth',
last_name: 'Call',
address1: '10704 Buckthorn Drive',
city: 'Austin',
state: 'Texas',
country: 'US',
zip: '78759',
number: '4111111111111111',
month: '08',
year: '2017',
verification_value: '012'
}
}
def create_account(user, billing_info)
@recurlyClient.create_account(user, billing_info)
@created_accounts << user
end
before(:all) do
@recurlyClient = RecurlyClient.new
@created_accounts = []
@jamtrack_acdc_backinblack = FactoryGirl.create(:jam_track, name: 'Back in Black', original_artist: 'AC/DC', sales_region: 'United States', make_track: true, plan_code: 'jamtrack-acdc-backinblack')
# make sure plans are there
@recurlyClient.create_jam_track_plan(@jamtrack_acdc_backinblack) unless @recurlyClient.find_jam_track_plan(@jamtrack_acdc_backinblack)
end
after(:each) do
@created_accounts.each do |user|
if user.recurly_code
begin
@account = Recurly::Account.find(user.recurly_code)
if @account.present?
@account.destroy
end
rescue
end
end
end
end
describe "JamBlaster" do
before(:all) do

View File

@ -293,7 +293,7 @@ describe "Signup", :js => true, :type => :feature, :capybara_feature => true do
# get a anonymous cookie set up
anon_user_id = page.driver.cookies["user_uuid"]
anon_user = AnonymousUser.new(anon_user_id.value)
anon_user = AnonymousUser.new(anon_user_id.value, {})
SignupHint.refresh_by_anoymous_user(anon_user, {redirect_location: '/products/jamblaster', want_jamblaster: true})
visit signup_path
@ -321,7 +321,7 @@ describe "Signup", :js => true, :type => :feature, :capybara_feature => true do
# get a anonymous cookie set up
anon_user_id = page.driver.cookies["user_uuid"]
anon_user = AnonymousUser.new(anon_user_id.value)
anon_user = AnonymousUser.new(anon_user_id.value, {})
hint = SignupHint.refresh_by_anoymous_user(anon_user, {redirect_location: '/products/jamblaster', want_jamblaster: true})
hint.expires_at = 1.day.ago
hint.save!