Web API for Oblique Strategies.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.2 KiB

  1. import {
  2. describe,
  3. it,
  4. expect,
  5. beforeAll,
  6. vi,
  7. } from 'vitest';
  8. import { FastifyInstance } from 'fastify';
  9. import { generate } from '@theoryofnekomata/oblique-strategies-core';
  10. import { createServer } from '../src/server';
  11. import { addRoutes } from '../src/routes';
  12. vi.mock('@theoryofnekomata/oblique-strategies-core');
  13. describe('Example', () => {
  14. let server: FastifyInstance;
  15. beforeAll(() => {
  16. server = createServer();
  17. addRoutes(server);
  18. });
  19. beforeAll(() => {
  20. vi.mocked(generate).mockReturnValue('card text');
  21. });
  22. it('draws a card from default set', async () => {
  23. const response = await server
  24. .inject()
  25. .post('/')
  26. .headers({
  27. Accept: 'text/plain',
  28. });
  29. expect(response.statusCode).toBe(200);
  30. expect(generate).toBeCalled();
  31. expect(response.body).toBe('card text');
  32. });
  33. it('draws a card from custom sets', async () => {
  34. const response = await server
  35. .inject()
  36. .post('/')
  37. .query({
  38. cards: ['default', 'text:hello|world'],
  39. })
  40. .headers({
  41. Accept: 'text/plain',
  42. });
  43. expect(response.statusCode).toBe(200);
  44. expect(generate).toBeCalledWith(['default', 'text:hello|world']);
  45. expect(response.body).toBe('card text');
  46. });
  47. });