test.mock.valid.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. /* global require, chai, describe, before, it */
  2. /* global window */
  3. var expect = chai.expect
  4. var Mock, Random, $, _
  5. describe('Mock.valid', function() {
  6. before(function(done) {
  7. require(['mock', 'underscore', 'jquery'], function() {
  8. Mock = arguments[0]
  9. window.Random = Random = Mock.Random
  10. _ = arguments[1]
  11. $ = arguments[2]
  12. expect(Mock).to.not.equal(undefined)
  13. expect(_).to.not.equal(undefined)
  14. expect($).to.not.equal(undefined)
  15. done()
  16. })
  17. })
  18. function stringify(json) {
  19. return JSON.stringify(json /*, null, 4*/ )
  20. }
  21. function title(tpl, data, result, test) {
  22. test.title = stringify(tpl) + ' VS ' + stringify(data) + '\n\tresult: ' + stringify(result)
  23. // if (result.length) test.title += '\n\tresult: '
  24. // for (var i = 0; i < result.length; i++) {
  25. // test.title += '\n\t' + result[i].message // stringify(result)
  26. // }
  27. }
  28. function doit(tpl, data, len) {
  29. it('', function() {
  30. var result = Mock.valid(tpl, data)
  31. title(tpl, data, result, this.test)
  32. expect(result).to.be.an('array').with.length(len)
  33. })
  34. }
  35. describe('Name', function() {
  36. doit({
  37. name: 1
  38. }, {
  39. name: 1
  40. }, 0)
  41. doit({
  42. name1: 1
  43. }, {
  44. name2: 1
  45. }, 1)
  46. })
  47. describe('Value - Number', function() {
  48. doit({
  49. name: 1
  50. }, {
  51. name: 1
  52. }, 0)
  53. doit({
  54. name: 1
  55. }, {
  56. name: 2
  57. }, 1)
  58. doit({
  59. name: 1.1
  60. }, {
  61. name: 2.2
  62. }, 1)
  63. doit({
  64. 'name|1-10': 1
  65. }, {
  66. name: 5
  67. }, 0)
  68. doit({
  69. 'name|1-10': 1
  70. }, {
  71. name: 0
  72. }, 1)
  73. doit({
  74. 'name|1-10': 1
  75. }, {
  76. name: 11
  77. }, 1)
  78. })
  79. describe('Value - String', function() {
  80. doit({
  81. name: 'value'
  82. }, {
  83. name: 'value'
  84. }, 0)
  85. doit({
  86. name: 'value1'
  87. }, {
  88. name: 'value2'
  89. }, 1)
  90. doit({
  91. 'name|1': 'value'
  92. }, {
  93. name: 'value'
  94. }, 0)
  95. doit({
  96. 'name|2': 'value'
  97. }, {
  98. name: 'valuevalue'
  99. }, 0)
  100. doit({
  101. 'name|2': 'value'
  102. }, {
  103. name: 'value'
  104. }, 1)
  105. doit({
  106. 'name|2-3': 'value'
  107. }, {
  108. name: 'value'
  109. }, 1)
  110. doit({
  111. 'name|2-3': 'value'
  112. }, {
  113. name: 'valuevaluevaluevalue'
  114. }, 1)
  115. })
  116. describe('Value - RgeExp', function() {
  117. doit({
  118. name: /value/
  119. }, {
  120. name: 'value'
  121. }, 0)
  122. doit({
  123. name: /value/
  124. }, {
  125. name: 'vvvvv'
  126. }, 1)
  127. doit({
  128. 'name|1-10': /value/
  129. }, {
  130. name: 'valuevaluevaluevaluevalue'
  131. }, 0)
  132. doit({
  133. 'name|1-10': /value/
  134. }, {
  135. name: 'vvvvvvvvvvvvvvvvvvvvvvvvv'
  136. }, 1)
  137. doit({
  138. 'name|1-10': /^value$/
  139. }, {
  140. name: 'valuevaluevaluevaluevalue'
  141. }, 0)
  142. doit({
  143. name: /[a-z][A-Z][0-9]/
  144. }, {
  145. name: 'yL5'
  146. }, 0)
  147. })
  148. describe('Value - Object', function() {
  149. doit({
  150. name: 1
  151. }, {
  152. name: 1
  153. }, 0)
  154. doit({
  155. name1: 1
  156. }, {
  157. name2: 2
  158. }, 1)
  159. doit({
  160. name1: 1,
  161. name2: 2
  162. }, {
  163. name3: 3
  164. }, 1)
  165. doit({
  166. name1: 1,
  167. name2: 2
  168. }, {
  169. name1: '1',
  170. name2: '2'
  171. }, 2)
  172. doit({
  173. a: {
  174. b: {
  175. c: {
  176. d: 1
  177. }
  178. }
  179. }
  180. }, {
  181. a: {
  182. b: {
  183. c: {
  184. d: 2
  185. }
  186. }
  187. }
  188. }, 1)
  189. })
  190. describe('Value - Array', function() {
  191. doit([1, 2, 3], [1, 2, 3], 0)
  192. doit([1, 2, 3], [1, 2, 3, 4], 1)
  193. // 'name|1': array
  194. doit({
  195. 'name|1': [1, 2, 3]
  196. }, {
  197. 'name': 1
  198. }, 0)
  199. doit({
  200. 'name|1': [1, 2, 3]
  201. }, {
  202. 'name': 2
  203. }, 0)
  204. doit({
  205. 'name|1': [1, 2, 3]
  206. }, {
  207. 'name': 3
  208. }, 0)
  209. doit({ // 不检测
  210. 'name|1': [1, 2, 3]
  211. }, {
  212. 'name': 4
  213. }, 0)
  214. // 'name|+1': array
  215. doit({
  216. 'name|+1': [1, 2, 3]
  217. }, {
  218. 'name': 1
  219. }, 0)
  220. doit({
  221. 'name|+1': [1, 2, 3]
  222. }, {
  223. 'name': 2
  224. }, 0)
  225. doit({
  226. 'name|+1': [1, 2, 3]
  227. }, {
  228. 'name': 3
  229. }, 0)
  230. doit({
  231. 'name|+1': [1, 2, 3]
  232. }, {
  233. 'name': 4
  234. }, 0)
  235. // 'name|min-max': array
  236. doit({
  237. 'name|2-3': [1]
  238. }, {
  239. 'name': [1, 2, 3, 4]
  240. }, 1)
  241. doit({
  242. 'name|2-3': [1]
  243. }, {
  244. 'name': [1]
  245. }, 1)
  246. doit({
  247. 'name|2-3': [1, 2, 3]
  248. }, {
  249. 'name': [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
  250. }, 1)
  251. doit({
  252. 'name|2-3': [1, 2, 3]
  253. }, {
  254. 'name': [1, 2, 3]
  255. }, 1)
  256. doit({
  257. 'name|2-3': [1]
  258. }, {
  259. 'name': [1, 1, 1]
  260. }, 0)
  261. doit({
  262. 'name|2-3': [1]
  263. }, {
  264. 'name': [1, 2, 3]
  265. }, 2)
  266. // 'name|count': array
  267. })
  268. describe('Value - Placeholder', function() {
  269. doit({
  270. name: '@email'
  271. }, {
  272. name: 'nuysoft@gmail.com'
  273. }, 0)
  274. doit({
  275. name: '@int'
  276. }, {
  277. name: 123
  278. }, 0)
  279. })
  280. })