Skip to content

Commit ea785e5

Browse files
authored
Merge pull request #574 from code-corps/stripe_file_upload
[STRIP FILE UPLOAD]: model + test
2 parents f8a7f79 + ae132db commit ea785e5

File tree

4 files changed

+88
-0
lines changed

4 files changed

+88
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
defmodule CodeCorps.Repo.Migrations.CreateStripeFileUpload do
2+
use Ecto.Migration
3+
4+
def change do
5+
create table(:stripe_file_upload) do
6+
add :created, :datetime
7+
add :id_from_stripe, :string, null: false
8+
add :purpose, :string
9+
add :size, :integer
10+
add :type, :string
11+
add :url, :string
12+
add :stripe_connect_account_id, references(:stripe_connect_accounts)
13+
end
14+
end
15+
end
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
defmodule CodeCorps.StripeFileUploadTest do
2+
use CodeCorps.ModelCase
3+
4+
alias CodeCorps.StripeFileUpload
5+
6+
@valid_attrs %{
7+
id_from_stripe: "abc123"
8+
}
9+
10+
@invalid_attrs %{}
11+
12+
describe "create_identity_document_changeset/2" do
13+
test "reports as valid when attributes are valid" do
14+
changeset = StripeFileUpload.create_identity_document_changeset(%StripeFileUpload{}, @valid_attrs)
15+
16+
assert changeset.valid?
17+
end
18+
19+
test "reports as invalid when attributes are invalid" do
20+
changeset = StripeFileUpload.create_identity_document_changeset(%StripeFileUpload{}, @invalid_attrs)
21+
refute changeset.valid?
22+
23+
assert changeset.errors[:id_from_stripe] == {"can't be blank", []}
24+
end
25+
26+
test "can optionally belong to a StripeConnectAccount" do
27+
stripe_connect_account_id = insert(:stripe_connect_account).id
28+
changes = Map.merge(@valid_attrs, %{stripe_connect_account_id: stripe_connect_account_id})
29+
changeset = StripeFileUpload.create_identity_document_changeset(%StripeFileUpload{}, changes)
30+
31+
assert changeset.valid?
32+
end
33+
34+
test "existing StripeConnectAccount association is required" do
35+
stripe_connect_account_id = "abc456"
36+
changes = Map.merge(@valid_attrs, %{stripe_connect_account_id: stripe_connect_account_id})
37+
changeset = StripeFileUpload.create_identity_document_changeset(%StripeFileUpload{}, changes)
38+
39+
refute changeset.valid?
40+
assert changeset.errors[:stripe_connect_account_id] == {"is invalid", [type: :id]}
41+
end
42+
end
43+
end

test/support/factories.ex

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,12 @@ defmodule CodeCorps.Factories do
142142
}
143143
end
144144

145+
def stripe_file_upload_factory do
146+
%CodeCorps.StripeFileUpload{
147+
id_from_stripe: sequence(:id_from_stripe, &"stripe_id_#{&1}"),
148+
}
149+
end
150+
145151
def stripe_connect_subscription_factory do
146152
stripe_connect_plan = build(:stripe_connect_plan)
147153
%CodeCorps.StripeConnectSubscription{

web/models/stripe_file_upload.ex

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
defmodule CodeCorps.StripeFileUpload do
2+
use CodeCorps.Web, :model
3+
4+
schema "stripe_file_uploads" do
5+
field :created, Timex.Ecto.DateTime
6+
field :id_from_stripe, :string, null: false
7+
field :purpose, :string
8+
field :size, :integer
9+
field :type, :string
10+
field :url, :string
11+
12+
belongs_to :stripe_connect_account, CodeCorps.StripeConnectAccount
13+
14+
timestamps()
15+
end
16+
17+
def create_identity_document_changeset(struct, params \\ %{}) do
18+
struct
19+
|> cast(params, [:created, :id_from_stripe, :purpose, :size, :type, :url, :stripe_connect_account_id])
20+
|> validate_required([:id_from_stripe])
21+
|> assoc_constraint(:stripe_connect_account)
22+
end
23+
24+
end

0 commit comments

Comments
 (0)