From 73d5da3c5bdaba28fb4b08b2fca494b1bdce2696 Mon Sep 17 00:00:00 2001 From: Matt Beanland Date: Wed, 6 May 2026 17:24:22 +0930 Subject: [PATCH 1/2] tests use sandbox --- mix.exs | 5 ++++- mix.lock | 14 ++++++------- test/instance_extension/assigner_test.exs | 9 ++------- .../characteristic_test.exs | 9 ++------- test/instance_extension/feature_test.exs | 9 ++------- test/instance_extension/party_test.exs | 9 ++------- test/instance_extension/place_test.exs | 9 ++------- .../instance_extension/specification_test.exs | 9 ++------- test/provider/characteristic_test.exs | 9 ++------- test/provider/entity_ref_test.exs | 9 ++------- test/provider/entity_test.exs | 9 ++------- test/provider/event_test.exs | 9 ++------- test/provider/external_identifier_test.exs | 9 ++------- test/provider/feature_test.exs | 9 ++------- test/provider/instance_test.exs | 20 ++++++++----------- test/provider/note_test.exs | 9 ++------- test/provider/party_ref_test.exs | 9 ++------- test/provider/party_test.exs | 9 ++------- test/provider/place_ref_test.exs | 9 ++------- test/provider/place_test.exs | 9 ++------- test/provider/process_status_test.exs | 9 ++------- test/provider/relationship_test.exs | 9 ++------- test/provider/specification_test.exs | 20 +++++++++---------- test/provider/versioning_test.exs | 9 ++------- 24 files changed, 68 insertions(+), 171 deletions(-) diff --git a/mix.exs b/mix.exs index eacb613..fd9fbc6 100644 --- a/mix.exs +++ b/mix.exs @@ -99,7 +99,10 @@ defmodule Diffo.MixProject do {:ash_outstanding, "~> 0.2.3"}, {:ash_jason, "~> 3.0"}, {:ash_state_machine, "~> 0.2.12"}, - {:ash_neo4j, ash_neo4j_version("~> 0.3.1")}, + #{:ash_neo4j, ash_neo4j_version("~> 0.4.1")}, + {:ash_neo4j, github: "diffo-dev/ash_neo4j", branch: "dev", override: true, only: [:dev, :test]}, + #{:bolty, "~> 0.1.0")}, + {:bolty, github: "diffo-dev/bolty", branch: "dev", override: true, only: [:dev, :test]}, {:ash, ash_version("~> 3.0 and >= 3.24.2")}, {:uuid, "~> 1.1"}, {:igniter, ">= 0.6.29 and < 1.0.0-0", diff --git a/mix.lock b/mix.lock index a4888a5..98e95e5 100644 --- a/mix.lock +++ b/mix.lock @@ -1,15 +1,15 @@ %{ - "ash": {:hex, :ash, "3.24.3", "f7280a43c5e64f769a450f3dd59ace6dcd73edcdd0de7599815b1b31f59292fb", [:mix], [{:crux, ">= 0.1.2 and < 1.0.0-0", [hex: :crux, repo: "hexpm", optional: false]}, {:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:igniter, ">= 0.6.29 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 1.0", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.6.0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.3", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 1.0", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c1022f8c549632137cbc8956f07bb4981405297f5abe7a752b4dffac175c3381"}, + "ash": {:hex, :ash, "3.24.7", "6e2f32011e7c8f0809dae36712ccfb2efaf3c669cbda7443685436e80acdebf7", [:mix], [{:crux, ">= 0.1.2 and < 1.0.0-0", [hex: :crux, repo: "hexpm", optional: false]}, {:decimal, "~> 2.0 or ~> 3.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:igniter, ">= 0.6.29 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 1.0", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.6.0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.3", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 1.0", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c9fb4d21c3c8bb85636338d448afdc283dd98a433d869e4b2210ac57ade00624"}, "ash_jason": {:hex, :ash_jason, "3.1.0", "84a88dfe5e25a20d55cf2d2664885cd086fa45871e8777aedc3ad96a282e2a6f", [:mix], [{:ash, ">= 3.6.2 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:spark, ">= 2.1.21 and < 3.0.0", [hex: :spark, repo: "hexpm", optional: false]}], "hexpm", "71e6bbc421fb2cf7079f8804814145cca458116c839fc798f9606b806e07eb2b"}, - "ash_neo4j": {:hex, :ash_neo4j, "0.3.1", "52b81e870d020815ffb2699f3fa207e10e909418e80c8aec4c64ed668418299a", [:mix], [{:ash, ">= 3.24.2 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:bolty, ">= 0.0.10", [hex: :bolty, repo: "hexpm", optional: false]}, {:igniter, ">= 0.6.29 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "5da556d93e03fda97e1bb626941114b7011a64173b1c10deb12cf66523e82001"}, + "ash_neo4j": {:git, "https://github.com/diffo-dev/ash_neo4j.git", "762b0ac089e6f6338e3cbfd22ad64f83f3079f15", [branch: "dev"]}, "ash_outstanding": {:hex, :ash_outstanding, "0.2.4", "c72b91f1b8e4859fb033eddf66d0ba36cfd8af0c2a9748c7ef9e6ccfdb5d093d", [:mix], [{:ash, ">= 3.6.2 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:outstanding, "~> 0.2.4", [hex: :outstanding, repo: "hexpm", optional: false]}], "hexpm", "64ba8f582ce69c9050352c75f0895db186c7a56f35039dab34c8e1ab7516f9ce"}, "ash_state_machine": {:hex, :ash_state_machine, "0.2.13", "e1c368ebf01ef73477739ee76d53e513d073b141ec11e7bf7f91d8f2d8fc9569", [:mix], [{:ash, ">= 3.4.66 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}], "hexpm", "aa21c92a8950850df69b5205bf41efc1e502f5ab839425ba08561f0421c9f226"}, - "bolty": {:hex, :bolty, "0.0.10", "ec88948d30cfc213cdb1168f86d96cdcadd80f16e4f29701966e69dfbac43ded", [:mix], [{:db_connection, "~> 2.7.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:poison, "~> 6.0", [hex: :poison, repo: "hexpm", optional: true]}], "hexpm", "2ce63d6c23301d1c9a61fd29ef06ebb7d2e775d4fd4144e86c2717aa43f409c9"}, + "bolty": {:git, "https://github.com/diffo-dev/bolty.git", "cc38e23e94eddc177dd8988bbcf0b489fab3bffe", [branch: "dev"]}, "crux": {:hex, :crux, "0.1.2", "4441c9e3a34f1e340954ce96b9ad5a2de13ceb4f97b3f910211227bb92e2ca90", [:mix], [{:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:stream_data, "~> 1.0", [hex: :stream_data, repo: "hexpm", optional: true]}], "hexpm", "563ea3748ebfba9cc078e6d198a1d6a06015a8fae503f0b721363139f0ddb350"}, "db_connection": {:hex, :db_connection, "2.7.0", "b99faa9291bb09892c7da373bb82cba59aefa9b36300f6145c5f201c7adf48ec", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dcf08f31b2701f857dfc787fbad78223d61a32204f217f15e881dd93e4bdd3ff"}, "decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"}, "earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"}, - "ecto": {:hex, :ecto, "3.13.5", "9d4a69700183f33bf97208294768e561f5c7f1ecf417e0fa1006e4a91713a834", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "df9efebf70cf94142739ba357499661ef5dbb559ef902b68ea1f3c1fabce36de"}, + "ecto": {:hex, :ecto, "3.13.6", "352135b474f91d1ab99a1b502171d207e9db60421c9e3d0ecab4c7ab96b24d14", [:mix], [{:decimal, "~> 2.0 or ~> 3.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8afa059bc16cd2c94739ec0a11e3e5df69d828125119109bef35f20a21a76af2"}, "ets": {:hex, :ets, "0.9.0", "79c6a6c205436780486f72d84230c6cba2f8a9920456750ddd1e47389107d5fd", [:mix], [], "hexpm", "2861fdfb04bcaeff370f1a5904eec864f0a56dcfebe5921ea9aadf2a481c822b"}, "ex_doc": {:hex, :ex_doc, "0.40.1", "67542e4b6dde74811cfd580e2c0149b78010fd13001fda7cfeb2b2c2ffb1344d", [:mix], [{:earmark_parser, "~> 1.4.44", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "bcef0e2d360d93ac19f01a85d58f91752d930c0a30e2681145feea6bd3516e00"}, "finch": {:hex, :finch, "0.21.0", "b1c3b2d48af02d0c66d2a9ebfb5622be5c5ecd62937cf79a88a7f98d48a8290c", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "87dc6e169794cb2570f75841a19da99cfde834249568f2a5b121b809588a4377"}, @@ -17,7 +17,7 @@ "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, "igniter": {:hex, :igniter, "0.7.9", "8c573440b8127fd80be8220fb197e7422317a81072054fcc0b336029f035a416", [:mix], [{:glob_ex, "~> 0.1.7", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:phx_new, "~> 1.7", [hex: :phx_new, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:rewrite, ">= 1.1.1 and < 2.0.0-0", [hex: :rewrite, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.4", [hex: :sourceror, repo: "hexpm", optional: false]}, {:spitfire, ">= 0.1.3 and < 1.0.0-0", [hex: :spitfire, repo: "hexpm", optional: false]}], "hexpm", "123513d09f3af149db851aad8492b5b49f861d2c466a72031b2a0cbd9f45526f"}, "iterex": {:hex, :iterex, "0.1.2", "58f9b9b9a22a55cbfc7b5234a9c9c63eaac26d276b3db80936c0e1c60355a5a6", [:mix], [], "hexpm", "2e103b8bcc81757a9af121f6dc0df312c9a17220f302b1193ef720460d03029d"}, - "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, + "jason": {:hex, :jason, "1.4.5", "2e3a008590b0b8d7388c20293e9dcc9cf3e5d642fd2a114e4cbbb52e595d940a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b0c823996102bcd0239b3c2444eb00409b72f6a140c1950bc8b457d836b30684"}, "libgraph": {:hex, :libgraph, "0.16.0", "3936f3eca6ef826e08880230f806bfea13193e49bf153f93edcf0239d4fd1d07", [:mix], [], "hexpm", "41ca92240e8a4138c30a7e06466acc709b0cbb795c643e9e17174a178982d6bf"}, "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"}, "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"}, @@ -33,8 +33,8 @@ "req": {:hex, :req, "0.5.17", "0096ddd5b0ed6f576a03dde4b158a0c727215b15d2795e59e0916c6971066ede", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "0b8bc6ffdfebbc07968e59d3ff96d52f2202d0536f10fef4dc11dc02a2a43e39"}, "rewrite": {:hex, :rewrite, "1.3.0", "67448ba7975690b35ba7e7f35717efcce317dbd5963cb0577aa7325c1923121a", [:mix], [{:glob_ex, "~> 0.1", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.0", [hex: :sourceror, repo: "hexpm", optional: false]}, {:text_diff, "~> 0.1", [hex: :text_diff, repo: "hexpm", optional: false]}], "hexpm", "d111ac7ff3a58a802ef4f193bbd1831e00a9c57b33276e5068e8390a212714a5"}, "sourceror": {:hex, :sourceror, "1.12.0", "da354c5f35aad3cc1132f5d5b0d8437d865e2661c263260480bab51b5eedb437", [:mix], [], "hexpm", "755703683bd014ebcd5de9acc24b68fb874a660a568d1d63f8f98cd8a6ef9cd0"}, - "spark": {:hex, :spark, "2.6.1", "b0100216d3883c6a281cb2434af45afbd808695aadb034923cbaf7d8a2ba46ab", [:mix], [{:igniter, ">= 0.3.64 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:sourceror, "~> 1.2", [hex: :sourceror, repo: "hexpm", optional: true]}], "hexpm", "77bbefa5263bb6b70e1195bc0fc662ddb8ef5937a356a77ae072e56983ad13f0"}, - "spitfire": {:hex, :spitfire, "0.3.10", "19aea9914132456515e8f7d592f63ab9f3130876b0252e834d2390bdd8becb24", [:mix], [], "hexpm", "6a6a5f77eb4165249c76199cd2d01fb595bac9207aed3de551918ac1c2bc9267"}, + "spark": {:hex, :spark, "2.7.0", "e685b33c038f12851993880bb7e3b326117612eb746fe15828678c152f8321c6", [:mix], [{:igniter, ">= 0.3.64 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:sourceror, "~> 1.2", [hex: :sourceror, repo: "hexpm", optional: true]}], "hexpm", "e2f675fbda32375b01d9ee7c652671531027fd043bf4a91bafdb2ab716aa1122"}, + "spitfire": {:hex, :spitfire, "0.3.11", "79dfcb033762470de472c1c26ea2b4e3aca74700c685dbffd9a13466272c323d", [:mix], [], "hexpm", "eb6e2dadf63214e8bfe65ca9788cef2b03b01027365d78d3c0e3d9ebd3d5b7b4"}, "splode": {:hex, :splode, "0.3.1", "9843c54f84f71b7833fec3f0be06c3cfb5be6b35960ee195ea4fad84b1c25030", [:mix], [], "hexpm", "8f2309b6ec2ecbb01435656429ed1d9ed04ba28797a3280c3b0d1217018ecfbd"}, "stream_data": {:hex, :stream_data, "1.3.0", "bde37905530aff386dea1ddd86ecbf00e6642dc074ceffc10b7d4e41dfd6aac9", [:mix], [], "hexpm", "3cc552e286e817dca43c98044c706eec9318083a1480c52ae2688b08e2936e3c"}, "telemetry": {:hex, :telemetry, "1.4.1", "ab6de178e2b29b58e8256b92b382ea3f590a47152ca3651ea857a6cae05ac423", [:rebar3], [], "hexpm", "2172e05a27531d3d31dd9782841065c50dd5c3c7699d95266b2edd54c2dafa1c"}, diff --git a/test/instance_extension/assigner_test.exs b/test/instance_extension/assigner_test.exs index c6ab9e0..b626990 100644 --- a/test/instance_extension/assigner_test.exs +++ b/test/instance_extension/assigner_test.exs @@ -14,14 +14,9 @@ defmodule Diffo.InstanceExtension.AssignerTest do alias Diffo.Test.Servo alias Diffo.Test.Card - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "build card" do diff --git a/test/instance_extension/characteristic_test.exs b/test/instance_extension/characteristic_test.exs index 4748c28..aee0b98 100644 --- a/test/instance_extension/characteristic_test.exs +++ b/test/instance_extension/characteristic_test.exs @@ -8,14 +8,9 @@ defmodule Diffo.InstanceExtension.CharacteristicTest do alias Diffo.Test.Servo alias Diffo.Test.Parties - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "characteristic" do diff --git a/test/instance_extension/feature_test.exs b/test/instance_extension/feature_test.exs index 84b778f..b691849 100644 --- a/test/instance_extension/feature_test.exs +++ b/test/instance_extension/feature_test.exs @@ -8,14 +8,9 @@ defmodule Diffo.InstanceExtension.FeatureTest do alias Diffo.Test.Servo alias Diffo.Test.Parties - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "feature" do diff --git a/test/instance_extension/party_test.exs b/test/instance_extension/party_test.exs index 51fa04c..6e6171a 100644 --- a/test/instance_extension/party_test.exs +++ b/test/instance_extension/party_test.exs @@ -16,14 +16,9 @@ defmodule Diffo.InstanceExtension.PartyTest do alias Diffo.Test.Servo alias Diffo.Provider.Instance.Party - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Party DSL — Organization" do diff --git a/test/instance_extension/place_test.exs b/test/instance_extension/place_test.exs index a304cba..6f5127b 100644 --- a/test/instance_extension/place_test.exs +++ b/test/instance_extension/place_test.exs @@ -14,14 +14,9 @@ defmodule Diffo.InstanceExtension.PlaceTest do alias Diffo.Test.Shelf alias Diffo.Test.Nbn - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Place DSL — GeographicSite" do diff --git a/test/instance_extension/specification_test.exs b/test/instance_extension/specification_test.exs index 4a8d283..a628997 100644 --- a/test/instance_extension/specification_test.exs +++ b/test/instance_extension/specification_test.exs @@ -8,14 +8,9 @@ defmodule Diffo.InstanceExtension.SpecificationTest do alias Diffo.Test.Servo alias Diffo.Test.Shelf - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "specification" do diff --git a/test/provider/characteristic_test.exs b/test/provider/characteristic_test.exs index 30f109e..0dc8fed 100644 --- a/test/provider/characteristic_test.exs +++ b/test/provider/characteristic_test.exs @@ -8,14 +8,9 @@ defmodule Diffo.Provider.CharacteristicTest do alias Diffo.Test.Patch alias Diffo.Type.Value - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read Characteristics" do diff --git a/test/provider/entity_ref_test.exs b/test/provider/entity_ref_test.exs index 5a3c727..4813df3 100644 --- a/test/provider/entity_ref_test.exs +++ b/test/provider/entity_ref_test.exs @@ -9,14 +9,9 @@ defmodule Diffo.Provider.EntityRefTest do alias Diffo.Provider.Entity alias Diffo.Provider.EntityRef - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read EntityRefs" do diff --git a/test/provider/entity_test.exs b/test/provider/entity_test.exs index ce7fa29..6a49db2 100644 --- a/test/provider/entity_test.exs +++ b/test/provider/entity_test.exs @@ -7,14 +7,9 @@ defmodule Diffo.Provider.EntityTest do use ExUnit.Case use Outstand - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read Entities" do diff --git a/test/provider/event_test.exs b/test/provider/event_test.exs index 2260a2a..b723dfb 100644 --- a/test/provider/event_test.exs +++ b/test/provider/event_test.exs @@ -6,14 +6,9 @@ defmodule Diffo.Provider.EventTest do @moduledoc false use ExUnit.Case - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider.Event create" do diff --git a/test/provider/external_identifier_test.exs b/test/provider/external_identifier_test.exs index 9c88b8c..c1d0c63 100644 --- a/test/provider/external_identifier_test.exs +++ b/test/provider/external_identifier_test.exs @@ -8,14 +8,9 @@ defmodule Diffo.Provider.ExternalIdentifierTest do alias Diffo.Provider.ExternalIdentifier alias Diffo.Provider.Party - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read ExternalIdentifiers" do diff --git a/test/provider/feature_test.exs b/test/provider/feature_test.exs index 2b834bf..73755e4 100644 --- a/test/provider/feature_test.exs +++ b/test/provider/feature_test.exs @@ -8,14 +8,9 @@ defmodule Diffo.Provider.FeatureTest do alias Diffo.Type.Value - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read Features" do diff --git a/test/provider/instance_test.exs b/test/provider/instance_test.exs index 11fe199..2c4dc69 100644 --- a/test/provider/instance_test.exs +++ b/test/provider/instance_test.exs @@ -5,17 +5,11 @@ defmodule Diffo.Provider.InstanceTest do @moduledoc false use ExUnit.Case - alias Diffo.Provider.Instance alias Diffo.Type.Value - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read Instances!" do @@ -83,8 +77,10 @@ defmodule Diffo.Provider.InstanceTest do assert instance.href == "serviceInventoryManagement/v4/service/#{instance.id}" # both specification and instance nodes are labelled :Provider - {:ok, response} = AshNeo4j.Neo4jHelper.read_nodes(:Provider) - assert length(response.results) == 2 + {:ok, spec_nodes} = AshNeo4j.Neo4jHelper.read_nodes(:Provider, %{uuid: specification.id}) + {:ok, inst_nodes} = AshNeo4j.Neo4jHelper.read_nodes(:Provider, %{uuid: instance.id}) + assert length(spec_nodes.results) == 1 + assert length(inst_nodes.results) == 1 end test "create a service instance with a supplied id - success" do @@ -135,8 +131,8 @@ defmodule Diffo.Provider.InstanceTest do {:ok, _result} = Diffo.Provider.create_instance(%{specified_by: specification.id, id: uuid}) - instances = Instance |> Ash.read!() - assert length(instances) == 1 + {:ok, found} = Diffo.Provider.get_instance_by_id(uuid) + assert found.id == uuid end # TODO fix this test, it is failing as specified_instance_type calculation is not loaded when create validation occurs diff --git a/test/provider/note_test.exs b/test/provider/note_test.exs index 4e9500c..d6a4b7f 100644 --- a/test/provider/note_test.exs +++ b/test/provider/note_test.exs @@ -8,14 +8,9 @@ defmodule Diffo.Provider.NoteTest do alias Diffo.Provider.Party alias Diffo.Provider.Instance - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read Notes" do diff --git a/test/provider/party_ref_test.exs b/test/provider/party_ref_test.exs index 42a62a6..cf28358 100644 --- a/test/provider/party_ref_test.exs +++ b/test/provider/party_ref_test.exs @@ -7,14 +7,9 @@ defmodule Diffo.Provider.PartyRefTest do use ExUnit.Case use Outstand - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read PartyRefs" do diff --git a/test/provider/party_test.exs b/test/provider/party_test.exs index 2bfa727..1104ace 100644 --- a/test/provider/party_test.exs +++ b/test/provider/party_test.exs @@ -7,14 +7,9 @@ defmodule Diffo.Provider.PartyTest do use ExUnit.Case use Outstand - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read Parties" do diff --git a/test/provider/place_ref_test.exs b/test/provider/place_ref_test.exs index 8f7f743..c48d77a 100644 --- a/test/provider/place_ref_test.exs +++ b/test/provider/place_ref_test.exs @@ -7,14 +7,9 @@ defmodule Diffo.Provider.PlaceRefTest do use ExUnit.Case use Outstand - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read PlaceRefs" do diff --git a/test/provider/place_test.exs b/test/provider/place_test.exs index 07a2e9b..0d09900 100644 --- a/test/provider/place_test.exs +++ b/test/provider/place_test.exs @@ -7,14 +7,9 @@ defmodule Diffo.Provider.PlaceTest do use ExUnit.Case use Outstand - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read Places" do diff --git a/test/provider/process_status_test.exs b/test/provider/process_status_test.exs index 28f8507..7f96180 100644 --- a/test/provider/process_status_test.exs +++ b/test/provider/process_status_test.exs @@ -6,14 +6,9 @@ defmodule Diffo.Provider.ProcessStatusTest do @moduledoc false use ExUnit.Case - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_nodes(:ProcessStatus) - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider.ProcessStatus create" do diff --git a/test/provider/relationship_test.exs b/test/provider/relationship_test.exs index b950820..661f9d2 100644 --- a/test/provider/relationship_test.exs +++ b/test/provider/relationship_test.exs @@ -8,14 +8,9 @@ defmodule Diffo.Provider.RelationshipTest do alias Diffo.Type.Value - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read Relationships" do diff --git a/test/provider/specification_test.exs b/test/provider/specification_test.exs index 05f2377..cc97ebe 100644 --- a/test/provider/specification_test.exs +++ b/test/provider/specification_test.exs @@ -6,23 +6,21 @@ defmodule Diffo.Provider.SpecificationTest do @moduledoc false use ExUnit.Case - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "Diffo.Provider read Specifications!" do test "list specifications" do - Diffo.Provider.create_specification!(%{name: "compute", category: "cloud"}) - Diffo.Provider.create_specification!(%{name: "storage", category: "cloud"}) - Diffo.Provider.create_specification!(%{name: "intelligence", category: "agent"}) + spec1 = Diffo.Provider.create_specification!(%{name: "compute", category: "cloud"}) + spec2 = Diffo.Provider.create_specification!(%{name: "storage", category: "cloud"}) + spec3 = Diffo.Provider.create_specification!(%{name: "intelligence", category: "agent"}) specifications = Diffo.Provider.list_specifications!() - assert length(specifications) == 3 + ids = Enum.map(specifications, & &1.id) + assert spec1.id in ids + assert spec2.id in ids + assert spec3.id in ids end test "find specifications by category" do diff --git a/test/provider/versioning_test.exs b/test/provider/versioning_test.exs index c1ba55a..a0c41d3 100644 --- a/test/provider/versioning_test.exs +++ b/test/provider/versioning_test.exs @@ -10,14 +10,9 @@ defmodule Diffo.Provider.VersioningTest do alias Diffo.Test.Broadband alias Diffo.Test.BroadbandV2 - setup_all do - AshNeo4j.BoltyHelper.start() - end - setup do - on_exit(fn -> - AshNeo4j.Neo4jHelper.delete_all() - end) + AshNeo4j.Sandbox.checkout() + on_exit(&AshNeo4j.Sandbox.rollback/0) end describe "minor version — backward-compatible change" do From 199b8dc0035621d7f1acee0219f912552b155105 Mon Sep 17 00:00:00 2001 From: Matt Beanland Date: Wed, 6 May 2026 23:05:12 +0930 Subject: [PATCH 2/2] ash_neo4j and bolty bump --- CHANGELOG.md | 95 +++++++++++++++++++++++++++------------------------- mix.exs | 6 ++-- mix.lock | 4 +-- 3 files changed, 53 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed8b16d..6f523a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,87 +11,90 @@ See [Conventional Commits](Https://conventionalcommits.org) for commit guideline -## [v0.1.0](https://github.com/diffo-dev/diffo/compare/v0.1.0...v0.1.0) (2025-08-11) -### Features: -* initial version on AshNeo4j DataLayer -## [v0.1.1](https://github.com/diffo-dev/diffo/compare/v0.1.0...v0.1.1) (2025-09-09) +## [v0.2.0](https://github.com/diffo-dev/diffo/compare/v0.1.6...v0.2.0) (2026-04-24) -### Features: -* update for AshNeo4j DSL changes -* refactor specification relationships -* characteristic value schemas -* customise instance via specification -* improve relationships to avoid circular loads +### Breaking Changes -## [v0.1.2](https://github.com/diffo-dev/diffo/compare/v0.1.1...v0.1.2) (2025-10-20) +* Updated to ash_neo4j 0.3.1 and bolty 0.0.10 — no database compatibility with prior versions due to significant changes in the data layer and Bolt protocol handling ### Features -* REUSE compliant - -## [v0.1.3](https://github.com/diffo-dev/diffo/compare/v0.1.2...v0.1.3) (2025-12-01) +* `Diffo.Type.Value` — union of `Diffo.Type.Primitive` and `Diffo.Type.Dynamic`, enabling mixed primitive and typed-struct values on characteristics and other resources +* `Diffo.Type.Primitive` — typed union of string, integer, float, boolean, date, time, datetime, duration +* `Diffo.Type.Dynamic` — runtime-typed struct for Ash.Type.NewType values +* `Diffo.Type.Dynamic.is_valid?/1` — predicate to check whether a module is a valid Dynamic type (Ash.Type.NewType with storage_type :map) before constructing a value +* `Characteristic.values` — homogeneous array of `Diffo.Type.Value` on a characteristic, with `is_array` boolean flag; supports morphing between scalar and array representations +* `Diffo.Unwrap` on `List` — unwraps each element, enabling `Diffo.Unwrap.unwrap/1` to reduce nested wrapped lists to plain Elixir values in one call +* Provider instance extension DSL — characteristic and feature characteristic value types now accept `{:array, Module}` in addition to plain module references -### Features +### Fixes -* place_ref source party or place -* party_ref source place or party -* instance events +* `Diffo.Type.Value` nil update — override `handle_change/3` to prevent Ash union type from wrapping nil in the previous member type, which caused malformed JSON to be written to Neo4j +* `Diffo.Type.Value` nil array update — added nil guards to `handle_change_array/3` and `prepare_change_array/3` to prevent enumeration errors when setting an array characteristic to nil +* `Diffo.Type.Dynamic` nil safety — added nil clauses to `cast_stored/2` and `dump_to_native/2` ### Maintenance -* remove access domain +* bolty 0.0.10 — native DateTime handling for both BOLT 4.x and BOLT 5.x +* `Diffo.Unwrap` protocol documentation — recursive unwrap behaviour, custom implementation guide, and array examples added to livebook and module docs -## [v0.1.4](https://github.com/diffo-dev/diffo/compare/v0.1.3...v0.1.4) (2026-03-12) +## [v0.1.6](https://github.com/diffo-dev/diffo/compare/v0.1.5...v0.1.6) (2026-03-19) -### Features +### Fixes -* assigner unassign operation +* incorrect domain label ### Maintenance -* updated ash_neo4j, uses bolty rather than boltx +* improved error handling -## [v0.1.5](https://github.com/diffo-dev/diffo/compare/v0.1.4...v0.1.5) (2026-03-19) + [v0.1.5](https://github.com/diffo-dev/diffo/compare/v0.1.4...v0.1.5) (2026-03-19) ### Fixes * fixed relationship enrichment inconsistent across neo4j versions -## [v0.2.0](https://github.com/diffo-dev/diffo/compare/v0.1.6...v0.2.0) (2026-04-24) +## [v0.1.4](https://github.com/diffo-dev/diffo/compare/v0.1.3...v0.1.4) (2026-03-12) -### Breaking Changes +### Features -* Updated to ash_neo4j 0.3.1 and bolty 0.0.10 — no database compatibility with prior versions due to significant changes in the data layer and Bolt protocol handling +* assigner unassign operation -### Features +### Maintenance -* `Diffo.Type.Value` — union of `Diffo.Type.Primitive` and `Diffo.Type.Dynamic`, enabling mixed primitive and typed-struct values on characteristics and other resources -* `Diffo.Type.Primitive` — typed union of string, integer, float, boolean, date, time, datetime, duration -* `Diffo.Type.Dynamic` — runtime-typed struct for Ash.Type.NewType values -* `Diffo.Type.Dynamic.is_valid?/1` — predicate to check whether a module is a valid Dynamic type (Ash.Type.NewType with storage_type :map) before constructing a value -* `Characteristic.values` — homogeneous array of `Diffo.Type.Value` on a characteristic, with `is_array` boolean flag; supports morphing between scalar and array representations -* `Diffo.Unwrap` on `List` — unwraps each element, enabling `Diffo.Unwrap.unwrap/1` to reduce nested wrapped lists to plain Elixir values in one call -* Provider instance extension DSL — characteristic and feature characteristic value types now accept `{:array, Module}` in addition to plain module references +* updated ash_neo4j, uses bolty rather than boltx -### Fixes +## [v0.1.3](https://github.com/diffo-dev/diffo/compare/v0.1.2...v0.1.3) (2025-12-01) -* `Diffo.Type.Value` nil update — override `handle_change/3` to prevent Ash union type from wrapping nil in the previous member type, which caused malformed JSON to be written to Neo4j -* `Diffo.Type.Value` nil array update — added nil guards to `handle_change_array/3` and `prepare_change_array/3` to prevent enumeration errors when setting an array characteristic to nil -* `Diffo.Type.Dynamic` nil safety — added nil clauses to `cast_stored/2` and `dump_to_native/2` +### Features + +* place_ref source party or place +* party_ref source place or party +* instance events ### Maintenance -* bolty 0.0.10 — native DateTime handling for both BOLT 4.x and BOLT 5.x -* `Diffo.Unwrap` protocol documentation — recursive unwrap behaviour, custom implementation guide, and array examples added to livebook and module docs +* remove access domain -## [v0.1.6](https://github.com/diffo-dev/diffo/compare/v0.1.5...v0.1.6) (2026-03-19) +## [v0.1.2](https://github.com/diffo-dev/diffo/compare/v0.1.1...v0.1.2) (2025-10-20) -### Fixes +### Features -* incorrect domain label +* REUSE compliant -### Maintenance +## [v0.1.1](https://github.com/diffo-dev/diffo/compare/v0.1.0...v0.1.1) (2025-09-09) + +### Features: +* update for AshNeo4j DSL changes +* refactor specification relationships +* characteristic value schemas +* customise instance via specification +* improve relationships to avoid circular loads + +## [v0.1.0](https://github.com/diffo-dev/diffo/compare/v0.1.0...v0.1.0) (2025-08-11) + +### Features: +* initial version on AshNeo4j DataLayer -* improved error handling \ No newline at end of file diff --git a/mix.exs b/mix.exs index fd9fbc6..9944a96 100644 --- a/mix.exs +++ b/mix.exs @@ -99,10 +99,8 @@ defmodule Diffo.MixProject do {:ash_outstanding, "~> 0.2.3"}, {:ash_jason, "~> 3.0"}, {:ash_state_machine, "~> 0.2.12"}, - #{:ash_neo4j, ash_neo4j_version("~> 0.4.1")}, - {:ash_neo4j, github: "diffo-dev/ash_neo4j", branch: "dev", override: true, only: [:dev, :test]}, - #{:bolty, "~> 0.1.0")}, - {:bolty, github: "diffo-dev/bolty", branch: "dev", override: true, only: [:dev, :test]}, + {:ash_neo4j, ash_neo4j_version("~> 0.4.1")}, + {:bolty, ">= 0.0.12"}, {:ash, ash_version("~> 3.0 and >= 3.24.2")}, {:uuid, "~> 1.1"}, {:igniter, ">= 0.6.29 and < 1.0.0-0", diff --git a/mix.lock b/mix.lock index 98e95e5..0ba5589 100644 --- a/mix.lock +++ b/mix.lock @@ -1,10 +1,10 @@ %{ "ash": {:hex, :ash, "3.24.7", "6e2f32011e7c8f0809dae36712ccfb2efaf3c669cbda7443685436e80acdebf7", [:mix], [{:crux, ">= 0.1.2 and < 1.0.0-0", [hex: :crux, repo: "hexpm", optional: false]}, {:decimal, "~> 2.0 or ~> 3.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:igniter, ">= 0.6.29 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 1.0", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.6.0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.3", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 1.0", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c9fb4d21c3c8bb85636338d448afdc283dd98a433d869e4b2210ac57ade00624"}, "ash_jason": {:hex, :ash_jason, "3.1.0", "84a88dfe5e25a20d55cf2d2664885cd086fa45871e8777aedc3ad96a282e2a6f", [:mix], [{:ash, ">= 3.6.2 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:spark, ">= 2.1.21 and < 3.0.0", [hex: :spark, repo: "hexpm", optional: false]}], "hexpm", "71e6bbc421fb2cf7079f8804814145cca458116c839fc798f9606b806e07eb2b"}, - "ash_neo4j": {:git, "https://github.com/diffo-dev/ash_neo4j.git", "762b0ac089e6f6338e3cbfd22ad64f83f3079f15", [branch: "dev"]}, + "ash_neo4j": {:hex, :ash_neo4j, "0.4.1", "b33d7a5c9f333ffc8b1684fb6e07c4c502b0429ee5bb785fb09fb8d775636587", [:mix], [{:ash, ">= 3.24.2 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:bolty, ">= 0.0.12", [hex: :bolty, repo: "hexpm", optional: false]}, {:igniter, ">= 0.6.29 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "76a297eb6d5d23e5d9710b70161ad9810ac50e0efbf761d781981ee19f37af2a"}, "ash_outstanding": {:hex, :ash_outstanding, "0.2.4", "c72b91f1b8e4859fb033eddf66d0ba36cfd8af0c2a9748c7ef9e6ccfdb5d093d", [:mix], [{:ash, ">= 3.6.2 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:outstanding, "~> 0.2.4", [hex: :outstanding, repo: "hexpm", optional: false]}], "hexpm", "64ba8f582ce69c9050352c75f0895db186c7a56f35039dab34c8e1ab7516f9ce"}, "ash_state_machine": {:hex, :ash_state_machine, "0.2.13", "e1c368ebf01ef73477739ee76d53e513d073b141ec11e7bf7f91d8f2d8fc9569", [:mix], [{:ash, ">= 3.4.66 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}], "hexpm", "aa21c92a8950850df69b5205bf41efc1e502f5ab839425ba08561f0421c9f226"}, - "bolty": {:git, "https://github.com/diffo-dev/bolty.git", "cc38e23e94eddc177dd8988bbcf0b489fab3bffe", [branch: "dev"]}, + "bolty": {:hex, :bolty, "0.0.12", "5311de46c29c71000c51cfb23fc181359daa49cedb9c8c4ba1e245f3e54079ae", [:mix], [{:db_connection, "~> 2.7.0", [hex: :db_connection, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:poison, "~> 6.0", [hex: :poison, repo: "hexpm", optional: true]}], "hexpm", "0760661dd2f0ba9f2901448c1be00fc1ed228780644ba21a2400d0662595ee10"}, "crux": {:hex, :crux, "0.1.2", "4441c9e3a34f1e340954ce96b9ad5a2de13ceb4f97b3f910211227bb92e2ca90", [:mix], [{:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:stream_data, "~> 1.0", [hex: :stream_data, repo: "hexpm", optional: true]}], "hexpm", "563ea3748ebfba9cc078e6d198a1d6a06015a8fae503f0b721363139f0ddb350"}, "db_connection": {:hex, :db_connection, "2.7.0", "b99faa9291bb09892c7da373bb82cba59aefa9b36300f6145c5f201c7adf48ec", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dcf08f31b2701f857dfc787fbad78223d61a32204f217f15e881dd93e4bdd3ff"}, "decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"},