Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

matchqueue.spec.js 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. 'use strict'
  2. const test = require('ava')
  3. const { stub } = require('sinon')
  4. const Hapi = require('@hapi/hapi')
  5. const plugin = require('../lib/plugins/profile')
  6. const MatchQueue = require('../lib/models/matchqueue')
  7. test('path / should return ok on GET', async t => {
  8. /**
  9. * Create a new server and register services,
  10. * models and routes for testing
  11. * -
  12. * NOTE: We use a mocked registerModel() and register
  13. * models manually. Normally this is handled by
  14. * Schwifty at runtime.
  15. */
  16. const server = Hapi.server()
  17. server.registerModel = () => {}
  18. server.models = () => ({ MatchQueue })
  19. await plugin.register(server)
  20. /**
  21. * Route parameters
  22. */
  23. const profile_id = 1
  24. const target_id = 2
  25. const reinsert = true
  26. /**
  27. * Replace Objection model methods with our own custom functions
  28. * !: Kinda janky - might be better to temp knex sqlite instance
  29. */
  30. stub(server.models()['MatchQueue'], 'query').returns({
  31. // Mocked for markAsDeleted()
  32. patch: () => ({
  33. where: () => ({
  34. andWhere: () => ({
  35. first: () => ({ patch: 'bop' }),
  36. }),
  37. }),
  38. }),
  39. insert: queueRecord => {
  40. t.is(queueRecord.profile_id, profile_id)
  41. t.is(queueRecord.target_id, target_id)
  42. t.is(queueRecord.is_deleted, !reinsert)
  43. },
  44. // Mocked for getQueue()
  45. where: () => ({
  46. andWhere: (cmd, val) => {
  47. return [
  48. { mocked_profile_id: 1, is_deleted: val },
  49. { mocked_profile_id: 2, is_deleted: val },
  50. { mocked_profile_id: 3, is_deleted: val },
  51. ]
  52. },
  53. }),
  54. })
  55. /**
  56. * Test the server with registered models and services
  57. */
  58. const { payload } = await server.inject({
  59. method: 'PATCH',
  60. url: `/${profile_id}/queue/${target_id}/delete?reinsert=${reinsert}`,
  61. })
  62. const res = JSON.parse(payload)
  63. t.deepEqual(res, [
  64. { mocked_profile_id: 1, is_deleted: false },
  65. { mocked_profile_id: 2, is_deleted: false },
  66. { mocked_profile_id: 3, is_deleted: false },
  67. ])
  68. })