Skip to content

Commit a422b01

Browse files
author
Roman Rudakov
committed
Add unit tests for roles spec
1 parent b4853fb commit a422b01

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

test/education/specs/roles_test.clj

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
(ns education.specs.roles-test
2+
(:require [education.specs.roles :as sut]
3+
[clojure.test :refer [testing deftest is]]
4+
[clojure.spec.alpha :as s]))
5+
6+
(deftest id-test
7+
(doseq [id [23 999999999999999]]
8+
(testing (str "::id valid " id)
9+
(is (s/valid? ::sut/id id))))
10+
11+
(doseq [id ["string" true]]
12+
(testing (str "::id invalid " id)
13+
(is (not (s/valid? ::sut/id id))))))
14+
15+
(deftest name-test
16+
(doseq [name [:admin :moderator :guest]]
17+
(testing (str "::name valid " name)
18+
(is (s/valid? ::sut/name name))))
19+
20+
(doseq [name [:god "admin" true]]
21+
(testing (str "::name invalid " name)
22+
(is (not (s/valid? ::sut/name name))))))
23+
24+
(deftest role-test
25+
(doseq [role [{:id 1 :name :admin}
26+
{:id 2 :name :moderator}
27+
{:id 3 :name :guest}
28+
{:id 4 :name :admin :another {:ignored "field"}}]]
29+
(testing (str "::role valid " role)
30+
(is (s/valid? ::sut/role role))))
31+
32+
(doseq [role [{:id 1 :name "admin"}
33+
{:id "2" :name :moderator}
34+
{:id 3 :name :god}
35+
{:id 4}
36+
{:name :admin}]]
37+
(testing (str "::role invalid " role)
38+
(is (not (s/valid? ::sut/role role))))))
39+
40+
(deftest roles-response-test
41+
(testing "::roles-response valid"
42+
(is (s/valid? ::sut/roles-response
43+
#{{:id 1 :name :admin}
44+
{:id 2 :name :moderator}
45+
{:id 3 :name :guest}})))
46+
47+
(doseq [resp [[{:id 1 :name :admin}
48+
{:id 2 :name :moderator}
49+
{:id 3 :name :guest}]
50+
#{{:id 1}}
51+
#{{:name :admin}}
52+
#{{:id 1 :name "admin"}}
53+
#{{:id "1" :name :moderator}}]]
54+
(testing (str "::roles-response invalid " resp)
55+
(is (not (s/valid? ::sut/roles-response resp))))))

0 commit comments

Comments
 (0)