Skip to content

Commit

Permalink
refactor:
Browse files Browse the repository at this point in the history
remove unnecessary funcs
refacor other code
  • Loading branch information
okothkongo committed Nov 14, 2023
1 parent 4dfbf7c commit 1e250d5
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 42 deletions.
27 changes: 6 additions & 21 deletions lib/elixir_conf_africa/events.ex
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ defmodule ElixirConfAfrica.Events do
alias ElixirConfAfrica.Repo

alias ElixirConfAfrica.Events.Event
alias ElixirConfAfrica.TicketTypes.TicketType

@doc """
Returns the list of events.
Expand All @@ -29,28 +28,14 @@ defmodule ElixirConfAfrica.Events do
"""

def get_elixir_conf_event_and_ticket_types do
get_elixir_conf_event()
|> Repo.preload(:ticket_types)
end

@doc """
Returns the elixir conf event .
"""
@spec get_elixir_conf_event() :: any()
def get_elixir_conf_event do
Repo.get_by(Event, name: "ElixirConf Africa 2024")
end

def get_all_available_tickets(name) do
def get_event_with_ticket_types_by_event_name(name) do
query =
from t in TicketType,
join: e in Event,
on: t.event_id == e.id and e.name == ^name,
select: sum(t.number)
from event in Event,
join: ticket_types in assoc(event, :ticket_types),
where: event.name == ^name,
preload: [ticket_types: ticket_types]

Repo.one(query)
Repo.all(query)
end

@spec get_event!(any()) :: any()
Expand Down
13 changes: 9 additions & 4 deletions lib/elixir_conf_africa_web/live/home_live/index.ex
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,17 @@ defmodule ElixirConfAfricaWeb.HomeLive.Index do
alias ElixirConfAfrica.Events

def mount(_params, _session, socket) do
elixir_conf_africa_event = Events.get_elixir_conf_event_and_ticket_types()
availabe_tickets = Events.get_all_available_tickets("ElixirConf Africa 2024")
# these value are more static and we should find away of display this data to home page
event =
Events.get_event_with_ticket_types_by_event_name("ElixirConf Africa #{get_current_year()}")

{:ok,
socket
|> assign(:available_tickets, availabe_tickets)
|> assign(:event, elixir_conf_africa_event)}
|> assign(:event, event)}
end

defp get_current_year do
%{year: year} = DateTime.utc_now()
year
end
end
16 changes: 4 additions & 12 deletions test/elixir_conf_africa/events_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -30,22 +30,14 @@ defmodule ElixirConfAfrica.EventsTest do

test "get_elixir_conf_event_and_ticket_types/0 returns the elixir conf event with ticket types",
%{event: event} do
_ticket_type =
insert!(:elixir_conf_ticket_type, event_id: event.id)

assert Events.get_elixir_conf_event_and_ticket_types().ticket_types != []
end

test "get_all_available_tickets/0 returns the number of available tickets", %{event: event} do
ticket_type =
insert!(:elixir_conf_ticket_type, event_id: event.id)

assert Events.get_all_available_tickets(event.name) == ticket_type.number
end
assert [event] = Events.get_event_with_ticket_types_by_event_name(event.name)

test "get_elixir_conf_event /0 returns the elixir conf event", %{event: event} do
assert %{name: name} = Events.get_elixir_conf_event()
assert name == event.name
preloaded_event = ElixirConfAfrica.Repo.preload(event, :ticket_types)
assert preloaded_event.ticket_types == [ticket_type]
assert event == preloaded_event
end

test "create_event/1 with valid data creates a event" do
Expand Down
6 changes: 2 additions & 4 deletions test/elixir_conf_africa/ticket_types_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,11 @@ defmodule ElixirConfAfrica.TicketTypesTest do
end

test "list_ticket_types/0 returns all ticket_types", %{ticket_type: ticket_type} do
assert [fetched_ticket_type] = TicketTypes.list_ticket_types()
assert ticket_type.id == fetched_ticket_type.id
assert [^ticket_type] = TicketTypes.list_ticket_types()
end

test "get_ticket_type!/1 returns the ticket_type with given id", %{ticket_type: ticket_type} do
assert fetched_ticket_type = TicketTypes.get_ticket_type!(ticket_type.id)
assert ticket_type.id == fetched_ticket_type.id
assert ^ticket_type = TicketTypes.get_ticket_type!(ticket_type.id)
end

test "create_ticket_type/1 with valid data creates a ticket_type", %{event: event} do
Expand Down
2 changes: 1 addition & 1 deletion test/support/factory.ex
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ defmodule ElixirConfAfrica.Factory do
%ElixirConfAfrica.TicketTypes.TicketType{
name: "some name",
description: "some description",
price: 120.5,
price: Decimal.new("120.5"),
number: 357
}
end
Expand Down

0 comments on commit 1e250d5

Please sign in to comment.