diff --git a/app/controllers/customers_controller.rb b/app/controllers/customers_controller.rb index bdbba96..60dfdd9 100644 --- a/app/controllers/customers_controller.rb +++ b/app/controllers/customers_controller.rb @@ -13,9 +13,9 @@ module DiscoursePatrons source: params[:source] ) - DiscoursePatrons::Customer.create( - customer_id: customer.id - user_id: current_user.id + DiscoursePatrons::Customer.create_customer( + current_user, + customer ) render_json_dump customer diff --git a/app/models/customer.rb b/app/models/customer.rb index 65f071b..118cce5 100644 --- a/app/models/customer.rb +++ b/app/models/customer.rb @@ -2,6 +2,14 @@ module DiscoursePatrons class Customer < ActiveRecord::Base - self.table_name = "discourse_patrons_customers" + scope :find_user, ->(user) { find_by_user_id(user.id) } + + class << self + table_name = "discourse_patrons_customers" + + def create_customer(user, customer) + create(customer_id: customer[:id], user_id: user.id) + end + end end end diff --git a/db/migrate/20191025031631_create_customers.rb b/db/migrate/20191025031631_create_customers.rb index 3a2a579..2b466c5 100644 --- a/db/migrate/20191025031631_create_customers.rb +++ b/db/migrate/20191025031631_create_customers.rb @@ -6,6 +6,7 @@ class CreateCustomers < ActiveRecord::Migration[5.2] t.timestamps end + add_index :discourse_patrons_customers, :user_id, unique: true add_index :discourse_patrons_customers, :customer_id, unique: true end end diff --git a/spec/models/customer_spec.rb b/spec/models/customer_spec.rb new file mode 100644 index 0000000..4070793 --- /dev/null +++ b/spec/models/customer_spec.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'rails_helper' + +module DiscoursePatrons + RSpec.describe Customer do + let(:user) { Fabricate(:user) } + let(:stripe_customer) { { id: 'cus_id4567' } } + + it "has a table name" do + expect(described_class.table_name).to eq "discourse_patrons_customers" + end + + it "creates" do + customer = described_class.create_customer(user, stripe_customer) + expect(customer.customer_id).to eq 'cus_id4567' + expect(customer.user_id).to eq user.id + end + + it "has a user scope" do + described_class.create_customer(user, stripe_customer) + customer = described_class.find_user(user) + expect(customer.customer_id).to eq 'cus_id4567' + end + end +end