diff --git a/config/config.exs b/config/config.exs index 4120697..71e59a9 100644 --- a/config/config.exs +++ b/config/config.exs @@ -3,7 +3,7 @@ # # This configuration file is loaded before any dependency and # is restricted to this project. -use Mix.Config +import Config # General application configuration config :zero_phoenix, diff --git a/config/dev.exs b/config/dev.exs index 88e4734..5b08a86 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # Configure your database config :zero_phoenix, ZeroPhoenix.Repo, diff --git a/config/prod.exs b/config/prod.exs index 71657c2..fd47c0e 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # For production, don't forget to configure the url host # to something meaningful, Phoenix uses this information @@ -52,4 +52,4 @@ config :logger, level: :info # Finally import the config/prod.secret.exs which loads secrets # and configuration from environment variables. -import_config "prod.secret.exs" +# import_config "prod.secret.exs" diff --git a/config/prod.secret.exs b/config/prod.secret.exs deleted file mode 100644 index e72f313..0000000 --- a/config/prod.secret.exs +++ /dev/null @@ -1,41 +0,0 @@ -# In this file, we load production configuration and secrets -# from environment variables. You can also hardcode secrets, -# although such is generally not recommended and you have to -# remember to add this file to your .gitignore. -use Mix.Config - -database_url = - System.get_env("DATABASE_URL") || - raise """ - environment variable DATABASE_URL is missing. - For example: ecto://USER:PASS@HOST/DATABASE - """ - -config :zero_phoenix, ZeroPhoenix.Repo, - # ssl: true, - url: database_url, - pool_size: String.to_integer(System.get_env("POOL_SIZE") || "10") - -secret_key_base = - System.get_env("SECRET_KEY_BASE") || - raise """ - environment variable SECRET_KEY_BASE is missing. - You can generate one by calling: mix phx.gen.secret - """ - -config :zero_phoenix, ZeroPhoenixWeb.Endpoint, - http: [ - port: String.to_integer(System.get_env("PORT") || "4000"), - transport_options: [socket_opts: [:inet6]] - ], - secret_key_base: secret_key_base - -# ## Using releases (Elixir v1.9+) -# -# If you are doing OTP releases, you need to instruct Phoenix -# to start each relevant endpoint: -# -config :zero_phoenix, ZeroPhoenixWeb.Endpoint, server: true -# -# Then you can assemble a release by calling `mix release`. -# See `mix help release` for more information. diff --git a/config/test.exs b/config/test.exs index e27847b..4eb91e6 100644 --- a/config/test.exs +++ b/config/test.exs @@ -1,4 +1,4 @@ -use Mix.Config +import Config # Configure your database # diff --git a/mix.exs b/mix.exs index b91372f..e23b0e2 100644 --- a/mix.exs +++ b/mix.exs @@ -4,10 +4,10 @@ defmodule ZeroPhoenix.Mixfile do def project do [ app: :zero_phoenix, - version: "2.4.2", + version: "2.4.4", elixir: "~> 1.13.0-dev", elixirc_paths: elixirc_paths(Mix.env()), - compilers: [:phoenix, :gettext] ++ Mix.compilers(), + compilers: [:gettext] ++ Mix.compilers(), start_permanent: Mix.env() == :prod, aliases: aliases(), deps: deps() diff --git a/test/zero_phoenix_web/schema/query/people_test.exs b/test/zero_phoenix_web/schema/query/people_test.exs new file mode 100644 index 0000000..1dc3002 --- /dev/null +++ b/test/zero_phoenix_web/schema/query/people_test.exs @@ -0,0 +1,95 @@ +defmodule ZeroPhoenixWeb.Schema.Query.PeopleTest do + use ZeroPhoenixWeb.ConnCase, async: true + + import Ecto.Query + + alias ZeroPhoenix.Account.Person + alias ZeroPhoenix.Repo + + setup do + ZeroPhoenix.Seeds.run() + end + + test "get people by IDs" do + query = """ + query GetPeople($ids: [ID]) { + people(ids: $ids) { + firstName + lastName + } + } + """ + + people_ids = + Person + |> select([:id]) + |> order_by(asc: :id) + |> limit(2) + |> Repo.all() + |> Enum.map(fn person -> person.id end) + + response = + post( + build_conn(), + "/graphql", + query: query, + variables: %{"ids" => people_ids} + ) + + assert json_response(response, 200) == %{ + "data" => %{ + "people" => [ + %{ + "firstName" => "Conrad", + "lastName" => "Taylor" + }, + %{ + "firstName" => "David", + "lastName" => "Heinemeier Hansson" + } + ] + } + } + end + + test "get people" do + query = """ + query GetPeople { + people { + firstName + lastName + } + } + """ + + response = + post( + build_conn(), + "/graphql", + query: query + ) + + assert json_response(response, 200) == %{ + "data" => %{ + "people" => [ + %{ + "firstName" => "Conrad", + "lastName" => "Taylor" + }, + %{ + "firstName" => "David", + "lastName" => "Heinemeier Hansson" + }, + %{ + "firstName" => "Ezra", + "lastName" => "Zygmuntowicz" + }, + %{ + "firstName" => "Yukihiro", + "lastName" => "Matsumoto" + } + ] + } + } + end +end diff --git a/test/zero_phoenix_web/schema/query/person_test.exs b/test/zero_phoenix_web/schema/query/person_test.exs index dd45ede..1ddc698 100644 --- a/test/zero_phoenix_web/schema/query/person_test.exs +++ b/test/zero_phoenix_web/schema/query/person_test.exs @@ -10,15 +10,15 @@ defmodule ZeroPhoenixWeb.Schema.Query.PersonTest do ZeroPhoenix.Seeds.run() end - @query """ - query GetPerson($personId: ID!) { - person(id: $personId) { - email - } - } - """ - test "get person by ID" do + query = """ + query GetPerson($personId: ID!) { + person(id: $personId) { + email + } + } + """ + person = Person |> first() @@ -28,16 +28,16 @@ defmodule ZeroPhoenixWeb.Schema.Query.PersonTest do post( build_conn(), "/graphql", - query: @query, + query: query, variables: %{"personId" => person.id} ) assert json_response(response, 200) == %{ - "data" => %{ - "person" => %{ - "email" => "conradwt@gmail.com" - } - } - } + "data" => %{ + "person" => %{ + "email" => "conradwt@gmail.com" + } + } + } end end