Skip to content

Commit 603887a

Browse files
feat: color input validation (#58)
1 parent 5b483b6 commit 603887a

File tree

4 files changed

+22
-21
lines changed

4 files changed

+22
-21
lines changed

lib/atlas/events/event_category.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ defmodule Atlas.Events.EventCategory do
2525
def changeset(event_category, attrs) do
2626
event_category
2727
|> cast(attrs, @required_fields ++ @optional_fields)
28+
|> validate_format(:color, ~r/^#[0-9a-fA-F]{6}$/,
29+
message: "Invalid color format!(e.g., #RRGGBB)"
30+
)
2831
|> validate_required(@required_fields)
2932
end
3033
end

test/atlas/events_test.exs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ defmodule Atlas.EventsTest do
2121
end
2222

2323
test "create_event_category/1 with valid data creates a event_category" do
24-
valid_attrs = %{name: "some name", color: "some color", type: "optional"}
24+
valid_attrs = %{name: "some name", color: "#abcdef", type: "optional"}
2525

2626
assert {:ok, %EventCategory{} = event_category} = Events.create_event_category(valid_attrs)
2727
assert event_category.name == "some name"
28-
assert event_category.color == "some color"
28+
assert event_category.color == "#abcdef"
2929
end
3030

3131
test "create_event_category/1 with invalid data returns error changeset" do
@@ -34,13 +34,13 @@ defmodule Atlas.EventsTest do
3434

3535
test "update_event_category/2 with valid data updates the event_category" do
3636
event_category = event_category_fixture()
37-
update_attrs = %{name: "some updated name", color: "some updated color"}
37+
update_attrs = %{name: "some updated name", color: "#123456"}
3838

3939
assert {:ok, %EventCategory{} = event_category} =
4040
Events.update_event_category(event_category, update_attrs)
4141

4242
assert event_category.name == "some updated name"
43-
assert event_category.color == "some updated color"
43+
assert event_category.color == "#123456"
4444
end
4545

4646
test "update_event_category/2 with invalid data returns error changeset" do

test/atlas_web/controllers/event_category_controller_test.exs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ defmodule AtlasWeb.EventCategoryControllerTest do
77

88
@create_attrs %{
99
name: "some name",
10-
color: "some color"
10+
color: "#abcdef",
11+
type: "optional"
1112
}
1213
@update_attrs %{
1314
name: "some updated name",
14-
color: "some updated color"
15+
color: "#123456",
16+
type: "mandatory"
1517
}
16-
@create_attrs Map.put(@create_attrs, :type, "optional")
17-
@update_attrs Map.put(@update_attrs, :type, "optional")
1818
@invalid_attrs %{name: nil, color: nil, type: nil}
1919

2020
setup %{conn: _conn} do
@@ -38,7 +38,7 @@ defmodule AtlasWeb.EventCategoryControllerTest do
3838

3939
assert %{
4040
"id" => ^id,
41-
"color" => "some color",
41+
"color" => "#abcdef",
4242
"name" => "some name"
4343
} = json_response(conn, 200)["event_category"]
4444
end
@@ -63,7 +63,7 @@ defmodule AtlasWeb.EventCategoryControllerTest do
6363

6464
assert %{
6565
"id" => ^id,
66-
"color" => "some updated color",
66+
"color" => "#123456",
6767
"name" => "some updated name"
6868
} = json_response(conn, 200)["event_category"]
6969
end

test/support/fixtures/events_fixtures.ex

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ defmodule Atlas.EventsFixtures do
1111
{:ok, event_category} =
1212
attrs
1313
|> Enum.into(%{
14-
color: "some color",
1514
name: "some name",
15+
color: "#abcdef",
1616
type: "optional"
1717
})
1818
|> Atlas.Events.create_event_category()
@@ -26,18 +26,16 @@ defmodule Atlas.EventsFixtures do
2626
def event_fixture(attrs \\ %{}) do
2727
category = event_category_fixture()
2828

29-
defaults = %{
30-
end: ~N[2025-01-01 14:00:00],
31-
link: "some link",
32-
place: "some place",
33-
start: ~N[2025-01-01 14:00:00],
34-
title: "some title",
35-
category_id: category.id
36-
}
37-
3829
{:ok, event} =
3930
attrs
40-
|> Enum.into(defaults)
31+
|> Enum.into(%{
32+
title: "some title",
33+
start: ~U[2025-01-01T14:00:00Z],
34+
end: ~U[2025-01-01T15:00:00Z],
35+
place: "some place",
36+
link: "some link",
37+
category_id: category.id
38+
})
4139
|> Atlas.Events.create_event()
4240

4341
event

0 commit comments

Comments
 (0)