date.test.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import * as assert from 'power-assert'
  2. import * as Mock from './mock'
  3. import tcb from '../../../src/index'
  4. import * as Config from '../../config.local'
  5. import * as common from '../../common/index'
  6. import * as util from 'util'
  7. // import { process } from "ts-jest/dist/preprocessor";
  8. // import { __exportStar } from "tslib";
  9. describe('Date类型', () => {
  10. const config = {
  11. ...Config,
  12. env: Mock.env,
  13. mpAppId: Mock.appId,
  14. sessionToken: undefined
  15. }
  16. const app = tcb.init(config)
  17. const db = app.database()
  18. const collName = 'db-test-date'
  19. const _ = db.command
  20. const collection = db.collection(collName)
  21. // const nameList = ["f", "b", "e", "d", "a", "c"];
  22. const date = new Date()
  23. const offset = 60 * 1000
  24. // const timestamp = Math.floor(+new Date() / 1000)
  25. const initialData = {
  26. name: 'test',
  27. date,
  28. serverDate1: new db.serverDate(),
  29. serverDate2: db.serverDate({ offset }),
  30. innerServerDate: [db.serverDate({ offset })],
  31. emptyArray: [],
  32. emptyObject: {},
  33. // timestamp: {
  34. // $timestamp: timestamp
  35. // }
  36. foo: {
  37. bar: db.serverDate({ offset })
  38. }
  39. }
  40. beforeAll(async () => {
  41. await common.safeCollection(db, collName)
  42. })
  43. afterAll(async () => {
  44. await db
  45. .collection(collName)
  46. .where({
  47. _id: /.*/
  48. })
  49. .remove()
  50. })
  51. it('验证 long 值offset', async () => {
  52. const offset = 31536000000 // 1年的毫秒数
  53. const currYear = new Date().getFullYear()
  54. const res = await collection.add({
  55. name: 'longOffsetTest',
  56. serverDate1: db.serverDate({ offset })
  57. })
  58. const queryRes = await collection.where({ _id: res.id }).get()
  59. const newYear = queryRes.data[0].serverDate1.getFullYear()
  60. // console.log(queryRes.data[0].serverDate1)
  61. // console.log('res:', res)
  62. assert(newYear - currYear === 1)
  63. })
  64. it('Document - CRUD', async () => {
  65. // Create
  66. const res = await collection.add(initialData)
  67. // const id = res.ids[0]
  68. const id = res.id
  69. assert(id)
  70. assert(res.requestId)
  71. // // Read
  72. // const { id } = res
  73. let result = await collection
  74. .where({
  75. _id: id
  76. })
  77. .get()
  78. assert.strictEqual(result.data[0].date.getTime(), date.getTime())
  79. assert(util.isDate(result.data[0].foo.bar))
  80. assert.strictEqual(assert.strictEqual(result.data[0].serverDate1.getDate(), date.getDate()))
  81. assert.strictEqual(
  82. result.data[0].serverDate1.getTime() + offset,
  83. result.data[0].serverDate2.getTime()
  84. )
  85. // assert.strictEqual(result.data[0].timestamp.getTime(), timestamp * 1000)
  86. assert.deepStrictEqual(result.data[0].emptyArray, [])
  87. assert.deepStrictEqual(result.data[0].emptyObject, {})
  88. result = await collection
  89. .where({
  90. date: db.command.eq(date)
  91. })
  92. .get()
  93. assert.strictEqual(result.data[0].date.getTime(), date.getTime())
  94. result = await collection
  95. .where({
  96. date: db.command.lte(date)
  97. })
  98. .get()
  99. assert(result.data.length > 0)
  100. result = await collection
  101. .where({
  102. date: db.command.lte(date).and(db.command.gte(date))
  103. })
  104. .get()
  105. assert(result.data.length > 0)
  106. // Update
  107. const newDate = new Date()
  108. const newServerDate = new db.serverDate({ offset: 1000 * 60 * 60 }) // offset一小时
  109. result = await collection
  110. .where({
  111. date: db.command.lte(date).and(db.command.gte(date))
  112. })
  113. .update({
  114. date: newDate,
  115. serverDate2: newServerDate,
  116. innerServerDate: _.push(db.serverDate({ offset }))
  117. })
  118. assert.strictEqual(result.updated, 1)
  119. result = await collection
  120. .where({
  121. _id: id
  122. })
  123. .get()
  124. assert.strictEqual(result.data[0].date.getTime(), newDate.getTime())
  125. assert(
  126. result.data[0].serverDate2.getTime() - result.data[0].serverDate1.getTime() >
  127. 1000 * 60 * 60
  128. )
  129. // Delete
  130. const deleteRes = await collection.doc(id).remove()
  131. // const deleteRes = await collection.where({ name: 'test' }).remove()
  132. assert.strictEqual(deleteRes.deleted, 1)
  133. })
  134. })