Skip to content

Commit

Permalink
Change type pour dataset.legal_owner_company_siren (#3340)
Browse files Browse the repository at this point in the history
* Change type pour dataset.legal_owner_company_siren

* credo fix
  • Loading branch information
AntoineAugusti authored Jul 19, 2023
1 parent 9631e2a commit 1ef3111
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 5 deletions.
17 changes: 16 additions & 1 deletion apps/transport/lib/db/dataset.ex
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ defmodule DB.Dataset do
on_replace: :delete
)

field(:legal_owner_company_siren, :integer)
field(:legal_owner_company_siren, :string)

has_many(:resources, Resource, on_replace: :delete, on_delete: :delete_all)
has_many(:logs_import, LogsImport, on_replace: :delete, on_delete: :delete_all)
Expand Down Expand Up @@ -486,6 +486,7 @@ defmodule DB.Dataset do
|> cast_nation_dataset(params)
|> cast_assoc(:resources)
|> validate_required([:slug])
|> validate_siren()
|> validate_territory_mutual_exclusion()
|> maybe_overwrite_licence()
|> has_real_time()
Expand Down Expand Up @@ -835,6 +836,20 @@ defmodule DB.Dataset do

def get_resources_related_files(_), do: %{}

defp validate_siren(%Ecto.Changeset{} = changeset) do
case get_change(changeset, :legal_owner_company_siren) do
nil ->
changeset

siren ->
if Transport.Companies.is_valid_siren?(siren) do
changeset
else
add_error(changeset, :legal_owner_company_siren, "SIREN is not valid")
end
end
end

@spec validate_territory_mutual_exclusion(Ecto.Changeset.t()) :: Ecto.Changeset.t()
defp validate_territory_mutual_exclusion(changeset) do
has_cities =
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
defmodule DB.Repo.Migrations.DatasetLegalOwnerCompanySirenType do
use Ecto.Migration

def change do
alter table(:dataset) do
modify :legal_owner_company_siren, :string, size: 9, from: :integer
end
end
end
22 changes: 22 additions & 0 deletions apps/transport/test/db/db_dataset_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,28 @@ defmodule DB.DatasetDBTest do

assert {:ok, %Ecto.Changeset{changes: %{has_realtime: false}}} = changeset
end

test "siren is validated" do
{{:error, _}, logs} =
with_log(fn ->
Dataset.changeset(%{
"datagouv_id" => "1",
"slug" => "slug",
"national_dataset" => "true",
"legal_owner_company_siren" => "123456789"
})
end)

assert logs =~ "error while importing dataset: %{legal_owner_company_siren:"

assert {:ok, %Ecto.Changeset{}} =
Dataset.changeset(%{
"datagouv_id" => "1",
"slug" => "slug",
"national_dataset" => "true",
"legal_owner_company_siren" => "552049447"
})
end
end

describe "mobility-licence" do
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ defmodule TransportWeb.Backoffice.DatasetControllerTest do

set_expectations()

siren = 123_456_789
siren = "552049447"

conn
|> setup_admin_in_session()
Expand All @@ -126,7 +126,7 @@ defmodule TransportWeb.Backoffice.DatasetControllerTest do
"custom_title" => "title",
"url" => slug,
"type" => "public-transit",
"legal_owner_company_siren" => siren |> Integer.to_string(),
"legal_owner_company_siren" => siren,
"legal_owners_aom[0]" => aom_0.id |> Integer.to_string(),
"legal_owners_aom[1]" => aom_1.id |> Integer.to_string(),
"legal_owners_region[0]" => region_0.id |> Integer.to_string(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ defmodule TransportWeb.EditDatasetLiveTest do
dataset =
insert(:dataset,
datagouv_id: "1234",
legal_owner_company_siren: siren = 123_456_789,
legal_owner_company_siren: siren = "552049447",
legal_owners_aom: [],
legal_owners_region: []
)
Expand All @@ -166,7 +166,7 @@ defmodule TransportWeb.EditDatasetLiveTest do
)

assert render(view) =~ "Représentants légaux"
assert render(view) =~ siren |> Integer.to_string()
assert render(view) =~ siren
end

test "form inputs are persisted", %{conn: conn} do
Expand Down

0 comments on commit 1ef3111

Please sign in to comment.