zf

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

type.test.exs (3013B)


      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.VF.Agreement.Type do
     19 use ZenflowsTest.Help.AbsinCase, async: true
     20 
     21 setup do
     22 	%{
     23 		params: %{
     24 			"name" => Factory.str("name"),
     25 			"note" => Factory.str("note"),
     26 		},
     27 		inserted: Factory.insert!(:agreement),
     28 	}
     29 end
     30 
     31 @frag """
     32 fragment agreement on Agreement {
     33 	id
     34 	name
     35 	note
     36 	created
     37 }
     38 """
     39 
     40 describe "Query" do
     41 	test "agreement", %{inserted: new} do
     42 		assert %{data: %{"agreement" => data}} =
     43 			run!("""
     44 				#{@frag}
     45 				query ($id: ID!) {
     46 					agreement(id: $id) {...agreement}
     47 				}
     48 			""", vars: %{"id" => new.id})
     49 
     50 		assert data["id"] == new.id
     51 		assert data["name"] == new.name
     52 		assert data["note"] == new.note
     53 		assert {:ok, created, 0} = DateTime.from_iso8601(data["created"])
     54 		assert DateTime.compare(DateTime.utc_now(), created) != :lt
     55 	end
     56 end
     57 
     58 describe "Mutation" do
     59 	test "createAgreement", %{params: params} do
     60 		assert %{data: %{"createAgreement" => %{"agreement" => data}}} =
     61 			run!("""
     62 				#{@frag}
     63 				mutation ($agreement: AgreementCreateParams!) {
     64 					createAgreement(agreement: $agreement) {
     65 						agreement {...agreement}
     66 					}
     67 				}
     68 			""", vars: %{"agreement" => params})
     69 
     70 		assert {:ok, _} = Zenflows.DB.ID.cast(data["id"])
     71 		assert Map.take(data, ~w[name note]) == params
     72 		assert {:ok, created, 0} = DateTime.from_iso8601(data["created"])
     73 		assert DateTime.compare(DateTime.utc_now(), created) != :lt
     74 	end
     75 
     76 	test "updateAgreement", %{params: params, inserted: agreem} do
     77 		assert %{data: %{"updateAgreement" => %{"agreement" => data}}} =
     78 			run!("""
     79 				#{@frag}
     80 				mutation ($agreement: AgreementUpdateParams!) {
     81 					updateAgreement(agreement: $agreement) {
     82 						agreement {...agreement}
     83 					}
     84 				}
     85 			""", vars: %{
     86 				"agreement" => Map.put(params, "id", agreem.id),
     87 			})
     88 
     89 		assert data["id"] == agreem.id
     90 		assert Map.take(data, ~w[name note]) == params
     91 		assert {:ok, created, 0} = DateTime.from_iso8601(data["created"])
     92 		assert DateTime.compare(DateTime.utc_now(), created) != :lt
     93 	end
     94 
     95 	test "deleteAgreement", %{inserted: %{id: id}} do
     96 		assert %{data: %{"deleteAgreement" => true}} =
     97 			run!("""
     98 				mutation ($id: ID!) {
     99 					deleteAgreement(id: $id)
    100 				}
    101 			""", vars: %{"id" => id})
    102 	end
    103 end
    104 end