55 lines
1.5 KiB
Ruby
55 lines
1.5 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'rails_helper'
|
||
|
|
||
|
module DiscoursePatrons
|
||
|
RSpec.describe InvoicesController do
|
||
|
describe "index" do
|
||
|
describe "not authenticated" do
|
||
|
it "does not list the invoices" do
|
||
|
::Stripe::Invoice.expects(:list).never
|
||
|
get "/patrons/invoices.json"
|
||
|
expect(response.status).to eq 403
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "authenticated" do
|
||
|
let(:user) { Fabricate(:user) }
|
||
|
let(:stripe_customer) { { id: 'cus_id4567' } }
|
||
|
|
||
|
before do
|
||
|
sign_in(user)
|
||
|
end
|
||
|
|
||
|
describe "other user invoices" do
|
||
|
it "does not list the invoices" do
|
||
|
::Stripe::Invoice.expects(:list).never
|
||
|
get "/patrons/invoices.json", params: { user_id: 999999 }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe "own invoices" do
|
||
|
context "stripe customer does not exist" do
|
||
|
it "lists empty" do
|
||
|
::Stripe::Invoice.expects(:list).never
|
||
|
get "/patrons/invoices.json", params: { user_id: user.id }
|
||
|
expect(response.body).to eq "[]"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "stripe customer exists" do
|
||
|
before do
|
||
|
DiscoursePatrons::Customer.create_customer(user, stripe_customer)
|
||
|
end
|
||
|
|
||
|
it "lists the invoices" do
|
||
|
::Stripe::Invoice.expects(:list).with(customer: 'cus_id4567')
|
||
|
get "/patrons/invoices.json", params: { user_id: user.id }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|