Skip to content

Commit 6cf21ce

Browse files
committed
[STRIP FILE UPLOAD]: model + test
1 parent b1906b2 commit 6cf21ce

File tree

4 files changed

+86
-0
lines changed

4 files changed

+86
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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 :size, :integer
9+
add :purpose, :string
10+
add :url, :string
11+
add :type, :string
12+
end
13+
end
14+
end
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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_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+
end
41+
end
42+
end

test/support/factories.ex

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,12 @@ defmodule CodeCorps.Factories do
133133
}
134134
end
135135

136+
def stripe_file_upload_factory do
137+
%CodeCorps.StripeFileUpload{
138+
id_from_stripe: sequence(:id_from_stripe, &"stripe_id_#{&1}"),
139+
}
140+
end
141+
136142
def stripe_connect_subscription_factory do
137143
stripe_connect_plan = build(:stripe_connect_plan)
138144
%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 :size, :integer
7+
field :purpose, :string
8+
field :url, :string
9+
field :type, :string
10+
field :id_from_stripe, :string, null: false
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, :size, :purpose, :url, :type, :id_from_stripe, :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)