Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions priv/repo/migrations/20161212005641_create_stripe_file_upload.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
defmodule CodeCorps.Repo.Migrations.CreateStripeFileUpload do
use Ecto.Migration

def change do
create table(:stripe_file_upload) do
add :created, :datetime
add :id_from_stripe, :string, null: false
add :purpose, :string
add :size, :integer
add :type, :string
add :url, :string
add :stripe_connect_account_id, references(:stripe_connect_accounts)
end
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I see the stripe_connect_account in here.

Copy link
Contributor Author

@snewcomer snewcomer Dec 12, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it look like this? add :stripe_connect_account_id, references(:stripe_connect_accounts) or add :stripe_connect_account_id, references(:stripe_connect_accounts, on_delete: nothing)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@snewcomer I think the second one?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@joshsmith ah sry. on_delete is defaulted to nothing.

end
end
43 changes: 43 additions & 0 deletions test/models/stripe_file_upload_test.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
defmodule CodeCorps.StripeFileUploadTest do
use CodeCorps.ModelCase

alias CodeCorps.StripeFileUpload

@valid_attrs %{
id_from_stripe: "abc123"
}

@invalid_attrs %{}

describe "create_identity_document_changeset/2" do
test "reports as valid when attributes are valid" do
changeset = StripeFileUpload.create_identity_document_changeset(%StripeFileUpload{}, @valid_attrs)

assert changeset.valid?
end

test "reports as invalid when attributes are invalid" do
changeset = StripeFileUpload.create_identity_document_changeset(%StripeFileUpload{}, @invalid_attrs)
refute changeset.valid?

assert changeset.errors[:id_from_stripe] == {"can't be blank", []}
end

test "can optionally belong to a StripeConnectAccount" do
stripe_connect_account_id = insert(:stripe_connect_account).id
changes = Map.merge(@valid_attrs, %{stripe_connect_account_id: stripe_connect_account_id})
changeset = StripeFileUpload.create_identity_document_changeset(%StripeFileUpload{}, changes)

assert changeset.valid?
end

test "existing StripeConnectAccount association is required" do
stripe_connect_account_id = "abc456"
changes = Map.merge(@valid_attrs, %{stripe_connect_account_id: stripe_connect_account_id})
changeset = StripeFileUpload.create_identity_document_changeset(%StripeFileUpload{}, changes)

refute changeset.valid?
assert changeset.errors[:stripe_connect_account_id] == {"is invalid", [type: :id]}
end
end
end
6 changes: 6 additions & 0 deletions test/support/factories.ex
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,12 @@ defmodule CodeCorps.Factories do
}
end

def stripe_file_upload_factory do
%CodeCorps.StripeFileUpload{
id_from_stripe: sequence(:id_from_stripe, &"stripe_id_#{&1}"),
}
end

def stripe_connect_subscription_factory do
stripe_connect_plan = build(:stripe_connect_plan)
%CodeCorps.StripeConnectSubscription{
Expand Down
24 changes: 24 additions & 0 deletions web/models/stripe_file_upload.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
defmodule CodeCorps.StripeFileUpload do
use CodeCorps.Web, :model

schema "stripe_file_uploads" do
field :created, Timex.Ecto.DateTime
field :id_from_stripe, :string, null: false
field :purpose, :string
field :size, :integer
field :type, :string
field :url, :string

belongs_to :stripe_connect_account, CodeCorps.StripeConnectAccount

timestamps()
end

def create_identity_document_changeset(struct, params \\ %{}) do
struct
|> cast(params, [:created, :id_from_stripe, :purpose, :size, :type, :url, :stripe_connect_account_id])
|> validate_required([:id_from_stripe])
|> assoc_constraint(:stripe_connect_account)
end

end