1 | import test from 'ava'
|
2 | import Chance from '../chance.js'
|
3 | import _ from 'lodash'
|
4 |
|
5 | const chance = new Chance()
|
6 |
|
7 |
|
8 | test('ampm() returns am or pm', t => {
|
9 | _.times(1000, () => {
|
10 | let ampm = chance.ampm()
|
11 | t.true(_.isString(ampm))
|
12 | t.true(/^([ap]m)$/m.test(ampm))
|
13 | })
|
14 | })
|
15 |
|
16 |
|
17 | test('date() returns a random date', t => {
|
18 | _.times(1000, () => {
|
19 | let date = chance.date()
|
20 | t.true(_.isDate(date))
|
21 | t.truthy(date.getTime())
|
22 | })
|
23 | })
|
24 |
|
25 | test('date() accepts an american option', t => {
|
26 | _.times(1000, () => {
|
27 | let date = chance.date({ american: chance.bool() })
|
28 | t.true(_.isDate(date))
|
29 | t.truthy(date.getTime())
|
30 | })
|
31 | })
|
32 |
|
33 | test('date() can have some default provided and obey them', t => {
|
34 | _.times(1000, () => {
|
35 |
|
36 | let month = [0, 1, 3][Math.floor(Math.random() * 3)]
|
37 |
|
38 | let date = chance.date({ year: 1983 })
|
39 | t.true(_.isDate(date))
|
40 | t.is(date.getFullYear(), 1983)
|
41 |
|
42 | date = chance.date({ month: month })
|
43 | t.true(_.isDate(date))
|
44 | t.is(date.getMonth(), month)
|
45 |
|
46 | date = chance.date({ day: 21 })
|
47 | t.true(_.isDate(date))
|
48 | t.is(date.getDate(), 21)
|
49 | })
|
50 | })
|
51 |
|
52 | test('date() can specify min and max', t => {
|
53 | _.times(1000, () => {
|
54 | let bounds = {
|
55 | min: new Date(),
|
56 | max: new Date(new Date().getTime() + 1234567890123),
|
57 | }
|
58 | let date = chance.date(bounds)
|
59 | t.true(_.isDate(date))
|
60 | t.true(date >= bounds.min)
|
61 | t.true(date <= bounds.max)
|
62 | })
|
63 | })
|
64 |
|
65 | test('date() returns a date, can specify just min', t => {
|
66 | _.times(1000, () => {
|
67 | let bounds = { min: new Date() }
|
68 | let date = chance.date(bounds)
|
69 | t.true(_.isDate(date))
|
70 | t.true(date >= bounds.min)
|
71 | })
|
72 | })
|
73 |
|
74 | test('date() returns a date, can specify just max', t => {
|
75 | _.times(1000, () => {
|
76 | let bounds = { max: new Date() }
|
77 | let date = chance.date(bounds)
|
78 | t.true(_.isDate(date))
|
79 | t.true(date <= bounds.max)
|
80 | })
|
81 | })
|
82 |
|
83 | test('date() can return a string date', t => {
|
84 | _.times(1000, () => {
|
85 | let date = chance.date({ string: true })
|
86 | t.true(_.isString(date))
|
87 | t.true(/^[0-9][0-9]?\/[0-9][0-9]?\/[0-9]{4}/m.test(date))
|
88 | })
|
89 | })
|
90 |
|
91 |
|
92 | test('hammertime() works', t => {
|
93 | _.times(1000, () => {
|
94 | let hammertime = chance.hammertime()
|
95 | t.true(_.isNumber(hammertime))
|
96 | t.true(hammertime > 0)
|
97 | t.true(hammertime < 8640000000000000)
|
98 | })
|
99 | })
|
100 |
|
101 |
|
102 | test('hour() returns an hour', t => {
|
103 | _.times(1000, () => {
|
104 | let hour = chance.hour()
|
105 | t.true(_.isNumber(hour))
|
106 | t.true(hour >= 1)
|
107 | t.true(hour <= 12)
|
108 | })
|
109 | })
|
110 |
|
111 | test('hour() returns an hour in 24 hour format', t => {
|
112 | _.times(1000, () => {
|
113 | let hour = chance.hour({ twentyfour: true })
|
114 | t.true(_.isNumber(hour))
|
115 | t.true(hour >= 0)
|
116 | t.true(hour <= 23)
|
117 | })
|
118 | })
|
119 |
|
120 | test('hour() returns an hour, can specify min and max', t => {
|
121 | _.times(1000, () => {
|
122 | let hour = chance.hour({ min: 7, max: 10 })
|
123 | t.true(_.isNumber(hour))
|
124 | t.true(hour >= 7)
|
125 | t.true(hour <= 10)
|
126 | })
|
127 | })
|
128 |
|
129 | test('hour() returns an hour, can specify just min', t => {
|
130 | _.times(1000, () => {
|
131 | let hour = chance.hour({ min: 7 })
|
132 | t.true(_.isNumber(hour))
|
133 | t.true(hour >= 7)
|
134 | t.true(hour <= 12)
|
135 | })
|
136 | })
|
137 |
|
138 | test('hour() returns an hour, can specify just max', t => {
|
139 | _.times(1000, () => {
|
140 | let hour = chance.hour({ max: 10 })
|
141 | t.true(_.isNumber(hour))
|
142 | t.true(hour >= 1)
|
143 | t.true(hour <= 10)
|
144 | })
|
145 | })
|
146 |
|
147 |
|
148 | test('minute() returns a minute', t => {
|
149 | _.times(1000, () => {
|
150 | let minute = chance.minute()
|
151 | t.true(_.isNumber(minute))
|
152 | t.true(minute >= 0)
|
153 | t.true(minute <= 59)
|
154 | })
|
155 | })
|
156 |
|
157 | test('minute() returns an minute, can specify min and max', t => {
|
158 | _.times(1000, () => {
|
159 | let minute = chance.minute({ min: 18, max: 35 })
|
160 | t.true(_.isNumber(minute))
|
161 | t.true(minute >= 18)
|
162 | t.true(minute <= 35)
|
163 | })
|
164 | })
|
165 |
|
166 | test('minute() returns an minute, can specify just min', t => {
|
167 | _.times(1000, () => {
|
168 | let minute = chance.minute({ min: 5 })
|
169 | t.true(_.isNumber(minute))
|
170 | t.true(minute >= 5)
|
171 | t.true(minute <= 59)
|
172 | })
|
173 | })
|
174 |
|
175 | test('minute() returns an minute, can specify just max', t => {
|
176 | _.times(1000, () => {
|
177 | let minute = chance.minute({ max: 32 })
|
178 | t.true(_.isNumber(minute))
|
179 | t.true(minute >= 0)
|
180 | t.true(minute <= 32)
|
181 | })
|
182 | })
|
183 |
|
184 | test('month() returns a month', t => {
|
185 | _.times(1000, () => {
|
186 | let month = chance.month()
|
187 | t.true(_.isString(month))
|
188 | })
|
189 | })
|
190 |
|
191 | test('month() will return a raw month', t => {
|
192 | _.times(1000, () => {
|
193 | let month = chance.month({ raw: true })
|
194 | t.false(_.isString(month))
|
195 | t.true(_.isObject(month))
|
196 | })
|
197 | })
|
198 |
|
199 | test('month() returns a month, can specify min and max', t => {
|
200 | _.times(1000, () => {
|
201 | let month = chance.month({raw: true, min: 5, max: 10})
|
202 | t.false(_.isString(month))
|
203 | t.true(month.numeric >= 5)
|
204 | t.true(month.numeric <= 10)
|
205 | })
|
206 | })
|
207 |
|
208 | test('month() returns a month, can specify just min', t => {
|
209 | _.times(1000, () => {
|
210 | let month = chance.month({raw: true, min: 5})
|
211 | t.false(_.isString(month))
|
212 | t.true(month.numeric >= 5)
|
213 | t.true(month.numeric <= 12)
|
214 | })
|
215 | })
|
216 |
|
217 | test('month() returns a month, can specify just max', t => {
|
218 | _.times(1000, () => {
|
219 | let month = chance.month({raw: true, max: 7})
|
220 | t.false(_.isString(month))
|
221 | t.true(month.numeric >= 1)
|
222 | t.true(month.numeric <= 7)
|
223 | })
|
224 | })
|
225 |
|
226 |
|
227 | test('timestamp() returns a timestamp', t => {
|
228 | _.times(1000, () => {
|
229 | let timestamp = chance.timestamp()
|
230 | t.true(_.isNumber(timestamp))
|
231 | t.true(timestamp > 0)
|
232 | t.true(timestamp <= parseInt(new Date().getTime() / 1000, 10))
|
233 | })
|
234 | })
|
235 |
|
236 |
|
237 | test('timezone() returns a timezone', t => {
|
238 | _.times(1000, () => {
|
239 | let timezone = chance.timezone()
|
240 | t.true(_.isString(timezone.name))
|
241 | t.true(timezone.abbr.length < 6)
|
242 | t.true(_.isNumber(timezone.offset))
|
243 | t.true(_.isArray(timezone.utc))
|
244 | })
|
245 | })
|
246 |
|
247 |
|
248 | test('weekday() will return a weekday as a string', t => {
|
249 | _.times(1000, () => {
|
250 | let weekday = chance.weekday()
|
251 | t.true(_.isString(weekday))
|
252 | })
|
253 | })
|
254 |
|
255 | test('weekday() can take work: true and obey it', t => {
|
256 | _.times(1000, () => {
|
257 | let weekday = chance.weekday({ weekday_only: true })
|
258 | t.true(_.isString(weekday))
|
259 | t.not(weekday, 'Saturday')
|
260 | t.not(weekday, 'Sunday')
|
261 | })
|
262 | })
|
263 |
|
264 |
|
265 | test('year() returns a year, default between today and a century after', t => {
|
266 | _.times(1000, () => {
|
267 | let year = chance.year()
|
268 | t.true(_.isString(year))
|
269 | t.true(year >= new Date().getFullYear())
|
270 | t.true(year <= new Date().getFullYear() + 100)
|
271 | })
|
272 | })
|
273 |
|
274 | test('year() returns a year, can specify min and max', t => {
|
275 | _.times(1000, () => {
|
276 | let year = chance.year({ min: 2500, max: 2600 })
|
277 | t.true(_.isString(year))
|
278 | t.true(year >= 2500)
|
279 | t.true(year <= 2600)
|
280 | })
|
281 | })
|
282 |
|
283 | test('year() returns a year, can specify just min', t => {
|
284 | _.times(1000, () => {
|
285 | let year = chance.year({ min: 2500 })
|
286 | t.true(_.isString(year))
|
287 | t.true(year >= 2500)
|
288 | })
|
289 | })
|
290 |
|
291 | test('year() returns a year, can specify just max', t => {
|
292 | _.times(1000, () => {
|
293 | let year = chance.year({ max: 2500 })
|
294 | t.true(_.isString(year))
|
295 | t.true(year <= 2501)
|
296 |
|
297 |
|
298 | t.true(year >= 0)
|
299 | })
|
300 | })
|