remove influxdb as dependency to ruby project

This commit is contained in:
Seth Call 2016-04-26 22:22:49 -05:00
parent 5c246dc182
commit dd84a3ebf7
25 changed files with 218 additions and 156 deletions

View File

@ -6,12 +6,13 @@ ActiveAdmin.register JamRuby::User, :as => 'Students' do
config.batch_actions = false
config.per_page = 100
config.paginate = true
config.filters = false
def booked_anything(scope)
def booked_anything(scope)
scope.joins(:student_lesson_bookings).where('lesson_bookings.active = true').uniq
end
scope("Default", default: true) { |scope| booked_anything(scope).order('ready_for_session_at IS NULL DESC') }
scope("Default", default: true) { |scope| scope.where('is_a_student = true OR ((select count(id) from lesson_bookings where lesson_bookings.user_id = users.id) > 0)').order('users.ready_for_session_at IS NULL DESC') }
index do
column "Name" do |user|
@ -45,8 +46,8 @@ ActiveAdmin.register JamRuby::User, :as => 'Students' do
end
end
column "School" do |user|
if teacher.school
teacher.school.name
if user.school
user.school.name
end
end
end

View File

@ -49,7 +49,7 @@ gem 'rest-client'
gem 'iso-639'
gem 'rubyzip'
gem 'sanitize'
gem 'influxdb'
#gem 'influxdb'
gem 'recurly'
gem 'sendgrid_toolkit', '>= 1.1.1'
gem 'stripe'

View File

@ -1,5 +1,5 @@
require 'influxdb'
#require 'influxdb'
# monkey patch InfluxDB client to clear the queue when asked to stop
=begin

View File

@ -47,7 +47,7 @@ module JamRuby
has_and_belongs_to_many :teachers, :class_name => "JamRuby::Teacher", :join_table => "teachers_instruments"
def self.standard_list
return Instrument.where('instruments.popularity > 0').order('instruments.popularity DESC, instruments.description ASC')
return Instrument.where('instruments.popularity > 0').order('instruments.description ASC')
end
def self.jam_track_list

View File

@ -264,7 +264,6 @@ module JamRuby
start_day = first_day
if last_session
puts "last session causing a scoot"
start_day = last_session.scheduled_start.to_date + 1
end

View File

@ -17,12 +17,9 @@ module JamRuby
true_start = session.scheduled_start.to_date
end
puts "filter out anything before start #{true_start}"
# filter out anything before the start day
times.select! { |time| time.to_date >= true_start }
puts "times #{times.length}"
result = nil
if times.length == 0
result = 0

View File

@ -101,7 +101,7 @@ module JamRuby
has_many :followers, :as => :followable, :class_name => "JamRuby::Follow", :dependent => :destroy
# text messages
has_many :text_messages, :class_name => "JamRuby:TextMessage", :foreign_key => "target_user_id"
has_many :text_messages, :class_name => "JamRuby::TextMessage", :foreign_key => "target_user_id"
# notifications
has_many :notifications, :class_name => "JamRuby::Notification", :foreign_key => "target_user_id"

View File

@ -44,6 +44,12 @@
}
resetForm();
renderAccountProfile();
setTimeout(function() {
var $header = $('#account-edit-profile-form h2')
console.log("header ", $header, $screen)
context.JK.HelpBubbleHelper.teacherMusicianProfile($header, $screen);
}, 2000)
}
function resetForm() {
@ -80,8 +86,6 @@
$('select#user_birth_date_2i', content_root).val(parseInt(birthDateMonth));
$('select#user_birth_date_3i', content_root).val(parseInt(birthDateDay));
}
context.JK.dropdown($('select', content_root));
}
function populateAccountProfileLocation(userDetail, regions, cities) {
@ -126,8 +130,6 @@
countrySelect.val(userCountry);
countrySelect.attr("disabled", null)
context.JK.dropdown(countrySelect);
}
@ -169,8 +171,6 @@
countrySelect.val(userCountry);
countrySelect.attr("disabled", null);
context.JK.dropdown(countrySelect);
}
function populateRegions(regions, userRegion) {
@ -193,8 +193,6 @@
regionSelect.val(userRegion)
regionSelect.attr("disabled", null)
context.JK.dropdown(regionSelect);
}
function populateCities(cities, userCity) {
@ -217,8 +215,6 @@
citySelect.val(userCity);
citySelect.attr("disabled", null);
context.JK.dropdown(citySelect);
}
/****************** MAIN PORTION OF SCREEN *****************/
@ -249,8 +245,6 @@
selectLocation = new context.JK.SelectLocation(getCountryElement(), getRegionElement(), getCityElement(), app);
selectLocation.load(userDetail.country, userDetail.state, userDetail.city)
});
context.JK.dropdown($('select'), $screen);
}
function navToAccount() {
@ -436,7 +430,6 @@
else {
cityElement.children().remove();
cityElement.append($(nilOptionStr).text(nilOptionText));
context.JK.dropdown(cityElement);
}
}

View File

@ -64,8 +64,6 @@
$screen.find('select[name=skill_level]').val(userDetail.skill_level);
$screen.find('select[name=concert_count]').val(userDetail.concert_count);
$screen.find('select[name=studio_session_count]').val(userDetail.studio_session_count);
context.JK.dropdown($('select', $screen));
}
function isUserInstrument(instrument, userInstruments) {
@ -159,8 +157,6 @@
var userDetail = userDetailResponse[0];
populateAccountProfile(userDetail, instrumentsResponse[0]);
});
context.JK.dropdown($('select'), $screen);
}
function navigateTo(targetLocation) {

View File

@ -28,8 +28,7 @@
}
function bigHelpOptions(options) {
return {positions: options.positions, offsetParent: options.offsetParent,
width:options.width,
var defaults = {
spikeGirth: 15,
spikeLength: 20,
fill: 'white',
@ -40,8 +39,27 @@
fontSize: '20px',
backgroundColor:'transparent',
color:'#ed3618'}}
return $.extend({}, defaults, options)
}
function bigHelpDarkOptions(options) {
var defaults = {
spikeGirth: 15,
spikeLength: 20,
fill: '#242323',
cornerRadius:8,
strokeWidth: 2,
cssStyles: {
fontWeight:'bold',
fontSize: '20px',
backgroundColor:'transparent',
color:'#ed3618'}}
return $.extend({}, defaults, options)
}
function clearJamTrackGuideTimeout() {
if(jamTrackGuideTimeout) {
clearTimeout(jamTrackGuideTimeout);
@ -135,4 +153,8 @@
return context.JK.prodBubble($element, 'jamtrack-web-play', {}, bigHelpOptions({positions:['bottom'], offsetParent: $offsetParent}))
}
helpBubble.teacherMusicianProfile = function($element, $offsetParent) {
return context.JK.prodBubble($element, 'teacher-musician-profile', {}, bigHelpDarkOptions({spikeGirth:0, spikeLength: 0, duration:60000, offsetParent:$offsetParent, width:385, positions:['top', 'right', 'bottom']}))
}
})(window, jQuery);

View File

@ -339,41 +339,32 @@ UserStore = context.UserStore
<a href="/client#/teachers/search" className="button-orange">SEARCH TEACHERS</a>
</div>
</div>`
learnMoreLink = `<a href="/landing/jamclass/students" className="button-orange" target="_blank">LEARN MORE</a>`
learnMoreAboutJamClass = ` <p>
JamClass is the best way to take music lessons, offering significant advantages over both traditional
face-to-face lessons
and online skype lessons.
</p>`
signupTestDrive = `<div className="jamclass-section">
<h2>sign up for testdrive</h2>
<p>
There are two awesome, painless ways to get started with JamClass.
</p>
if @state.user?['can_buy_test_drive?']
rightContent = `<div className="jamclass-section">
<p>
Sign up for TestDrive and take 4 full 30-minute lessons - one each from 4 different instructors - for just
$49.99.
You wouldn't marry the first person you date, right? Find the best teacher for you. It's the most important
factor in the success for your lessons!
</p>
<p className="test-drive-main">
JamClass is the best way to teach or take online music lessons. Learn more about <a href="/landing/jamclass/teachers" rel="external">teaching</a> or <a href="/landing/jamclass/students" rel="external">taking</a> lessons.
</p>
<p>
Or take one JamClass lesson free. It's on us! We're confident you'll take more.
</p>
<p>TestDrive offers 3 unbeatable options for students to try JamClass online lessons, and to find the best teacher:</p>
<ol>
<li>Take 4 full 30-minute lessons from 4 different teachers. Just <span className="price">$49.99</span>. Great for making sure you click with the best teacher for you.</li>
<li>Take 2 full 30-minute lessons from 2 different teachers. Just <span className="price">$29.99</span>. Two lessons for the price of one or try two different teachers.</li>
<li>Take 1 full 30-minute lesson for <span className="price">$9.99</span>. Great value for the online experience if you're sure which teacher you want.</li>
</ol>
<p>
Sign up for TestDrive using the button below, or to take one free lesson, search our teachers, and click the
Book Free Lesson on your favorite.
</p>
<div className="actions">
<a href="/client#/jamclass/lesson-payment/test-drive" className="button-orange">SIGN UP FOR TESTDRIVE</a>
</div>
</div>`
else
rightContent = `<div className="jamclass-section">
<p>Read our <a href="https://jamkazam.desk.com/customer/en/portal/topics/926073-jamclass-online-music-lessons---for-students/articles" rel="external">JamClass user guide for students</a> to learn how to get the most out of your online lessons!
</p>
<p>If you have any problems, please email us at <a href="mailto:support@jamkazam.com">support@jamkazam.com</a>. We're here to help make your lessons a great experience.</p>
</div>`
<div className="actions">
<a href="/landing/jamclass/students" className="button-orange">SIGN UP FOR TESTDRIVE</a>
or
<a href="/client#/teachers/search" className="button-orange search-teachers-btn">SEARCH TEACHERS</a>
</div>
</div>`
else
searchTeachers = `<div className="search-teachers">
<h2>stripe status</h2>
@ -381,12 +372,6 @@ UserStore = context.UserStore
<StripeConnect purpose='jamclass-home' user={this.state.user}/>
</div>
</div>`
learnMoreLink = `<a href="/landing/jamclass/teachers" className="button-orange" target="_blank">LEARN MORE</a>`
learnMoreAboutJamClass = ` <p>
JamClass is the best way to teach music lessons, offering significant advantages over both traditional
face-to-face lessons
and online skype lessons.
</p>`
if this.state.user?
teacherProfileUri = "/client#/profile/teacher/#{this.state.user.id}"
pct = Math.round(this.state.user.teacher?.profile_pct)
@ -400,10 +385,16 @@ UserStore = context.UserStore
pctCompleteMsg = `<p className="pct-complete">Your teacher profile is {pct}% complete. The following sections of your profile are missing information. Click any of these links to view and add missing information:</p>`
missingLinks = @constructMissingLinks(this.state.user)
signupTestDrive = `<div className="jamclass-section">
rightContent = `<div className="jamclass-section">
{pctCompleteMsg}
{missingLinks}
<a className="button-orange view-teacher-profile" onClick={this.viewTeacherProfile}>VIEW TEACHER PROFILE</a>
<p>
Read our <a href="https://jamkazam.desk.com/customer/en/portal/topics/926076-jamclass-online-music-lessons---for-teachers/articles" rel="external">JamClass user guide for teachers</a> to learn how to get the most out of the JamClass technology and marketplace.
</p>
<p>
If you have any problems, please email us <a href="mailto:support@jamkazam.com" rel="external">support@jamkazam.com</a>. We're here to help you build your lesson business.
</p>
</div>`
classes = []
@ -458,26 +449,7 @@ UserStore = context.UserStore
{searchTeachers}
</div>
<div className="column column-right">
<div className="jamclass-section">
<h2>learn about jamclass</h2>
{learnMoreAboutJamClass}
<div className="actions">
{learnMoreLink}
</div>
</div>
{signupTestDrive}
<div className="jamclass-section">
<h2>get ready for your first lesson</h2>
<p>Be sure to set up and test the JamKazam app in an online music session a few days before
your first lesson! We're happy to help, and we'll even get in a session with you to make sure everything
is working properly. Ping us at <a href="mailto:support@jamkazam.com">support@jamkazam.com</a> anytime, and
read our
<a onClick={alert.bind('not yet')}>JamClass user guide</a> to learn how to use all the lesson features.
</p>
</div>
{rightContent}
</div>
<br className="clearall"/>
</div>`

View File

@ -65,6 +65,8 @@ proficiencyDescriptionMap = {
componentDidUpdate:() ->
@starbox()
context.JK.popExternalLinks(@root)
starbox:() ->
$ratings = @root.find('.ratings-box')
$ratings.each((i, value) =>
@ -176,15 +178,15 @@ proficiencyDescriptionMap = {
embedId = @getYoutubeId(videoUrl)
embedUrl = "//www.youtube.com/embed/#{embedId}"
video = `<a className="video-thumbnail" href={videoUrl} rel="external">
<img className="play" src="/assets/content/icon_youtube_play.png" />
</a>`
return `<div className="section introductory-video">
<h3>Intro Video</h3>
<div className="section-content">
<div className="video-wrapper">
<div className="video-container">
<iframe src={embedUrl} frameborder="0" allowfullscreen="allowfullscreen"/>
</div>
</div>
{video}
</div>
</div>`
@ -285,16 +287,11 @@ proficiencyDescriptionMap = {
studioSessions = "Has played an unknown # of studio sessions"
gigTable = `<table className="jamtable giginfo">
<tbody>
<tr>
<td>{gigs}</td>
</tr>
<tr>
<td>{studioSessions}</td>
</tr>
</tbody>
</table>`
gigTable =
`<div className="giginfo">
<div className="gigs">{gigs}</div>
<div>{studioSessions}</div>
</div>`
display_instruments = []
for instrument in user.instruments
@ -320,7 +317,7 @@ proficiencyDescriptionMap = {
createPresence: (className, url, img) ->
`<div key={className} className={className + "-presence logo online-presence-option"}>
<a href={url}><img className="logo" src={img}/></a>
<a href={url} rel="external"><img className="logo" src={img}/></a>
</div>`
@ -592,25 +589,25 @@ proficiencyDescriptionMap = {
@prices()
profileLeft: () ->
if this.state.user.age?
age = `<div className="age">{this.state.user.age} years old</div>`
else
age = null
`<div className="profile-about-left">
<div className="left-content">
<div className="location">
<div className="city">{this.state.user.city}</div>
<div className="state">{this.state.user.state}</div>
<div className="country">{this.state.user.country}</div>
<div className="age">{this.state.user.age} years old</div>
{age}
</div>
<div className="activity">
<div className="last-signed-in">Last Signed In:</div>
<div>{"very recently"}</div>
</div>
<div className="backgroundCheck">
<div className="background-check">Background Check:</div>
<div className="last-verified">last verified</div>
<div className="last-verified-time">3 months ago</div>
</div>
</div>
</div>`

View File

@ -36,12 +36,7 @@
}
},
selectCountry: function (country) {
if(this.useEasyDropdown) {
this.$countries.easyDropDown('select', country, true)
}
else {
this.$countries.val(country)
}
this.$countries.val(country)
},
ready: function() {
return this.$deferred;
@ -119,7 +114,7 @@
// only update region
if (selectedCountry) {
// set city disabled while updating
regionElement.attr('disabled', true).easyDropDown('disable');
regionElement.attr('disabled', true)
this.loadingRegionsData = true;
regionElement.children().remove()
@ -146,7 +141,7 @@
// only update cities
if (selectedCountry && selectedRegion) {
// set city disabled while updating
cityElement.attr('disabled', true).easyDropDown('disable');
cityElement.attr('disabled', true)
this.loadingCitiesData = true;
cityElement.children().remove()
@ -165,9 +160,6 @@
else {
cityElement.children().remove();
cityElement.append($(this.nilOptionStr).text(this.nilOptionText));
if(this.useEasyDropdown) {
context.JK.dropdown(cityElement);
}
}
},
@ -218,10 +210,7 @@
}
this.$countries.val(this.country);
this.$countries.attr("disabled", null).easyDropDown('enable');
if(this.useEasyDropdown) {
context.JK.dropdown(this.$countries);
}
this.$countries.attr("disabled", null)
},
writeRegion: function (index, region) {
@ -244,11 +233,7 @@
$.each(regions, this.writeRegion.bind(this))
this.$regions.val(userRegion)
this.$regions.attr("disabled", null).easyDropDown('enable');
if(this.useEasyDropdown) {
context.JK.dropdown(this.$regions);
}
this.$regions.attr("disabled", null)
},
writeCity: function (index, city) {
@ -271,11 +256,7 @@
$.each(cities, this.writeCity.bind(this))
this.$cities.val(userCity)
this.$cities.attr("disabled", null).easyDropDown('enable');
if(this.useEasyDropdown) {
context.JK.dropdown(this.$cities);
}
this.$cities.attr("disabled", null)
},
regionListFailure: function (jqXHR, textStatus, errorThrown) {

View File

@ -133,8 +133,6 @@
options = {};
}
if(options.persist) {
var timeout = null;
@ -178,6 +176,7 @@
holder = holder.append(helpText).html()
}
console.log("hoverBubble: " + options.duration)
context.JK.hoverBubble($element, holder, options);
}
@ -215,6 +214,7 @@
options['clickAnywhereToClose'] = false
if(!options['duration']) options['duration'] = 6000;
console.log("options: " + options.duration)
var existingTimer = $element.data("prodTimer");
if(existingTimer) {
clearTimeout(existingTimer);
@ -1154,6 +1154,7 @@
if(!$parent) $parent = $('body');
// Allow any a link with a rel="external" attribute to launch
// the link in the default browser, using jamClient:
$parent.off('click');
$parent.on('click', 'a[rel="external"]', popOpenBrowser);
}

View File

@ -63,6 +63,23 @@ $labelFontSize: 12px;
font-size: $labelFontSize;
}
select {
border: 0 !important; /*Removes border*/
-webkit-appearance: none; /*Removes default chrome and safari style*/
-moz-appearance: none; /* Removes Default Firefox style*/
appearance: none;
background: url('/assets/down_arrow_black_pad.png') no-repeat; /*Adds background-image*/
background-position: right center; /*Position of the background-image*/
text-indent: 0.01px; /* Removes default arrow from firefox*/
text-overflow: ""; /*Removes default arrow from firefox*/
cursor: pointer;
padding-right:20px;
&::-ms-expand {
display: none;
}
}
@mixin border_box_sizing {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;

View File

@ -62,6 +62,26 @@ body.jam, body.web, .dialog{
font-size:20px;
}
}
a {
color:$latencyBadgeFair;
}
}
.big-dark-help {
font-size:20px;
color: $ColorTextTypical;
p {color:$ColorTextTypical}
&.jamtrack-web-play {
p {
font-size:20px;
}
}
a {
color:$latencyBadgeFair;
}
}
.larger-text {

View File

@ -11,6 +11,14 @@
@include border_box_sizing;
}
ol {
li {
margin-left:15px;
margin-bottom:20px;
list-style:decimal;
color:$ColorTextTypical;
}
}
h2 {
font-size: 20px;
font-weight:700;
@ -29,6 +37,16 @@
float:right;
width:30%;
padding-left:20px;
.jamclass-section {
padding-top:36px;
}
}
span.price {
color:white;
}
.test-drive-main {
margin-bottom:30px !important;
}
p {
line-height:125% !important;
@ -166,6 +184,10 @@
.field.stripe-connect label {
color: $ColorTextTypical;
}
button.stripe-connect {
margin-top:20px;
}
.field.stripe-connect .view-payments {
display:block;
margin: 0 auto;
@ -174,7 +196,7 @@
.view-teacher-profile {
display:block;
width:112px;
margin: 20px auto 0;
margin: 30px auto 50px;
}
a.missing-profile {
display:block;

View File

@ -112,15 +112,30 @@
text-align:right;
}
}
&.giginfo {
top: 10px;
position: relative;
min-width: 200px;
width:auto;
}
.giginfo {
padding-top: 20px;
position: relative;
min-width: 200px;
width:auto;
.gigs {
margin-bottom:10px;
}
}
}
.video-thumbnail {
width:100%;
padding-top:53.33%;
margin:25px 0;
background:url(//img.youtube.com/vi/askHvcCoNfw/maxresdefault.jpg) no-repeat center;
img.play {
margin:-35.75% auto 0;
}
}
.online-presence-option, .performance-sample-option {
display:block;
vertical-align:middle;

View File

@ -107,3 +107,5 @@
margin-bottom: 20px;
}
}

View File

@ -28,7 +28,7 @@ end
# give back more info if the user being fetched is yourself
if current_user && @user == current_user
attributes :email, :original_fpfile, :cropped_fpfile, :crop_selection, :session_settings, :show_whats_next, :show_whats_next_count, :subscribe_email, :auth_twitter, :new_notifications, :sales_count, :reuse_card, :purchased_jamtracks_count, :first_downloaded_client_at, :created_at, :first_opened_jamtrack_web_player, :gifted_jamtracks, :has_redeemable_jamtrack, :remaining, :has_stored_credit_card?, :remaining_test_drives
attributes :email, :original_fpfile, :cropped_fpfile, :crop_selection, :session_settings, :show_whats_next, :show_whats_next_count, :subscribe_email, :auth_twitter, :new_notifications, :sales_count, :reuse_card, :purchased_jamtracks_count, :first_downloaded_client_at, :created_at, :first_opened_jamtrack_web_player, :gifted_jamtracks, :has_redeemable_jamtrack, :remaining, :has_stored_credit_card?, :remaining_test_drives, :can_buy_test_drive?
node :owned_school_id do |user|
user.owned_school.id if user.owned_school

View File

@ -64,13 +64,13 @@
<select id="gender" name="gender" class="w80">
<option value='M'>Male</option>
<option value='F'>Female</option>
<option>-</option>
<option value="">-</option>
</select>
</div>
<div class="field left w45 birth_date">
<label>Birth Date:</label>
<%= date_select("user", "birth_date", :use_short_month => true, :start_year => 1900, :end_year => Time.now.year - 18, :order => [:month, :day, :year], :default => -25.years.from_now, :html=>{:class => "account-profile-birthdate"} ) %>
<%= date_select("user", "birth_date", :use_short_month => true, :start_year => 1900, :end_year => Time.now.year - 18, :order => [:month, :day, :year], :default => -30.years.from_now, :html=>{:class => "account-profile-birthdate"} ) %>
</div>
<br class="clearall"/>

View File

@ -35,6 +35,7 @@
<div class="field left w35">
<label>Status</label>
<select name="skill_level">
<option value="">select an option</option>
<option value='1'>Amateur</option>
<option value='2'>Professional</option>
</select>
@ -43,6 +44,7 @@
<div class="field left w25">
<label>Concert Gigs Played</label>
<select name="concert_count">
<option value="">select an option</option>
<option value='0'>zero</option>
<option value='1'>under 10</option>
<option value='2'>10 to 50</option>
@ -54,6 +56,7 @@
<div class="field left w25">
<label>Studio Sessions Played</label>
<select name="studio_session_count">
<option value="">select an option</option>
<option value='0'>zero</option>
<option value='1'>under 10</option>
<option value='2'>10 to 50</option>

View File

@ -385,4 +385,11 @@ script type="text/template" id="template-help-no-audio-help"
p Usually audio streaming just works, but in some cases router configurations do not allow audio streams to reach your computer.
p This article <a href="https://jamkazam.desk.com/customer/portal/articles/1716139-what-to-do-if-you-cannot-pass-the-network-test" rel="external">describes how you can configure your router</a> to allow the streamed audio to get through to you.
p This article <a href="https://jamkazam.desk.com/customer/portal/articles/1716139-what-to-do-if-you-cannot-pass-the-network-test" rel="external">describes how you can configure your router</a> to allow the streamed audio to get through to you.
script type="text/template" id="template-help-teacher-musician-profile"
.teacher-musician-profile.big-dark-help
p
a href="https://jamkazam.desk.com/customer/en/portal/articles/2405835-creating-your-teacher-profile#EditProfile" rel="external" Click here
| &nbsp;for a help article that explains how to fill out your musician profile.

View File

@ -1,6 +1,6 @@
require 'spec_helper'
describe "Book Single Recurring Lesson", :js => true, :type => :feature, :capybara_feature => true do
describe "Book Monthly Recurring Lesson", :js => true, :type => :feature, :capybara_feature => true do
subject { page }
@ -40,7 +40,8 @@ describe "Book Single Recurring Lesson", :js => true, :type => :feature, :capyba
visit "/client#/teachers/search"
Timecop.travel(Date.new(2016, 04, 01))
# let's do a time half-way into the month, so we can prove some pro-rating
Timecop.travel(Date.new(2016, 04, 15))
find('.teacher-search-result[data-teacher-id="' + teacher_user.id + '"] .try-normal').trigger(:click)
@ -185,7 +186,14 @@ describe "Book Single Recurring Lesson", :js => true, :type => :feature, :capyba
teacher_distribution = lesson_package_purchase.teacher_distribution
teacher_distribution.amount_in_cents.should eql 3000 / 2
teacher_distribution.ready.should be_true
teacher_distribution.ready.should be_true
teacher_distribution.distributed.should be_false
lesson_package_purchase.lesson_payment_charge.billed.should be_true
lesson_package_purchase.lesson_payment_charge.amount_in_cents.should eql 3000/2 + (3000/2 * 0.0825).round
lesson_package_purchase.lesson_payment_charge.fee_in_cents.should eql 0
lesson_package_purchase.lesson_payment_charge.stripe_charge_id.should_not be_nil
lesson_package_purchase.lesson_payment_charge.post_processed.should be_true
lesson_package_purchase.lesson_payment_charge.sent_billing_notices.should be_true
lesson_package_purchase.lesson_payment_charge.billing_attempts.should eql 1
lesson_session1.reload
lesson_session1.teacher_distribution.should be_nil
@ -200,11 +208,13 @@ describe "Book Single Recurring Lesson", :js => true, :type => :feature, :capyba
lesson_package_purchase = user.lesson_purchases.last
teacher_distribution = lesson_package_purchase.teacher_distribution
teacher_distribution.amount_in_cents.should eql 3000
teacher_distribution.ready.should be_true
lesson_package_purchase.lesson_payment_charge.amount_in_cents.should eql 3000 + (3000 * 0.0825).round
lesson_package_purchase.lesson_payment_charge.fee_in_cents.should eql 0
lesson_package_purchase.lesson_payment_charge.stripe_charge_id.should_not be_nil
lesson_package_purchase.lesson_payment_charge.post_processed.should be_true
lesson_package_purchase.lesson_payment_charge.sent_billing_notices.should be_true
lesson_package_purchase.lesson_payment_charge.billing_attempts.should eql 1
end
end

View File

@ -174,6 +174,13 @@ describe "Book Single Recurring Lesson", :js => true, :type => :feature, :capyba
lesson_session1.billing_attempts.should be_true
lesson_session1.billed.should eql true
lesson_session1.success.should be_true
lesson_session1.lesson_payment_charge.billed.should be_true
lesson_session1.lesson_payment_charge.amount_in_cents.should eql 3000
lesson_session1.lesson_payment_charge.fee_in_cents.should eql 0
lesson_session1.lesson_payment_charge.stripe_charge_id.should_not be_nil
lesson_session1.lesson_payment_charge.post_processed.should be_true
lesson_session1.lesson_payment_charge.sent_billing_notices.should be_true
lesson_session1.lesson_payment_charge.billing_attempts.should eql 1
LessonBooking.hourly_check