zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

absin_case.ex (2051B)


      1 # Zenflows is designed to implement the Valueflows vocabulary,
      2 # written and maintained by srfsh <info@dyne.org>.
      3 # Copyright (C) 2021-2023 Dyne.org foundation <foundation@dyne.org>.
      4 #
      5 # This program is free software: you can redistribute it and/or modify
      6 # it under the terms of the GNU Affero General Public License as published by
      7 # the Free Software Foundation, either version 3 of the License, or
      8 # (at your option) any later version.
      9 #
     10 # This program is distributed in the hope that it will be useful,
     11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13 # GNU Affero General Public License for more details.
     14 #
     15 # You should have received a copy of the GNU Affero General Public License
     16 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
     17 
     18 defmodule ZenflowsTest.Help.AbsinCase do
     19 @moduledoc "A helper module to ease writing GraphQL tests."
     20 use ExUnit.CaseTemplate
     21 
     22 using do
     23 	quote do
     24 		import ZenflowsTest.Help.AbsinCase
     25 
     26 		alias ZenflowsTest.Help.Factory
     27 	end
     28 end
     29 
     30 setup ctx do
     31 	alias Ecto.Adapters.SQL.Sandbox
     32 	alias Zenflows.DB.Repo
     33 
     34 	:ok = Sandbox.checkout(Repo)
     35 
     36 	unless ctx[:async] do
     37 		Sandbox.mode(Repo, {:shared, self()})
     38 	end
     39 
     40 	:ok
     41 end
     42 
     43 @spec query!(String.t()) :: Absinthe.run_result()
     44 def query!(doc) do
     45 	Absinthe.run!("query { #{doc} }", Zenflows.GQL.Schema, context: %{authenticate_calls?: false})
     46 end
     47 
     48 @spec mutation!(String.t()) :: Absinthe.run_result()
     49 def mutation!(doc) do
     50 	Absinthe.run!("mutation { #{doc} }", Zenflows.GQL.Schema, context: %{authenticate_calls?: false})
     51 end
     52 
     53 @spec run!(String.t(), Keyword.t()) :: Absinthe.run_result()
     54 def run!(doc, opts \\ []) do
     55 	auth? = Keyword.get(opts, :auth?, false)
     56 	ctx = Keyword.get(opts, :ctx, Keyword.get(opts, :context, %{}))
     57 	ctx = Map.put(ctx, :authenticate_calls?, auth?)
     58 	vars = Keyword.get(opts, :vars, Keyword.get(opts, :variables, %{}))
     59 	opts =
     60 		opts
     61 		|> Keyword.put(:context, ctx)
     62 		|> Keyword.put(:variables, vars)
     63 	Absinthe.run!(doc, Zenflows.GQL.Schema, opts)
     64 end
     65 end