GetRegularSubscriptionForUser.spec.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { UserSubscription } from '../../Subscription/UserSubscription'
  2. import { UserSubscriptionRepositoryInterface } from '../../Subscription/UserSubscriptionRepositoryInterface'
  3. import { UserSubscriptionType } from '../../Subscription/UserSubscriptionType'
  4. import { GetRegularSubscriptionForUser } from './GetRegularSubscriptionForUser'
  5. describe('GetRegularSubscriptionForUser', () => {
  6. let userSubscriptionRepository: UserSubscriptionRepositoryInterface
  7. let regularSubscription: UserSubscription
  8. const createUseCase = () => new GetRegularSubscriptionForUser(userSubscriptionRepository)
  9. beforeEach(() => {
  10. regularSubscription = {
  11. subscriptionType: UserSubscriptionType.Regular,
  12. } as jest.Mocked<UserSubscription>
  13. userSubscriptionRepository = {} as jest.Mocked<UserSubscriptionRepositoryInterface>
  14. userSubscriptionRepository.findOneByUserUuidAndType = jest.fn().mockResolvedValue(regularSubscription)
  15. })
  16. it('returns error when user uuid is invalid', async () => {
  17. const useCase = createUseCase()
  18. const result = await useCase.execute({ userUuid: 'invalid' })
  19. expect(result.isFailed()).toBe(true)
  20. })
  21. it('returns error when user subscription is not found', async () => {
  22. const useCase = createUseCase()
  23. userSubscriptionRepository.findOneByUserUuidAndType = jest.fn().mockResolvedValue(null)
  24. const result = await useCase.execute({ userUuid: '00000000-0000-0000-0000-000000000000' })
  25. expect(result.isFailed()).toBe(true)
  26. })
  27. it('returns regular subscription for user uuid', async () => {
  28. const useCase = createUseCase()
  29. const result = await useCase.execute({ userUuid: '00000000-0000-0000-0000-000000000000' })
  30. expect(result.isFailed()).toBe(false)
  31. expect(result.getValue()).toBe(regularSubscription)
  32. })
  33. it('returns regular subscription for shared subscription id', async () => {
  34. const useCase = createUseCase()
  35. userSubscriptionRepository.findBySubscriptionIdAndType = jest.fn().mockResolvedValue([regularSubscription])
  36. const result = await useCase.execute({ subscriptionId: 1 })
  37. expect(result.isFailed()).toBe(false)
  38. expect(result.getValue()).toBe(regularSubscription)
  39. })
  40. it('returns error if subscription for shared subscription id is not found', async () => {
  41. const useCase = createUseCase()
  42. userSubscriptionRepository.findBySubscriptionIdAndType = jest.fn().mockResolvedValue([])
  43. const result = await useCase.execute({ subscriptionId: 1 })
  44. expect(result.isFailed()).toBe(true)
  45. })
  46. it('returns error if no parameters are specified', async () => {
  47. const useCase = createUseCase()
  48. const result = await useCase.execute({})
  49. expect(result.isFailed()).toBe(true)
  50. })
  51. })