|
962 | 962 | (is (thrown-with-msg? |
963 | 963 | :default #"Invalid Hiccup form: \[23]" |
964 | 964 | (rstr [23]))) |
965 | | - (is (thrown-with-msg? |
966 | | - :default #"Expected React component in: \[:> \[:div]]" |
967 | | - (rstr [:> [:div]]))) |
| 965 | + ;; This used to be asserted by Reagent, but because it is hard to validate |
| 966 | + ;; components, now we just trust React will validate elements. |
| 967 | + ; (is (thrown-with-msg? |
| 968 | + ; :default #"Expected React component in: \[:> \[:div]]" |
| 969 | + ; (rstr [:> [:div]]))) |
| 970 | + ;; This is from React.createElement |
| 971 | + ;; NOTE: browser-npm uses production cjs bundle for now which only shows |
| 972 | + ;; the minified error |
| 973 | + (debug/track-warnings |
| 974 | + (wrap-capture-console-error |
| 975 | + #(is (thrown-with-msg? |
| 976 | + :default #"(Element type is invalid:|Minified React error)" |
| 977 | + (rstr [:> [:div]]))))) |
968 | 978 | (is (thrown-with-msg? |
969 | 979 | :default #"Invalid tag: 'p.'" |
970 | 980 | (rstr [:p.]))) |
|
1182 | 1192 | [children])])] |
1183 | 1193 | (is (= "<div><div>hello</div><div>world</div><div>foo</div></div>" |
1184 | 1194 | (as-string [comp])))))) |
| 1195 | + |
| 1196 | +(defonce my-context (react/createContext "default")) |
| 1197 | + |
| 1198 | +(def Provider (.-Provider my-context)) |
| 1199 | +(def Consumer (.-Consumer my-context)) |
| 1200 | + |
| 1201 | +(deftest new-context-test |
| 1202 | + (is (= "<div>Context: foo</div>" |
| 1203 | + (rstr (r/create-element |
| 1204 | + Provider #js {:value "foo"} |
| 1205 | + (r/create-element |
| 1206 | + Consumer #js {} |
| 1207 | + (fn [v] |
| 1208 | + (r/as-element [:div "Context: " v]))))))) |
| 1209 | + |
| 1210 | + (testing "context default value works" |
| 1211 | + (is (= "<div>Context: default</div>" |
| 1212 | + (rstr (r/create-element |
| 1213 | + Consumer #js {} |
| 1214 | + (fn [v] |
| 1215 | + (r/as-element [:div "Context: " v]))))))) |
| 1216 | + |
| 1217 | + (testing "context works with adapt-react-class" |
| 1218 | + (let [provider (r/adapt-react-class Provider) |
| 1219 | + consumer (r/adapt-react-class Consumer)] |
| 1220 | + (is (= "<div>Context: bar</div>" |
| 1221 | + (rstr [provider {:value "bar"} |
| 1222 | + [consumer {} |
| 1223 | + (fn [v] |
| 1224 | + (r/as-element [:div "Context: " v]))]]))))) |
| 1225 | + |
| 1226 | + (testing "context works with :>" |
| 1227 | + (is (= "<div>Context: bar</div>" |
| 1228 | + (rstr [:> Provider {:value "bar"} |
| 1229 | + [:> Consumer {} |
| 1230 | + (fn [v] |
| 1231 | + (r/as-element [:div "Context: " v]))]]))))) |
0 commit comments