Packages

Artem is a library to help testing Absinthe documents

Current section

2 Versions

Jump to

Compare versions

3 files changed
+18 additions
-14 deletions
  @@ -16,4 +16,4 @@
16 16 {<<"optional">>,false},
17 17 {<<"repository">>,<<"hexpm">>},
18 18 {<<"requirement">>,<<"~> 1.5">>}]]}.
19 - {<<"version">>,<<"1.0.0">>}.
19 + {<<"version">>,<<"1.1.0">>}.
  @@ -67,12 +67,18 @@ defmodule Artem do
67 67 if options[:generate_function] && document.name != nil do
68 68 name = document.name |> Macro.underscore() |> String.to_atom()
69 69
70 - def unquote(Macro.escape(name))(opts) do
70 + def unquote(Macro.escape(name))(opts) when is_list(opts) do
71 71 Artem.run(
72 72 unquote(Macro.escape(document)),
73 73 Keyword.merge(opts, operation_name: unquote(Macro.escape(document)).name)
74 74 )
75 75 end
76 +
77 + def unquote(Macro.escape(name))(variables \\ %{}, context \\ %{}, opts \\ []) do
78 + unquote(Macro.escape(name))(
79 + Keyword.merge([variables: variables, context: context], opts)
80 + )
81 + end
76 82 end
77 83
78 84 document
  @@ -223,9 +229,6 @@ defmodule Artem do
223 229 @doc """
224 230 Run a document against the schema.
225 231
226 - The
227 -
228 -
229 232 ## Examples
230 233 defmodule SomeTest do
231 234 use Artem, schema: Your.Schema
  @@ -236,14 +239,15 @@ defmodule Artem do
236 239 }
237 240 |
238 241
239 - test "runs precompiled query" do
242 + test "with assigned variables and context" do
240 243 @query
241 - |> Artem.assign_variables(%{format: "YYMMDD})
244 + |> Artem.assign_variables(%{"format" => "YYMMDD"})
245 + |> Artem.assign_context(%{current_user_id: 1})
242 246 |> Artem.run()
243 247 end
244 248
245 - test "with " do
246 - Artem.run(@query, variables: %{format: "YYMMDD}, context: %{current_user_id: 1})
249 + test "with passed in variables and context" do
250 + Artem.run(@query, variables: %{"format" => "YYMMDD}, context: %{current_user_id: 1})
247 251 end
248 252 end
249 253
  @@ -294,10 +298,10 @@ defmodule Artem do
294 298 end
295 299 end
296 300
297 - defp build_name(%{input: %{definitions: nodes}}) do
298 - node = List.first(nodes)
299 - node.name
300 - end
301 + defp build_name(%{input: %{definitions: [node]}}), do: node.name
302 +
303 + defp build_name(%{input: %{definitions: _nodes}}),
304 + do: raise(Artem.Error, "Multiple operations are not supported")
301 305
302 306 # For raw string documents, entire pipeline needs to run
303 307 defp build_pipeline(%Artem.Document{document: document} = doc, options)
  @@ -6,7 +6,7 @@ defmodule ExGql.MixProject do
6 6 def project do
7 7 [
8 8 app: :artem,
9 - version: "1.0.0",
9 + version: "1.1.0",
10 10 elixir: "~> 1.10",
11 11 elixirc_paths: elixirc_paths(Mix.env()),
12 12 start_permanent: Mix.env() == :prod,