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
|