From 67af5c1d67e8fab439d0f9b14b21164684bb2197 Mon Sep 17 00:00:00 2001 From: jem Date: Tue, 28 May 2019 09:18:11 +0200 Subject: [PATCH] provide multi-file-loading --- main/src/data_test/file_loader.clj | 24 ++++++++++++------- .../data_test/file_loader_test/test_it.1.edn | 2 +- .../data_test/file_loader_test/test_it.9.edn | 1 + .../data_test/file_loader_test/test_it.99.edn | 1 - test/src/data_test/file_loader_test.clj | 12 ++++++++-- 5 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 test/resources/data_test/file_loader_test/test_it.9.edn delete mode 100644 test/resources/data_test/file_loader_test/test_it.99.edn diff --git a/main/src/data_test/file_loader.clj b/main/src/data_test/file_loader.clj index c5ce67b..9cb02ad 100644 --- a/main/src/data_test/file_loader.clj +++ b/main/src/data_test/file_loader.clj @@ -43,15 +43,21 @@ (map #(str prefix "." % ".edn") (range 10))))) -(s/defn load-data-test-specs :- '(TestDataSpec) - [file-prefix :- s/Str] - (let [file-path (str file-prefix ".edn")] - (try - (read-test-data-spec (io/resource file-path)) - (catch IllegalArgumentException e - (throw (ex-info (str "Could not find test spec on " file-path) - {:message "Could not find test spec" - :file-path file-prefix} e)))))) +(s/defn load-data-test-spec + [file-path :- s/Str] + (let [file-resource (io/resource file-path)] + (when file-resource + (read-test-data-spec file-resource)))) + +(s/defn load-data-test-specs :- [TestDataSpec] + [name-key :- s/Keyword] + (let [data-test-specs (filter some? + (map load-data-test-spec (data-test-spec-file-names name-key)))] + (if (empty? data-test-specs) + (throw (ex-info (str "Could not find test spec on " name-key) + {:message "Could not find test spec" + :name-key name-key})) + (into [] data-test-specs)))) (s/defn load-test-data [file-prefix :- s/Str] diff --git a/test/resources/data_test/file_loader_test/test_it.1.edn b/test/resources/data_test/file_loader_test/test_it.1.edn index e85d33d..6351458 100644 --- a/test/resources/data_test/file_loader_test/test_it.1.edn +++ b/test/resources/data_test/file_loader_test/test_it.1.edn @@ -1 +1 @@ -{:test "data"} \ No newline at end of file +{:test "data1"} \ No newline at end of file diff --git a/test/resources/data_test/file_loader_test/test_it.9.edn b/test/resources/data_test/file_loader_test/test_it.9.edn new file mode 100644 index 0000000..dd58eb4 --- /dev/null +++ b/test/resources/data_test/file_loader_test/test_it.9.edn @@ -0,0 +1 @@ +{:test "data9"} \ No newline at end of file diff --git a/test/resources/data_test/file_loader_test/test_it.99.edn b/test/resources/data_test/file_loader_test/test_it.99.edn deleted file mode 100644 index e85d33d..0000000 --- a/test/resources/data_test/file_loader_test/test_it.99.edn +++ /dev/null @@ -1 +0,0 @@ -{:test "data"} \ No newline at end of file diff --git a/test/src/data_test/file_loader_test.clj b/test/src/data_test/file_loader_test.clj index 121ae67..24e7b3d 100644 --- a/test/src/data_test/file_loader_test.clj +++ b/test/src/data_test/file_loader_test.clj @@ -47,8 +47,16 @@ (deftest should-load-data (is (= {:test "data"} - (sut/load-test-data (sut/data-test-spec-file-prefix ::test-it))))) + (sut/load-data-test-spec (str (sut/data-test-spec-file-prefix ::test-it) ".edn"))))) + +(deftest should-not-load-non-existing-data + (is (= nil + (sut/load-data-test-spec (str (sut/data-test-spec-file-prefix ::not-existing) ".edn"))))) + +(deftest should-load-data-test-specs + (is (= [{:test "data"} {:test "data1"} {:test "data9"}] + (sut/load-data-test-specs ::test-it)))) (deftest should-throw-exception (is (thrown? RuntimeException - (sut/load-test-data (sut/data-test-spec-file-prefix ::not-existing))))) + (sut/load-data-test-specs ::not-existing))))