VRFS-2480 : Recurly specs, fixes and new implementation.
This commit is contained in:
parent
696cdc0283
commit
2d3bbd2a47
|
|
@ -1,11 +1,10 @@
|
|||
class ApiRecurlyController < ApiController
|
||||
|
||||
before_filter :api_signed_in_user
|
||||
respond_to :json
|
||||
|
||||
# create Recurly account
|
||||
def create_account
|
||||
logger.debug(params[:billing_info])
|
||||
#logger.debug(params[:billing_info])
|
||||
if current_user.recurly_code.nil?
|
||||
@account = Recurly::Account.create(
|
||||
account_code: current_user.id,
|
||||
|
|
@ -31,44 +30,38 @@ class ApiRecurlyController < ApiController
|
|||
@account.billing_info = params[:billing_info]
|
||||
@account.billing_info.save
|
||||
|
||||
logger.debug @account
|
||||
#logger.debug @account.to_json
|
||||
end
|
||||
respond_with @account
|
||||
|
||||
render :json=>@account.to_json
|
||||
rescue Recurly::Error, NoMethodError => e
|
||||
render :json => { :message => e.inspect }, :status => 404
|
||||
render json: { :message => e.inspect, error: e }, :status => 404
|
||||
end
|
||||
|
||||
def delete_account
|
||||
@account = Recurly::Account.find(current_user.recurly_code)
|
||||
if @account.present?
|
||||
@account.destroy
|
||||
end
|
||||
render :json=>{}, :status=>200
|
||||
rescue Recurly::Error, NoMethodError => e
|
||||
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
||||
end
|
||||
|
||||
# get Recurly account
|
||||
def get_account
|
||||
@account = Recurly::Account.find(current_user.reculry_code)
|
||||
respond_with @account
|
||||
@account = Recurly::Account.find(current_user.recurly_code)
|
||||
render :json=>@account.to_json
|
||||
rescue Recurly::Error, NoMethodError => e
|
||||
render :json => { message: ValidationMessages::RECURLY_ERROR}, :status => 404
|
||||
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
||||
end
|
||||
|
||||
# update Recurly account
|
||||
def update_account
|
||||
if current_user.recurly_code.nil?
|
||||
@account = Recurly::Account.create(
|
||||
account_code: current_user.id,
|
||||
email: current_user.email,
|
||||
first_name: current_user.first_name,
|
||||
last_name: current_user.last_name,
|
||||
address: {
|
||||
city: current_user.city,
|
||||
state: current_user.state,
|
||||
country: current_user.country
|
||||
}
|
||||
)
|
||||
else
|
||||
@account = Recurly::Account.get(current_user.recurly_code)
|
||||
end
|
||||
|
||||
safe_retrieve_account()
|
||||
@account.first_name = current_user.first_name
|
||||
@account.last_name = current_user.last_name
|
||||
@account.email = current_user.email
|
||||
@account.update
|
||||
@account.save
|
||||
|
||||
if @account.errors.any?
|
||||
response.status = 404
|
||||
|
|
@ -76,18 +69,18 @@ class ApiRecurlyController < ApiController
|
|||
current_user.recurly_code = @account.account_code
|
||||
current_user.save
|
||||
end
|
||||
respond_with @account
|
||||
|
||||
render :json=>@account.to_json
|
||||
rescue Recurly::Error, NoMethodError => e
|
||||
render :json => { message: ValidationMessages::RECURLY_ERROR}, :status => 404
|
||||
raise e
|
||||
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
||||
end
|
||||
|
||||
# get subscription
|
||||
def get_subscription
|
||||
@account = Recurly::Acount.find(current_user.reculry_code)
|
||||
respond_with @account.subscriptions.last
|
||||
safe_retrieve_account()
|
||||
render :json=>@account.subscriptions.last.to_json
|
||||
rescue Recurly::Error, NoMethodError => e
|
||||
render :json => { message: ValidationMessages::RECURLY_GET_ACCOUNT_ERROR}, :status => 404
|
||||
render json: { message: ValidationMessages::RECURLY_ACCOUNT_ERROR, error: e}, :status => 404
|
||||
end
|
||||
|
||||
# create subscription
|
||||
|
|
@ -97,44 +90,44 @@ class ApiRecurlyController < ApiController
|
|||
# get Billing Information
|
||||
def billing_info
|
||||
if current_user.recurly_code.nil?
|
||||
render :json => { message: ValidationMessages::RECURLY_ACCOUNT_ERROR }, :status => 404 and return
|
||||
render json: { message: ValidationMessages::RECURLY_ACCOUNT_ERROR }, :status => 404 and return
|
||||
else
|
||||
@account = Recurly::Account.find(current_user.recurly_code)
|
||||
logger.debug @account
|
||||
respond_with @account.billing_info
|
||||
#logger.debug @account
|
||||
render json: @account.billing_info
|
||||
end
|
||||
rescue Recurly::Error, NoMethodError => e
|
||||
render :json => { message: ValidationMessages::RECURLY_ERROR}, :status => 404
|
||||
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
||||
end
|
||||
|
||||
# update Billing Information
|
||||
def update_billing_info
|
||||
if current_user.recurly_code.nil?
|
||||
render :json => { message: ValidationMessages::RECURLY_ACCOUNT_ERROR }, :status => 404 and return
|
||||
render json: { message: ValidationMessages::RECURLY_ACCOUNT_ERROR }, :status => 404 and return
|
||||
else
|
||||
if params[:first_name].blank? or params[:last_name].blank? or params[:number].blank? or params[:year].blank? or params[:month].blank? or params[:verification_value].blank?
|
||||
render :json => { message: ValidationMessages::RECURLY_PARAMETER_ERROR }, :status => 404 and return
|
||||
render json: { message: ValidationMessages::RECURLY_PARAMETER_ERROR }, :status => 404 and return
|
||||
end
|
||||
@account = Recurly::Acount.find(current_user.reculry_code)
|
||||
@account = Recurly::Account.find(current_user.recurly_code)
|
||||
@account.billing_info = params
|
||||
@account.billing_info.save
|
||||
|
||||
if @account.erros.any?
|
||||
if @account.errors.any?
|
||||
response.status = :unprocessable_entity
|
||||
end
|
||||
|
||||
respond_with @account
|
||||
render json: @account
|
||||
end
|
||||
rescue Recurly::Error, NoMethodError => e
|
||||
render :json => { message: ValidationMessages::RECURLY_ERROR}, :status => 404
|
||||
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
||||
end
|
||||
|
||||
def place_order
|
||||
if current_user.recurly_code.nil?
|
||||
render :json => { message: ValidationMessages::RECURLY_ACCOUNT_ERROR }, :status => 404 and return
|
||||
render json: { message: ValidationMessages::RECURLY_ACCOUNT_ERROR }, :status => 404 and return
|
||||
else
|
||||
if params[:first_name].blank? or params[:last_name].blank? or params[:number].blank? or params[:year].blank? or params[:month].blank? or params[:verification_value].blank?
|
||||
render :json => { message: ValidationMessages::RECURLY_PARAMETER_ERROR }, :status => 404 and return
|
||||
render json: { message: ValidationMessages::RECURLY_PARAMETER_ERROR }, :status => 404 and return
|
||||
end
|
||||
@account = Recurly::Account.find(current_user.recurly_code)
|
||||
@account.billing_info = params
|
||||
|
|
@ -142,14 +135,32 @@ class ApiRecurlyController < ApiController
|
|||
|
||||
# create subscription.
|
||||
|
||||
if @account.erros.any?
|
||||
if @account.errors.any?
|
||||
response.status = :unprocessable_entity
|
||||
end
|
||||
|
||||
respond_with @account
|
||||
render json: @account
|
||||
end
|
||||
rescue Recurly::Error, NoMethodError => e
|
||||
render :json => { message: ValidationMessages::RECURLY_ERROR}, :status => 404
|
||||
render json: { message: ValidationMessages::RECURLY_ERROR, error: e}, :status => 404
|
||||
end
|
||||
|
||||
private
|
||||
def safe_retrieve_account
|
||||
if current_user.recurly_code.nil?
|
||||
@account = Recurly::Account.create(
|
||||
account_code: current_user.id,
|
||||
email: current_user.email,
|
||||
first_name: current_user.first_name,
|
||||
last_name: current_user.last_name,
|
||||
address: {
|
||||
city: current_user.city,
|
||||
state: current_user.state,
|
||||
country: current_user.country
|
||||
}
|
||||
)
|
||||
else
|
||||
@account = Recurly::Account.find(current_user.recurly_code)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -89,5 +89,5 @@ SampleApp::Application.configure do
|
|||
config.youtube_developer_key = "AI39si5bPqiNc5GQHscWJh9Wl1WTAr9aZqr_YncUvaR7Kz0rgPdBVWVubHZ94xZ3KLIBqtE9mu3VZe-UpMU80QxXoC66kBNp7A"
|
||||
config.youtube_app_name = "JamKazamDev"
|
||||
|
||||
config.jam_tracks_available=false
|
||||
config.jam_tracks_available=true
|
||||
end
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@ SampleApp::Application.configure do
|
|||
# Use Public Keys to identify your site when using Recurly.js. See https://docs.recurly.com/js/#include to learn more.
|
||||
config.recurly_public_api_key = 'sc-s6G2OA80Rwyvsb1RmS3mAE'
|
||||
config.recurly_subdomain = 'jamkazam-test'
|
||||
|
||||
config.jam_tracks_available=true
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -232,8 +232,11 @@ SampleApp::Application.routes.draw do
|
|||
match '/users/:id/set_password' => 'api_users#set_password', :via => :post
|
||||
|
||||
# recurly
|
||||
match '/recurly/create_account' => 'api_recurly#create_account', :via => :post
|
||||
match '/recurly/create_account' => 'api_recurly#create_account', :via => :post
|
||||
match '/recurly/delete_account' => 'api_recurly#delete_account', :via => :delete
|
||||
match '/recurly/get_account' => 'api_recurly#get_account', :via => :get
|
||||
#match '/recurly/get_subscription' => 'api_recurly#get_subscription', :via => :get
|
||||
match '/recurly/update_account' => 'api_recurly#update_account', :via => :post
|
||||
match '/recurly/billing_info' => 'api_recurly#billing_info', :via => :get
|
||||
match '/recurly/update_billing_info' => 'api_recurly#update_billing_info', :via => :put
|
||||
match '/recurly/place_order' => 'api_recurly#place_order', :via => :put
|
||||
|
|
|
|||
|
|
@ -1,34 +1,77 @@
|
|||
# require 'spec_helper'
|
||||
#
|
||||
# describe ApiRecurlyController do
|
||||
# render_views
|
||||
#
|
||||
# let(:user) { FactoryGirl.create(:user) }
|
||||
# let(:jamtrack) { FactoryGirl.create(:jam_track) }
|
||||
#
|
||||
# before(:each) do
|
||||
# @billing_info = {}
|
||||
# @billing_info[:first_name] = user.first_name
|
||||
# @billing_info[:last_name] = user.last_name
|
||||
# @billing_info[:address1] = 'Test Address 1'
|
||||
# @billing_info[:address2] = 'Test Address 2'
|
||||
# @billing_info[:city] = user.city
|
||||
# @billing_info[:state] = user.state
|
||||
# @billing_info[:country] = user.country
|
||||
# @billing_info[:zip] = '12345'
|
||||
# @billing_info[:number] = '4111-1111-1111-1111'
|
||||
# @billing_info[:month] = '08'
|
||||
# @billing_info[:year] = '2017'
|
||||
# @billing_info[:verification_value] = '1111'
|
||||
# controller.current_user = user
|
||||
# end
|
||||
#
|
||||
# describe "start" do
|
||||
# it "should create recurly account" do
|
||||
# post :create_account, { :format => 'json', :billing_info => @billing_info}
|
||||
# response_body = JSON.parse(response.body)
|
||||
# puts response_body
|
||||
# response.should be_success
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
require 'spec_helper'
|
||||
require 'recurly/account'
|
||||
describe ApiRecurlyController do
|
||||
render_views
|
||||
|
||||
let(:user) { FactoryGirl.create(:user) }
|
||||
let(:jamtrack) { FactoryGirl.create(:jam_track) }
|
||||
|
||||
before(:each) do
|
||||
@billing_info = {}
|
||||
@billing_info[:first_name] = user.first_name
|
||||
@billing_info[:last_name] = user.last_name
|
||||
@billing_info[:address1] = 'Test Address 1'
|
||||
@billing_info[:address2] = 'Test Address 2'
|
||||
@billing_info[:city] = user.city
|
||||
@billing_info[:state] = user.state
|
||||
@billing_info[:country] = user.country
|
||||
@billing_info[:zip] = '12345'
|
||||
@billing_info[:number] = '4111-1111-1111-1111'
|
||||
@billing_info[:month] = '08'
|
||||
@billing_info[:year] = '2017'
|
||||
@billing_info[:verification_value] = '1111'
|
||||
controller.current_user = user
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
if (user.recurly_code)
|
||||
@account = Recurly::Account.find(user.recurly_code)
|
||||
if @account.present?
|
||||
@account.destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it "should create account" do
|
||||
post :create_account, { :format => 'json', :billing_info => @billing_info}
|
||||
response.should be_success
|
||||
end
|
||||
|
||||
it "should retrieve account" do
|
||||
post :create_account, { :format => 'json', :billing_info => @billing_info}
|
||||
response.should be_success
|
||||
|
||||
get :get_account, { :format => 'json'}
|
||||
body = JSON.parse(response.body)
|
||||
response.should be_success
|
||||
puts "body: #{body}"
|
||||
body['attributes']['email'].should eq(user.email)
|
||||
end
|
||||
|
||||
it "should update account" do
|
||||
post :create_account, { :format => 'json', :billing_info => @billing_info}
|
||||
response.should be_success
|
||||
body = JSON.parse(response.body)
|
||||
body['attributes']['first_name'].should eq("Person")
|
||||
|
||||
user.update_attribute(:first_name, "Thing")
|
||||
post :update_account
|
||||
body = JSON.parse(response.body)
|
||||
body['attributes']['first_name'].should eq("Thing")
|
||||
|
||||
get :get_account, { :format => 'json'}
|
||||
response.should be_success
|
||||
body = JSON.parse(response.body)
|
||||
body['attributes']['first_name'].should eq("Thing")
|
||||
end
|
||||
|
||||
# Note: We don't have any subscriptions yet:
|
||||
it "should get subscription" do
|
||||
pending "We don't have any subscriptions yet -- uncomment in routes"
|
||||
get :get_subscription, { :format => 'json'}
|
||||
response.should be_success
|
||||
body = JSON.parse(response.body)
|
||||
puts body['attributes']
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue