paperless-ngx/src-ui/src/app/services/rest/mail-account.service.spec.ts
2024-12-11 11:03:53 -08:00

91 lines
2.6 KiB
TypeScript

import { HttpTestingController } from '@angular/common/http/testing'
import { Subscription } from 'rxjs'
import { TestBed } from '@angular/core/testing'
import { environment } from 'src/environments/environment'
import { commonAbstractPaperlessServiceTests } from './abstract-paperless-service.spec'
import { MailAccountService } from './mail-account.service'
import { IMAPSecurity, MailAccountType } from 'src/app/data/mail-account'
let httpTestingController: HttpTestingController
let service: MailAccountService
let subscription: Subscription
const endpoint = 'mail_accounts'
const mail_accounts = [
{
name: 'Mail Account',
id: 1,
imap_server: 'imap.example.com',
imap_port: 443,
imap_security: IMAPSecurity.SSL,
username: 'user',
password: 'pass',
is_token: false,
account_type: MailAccountType.IMAP,
},
{
name: 'Mail Account 2',
id: 2,
imap_server: 'imap.example.com',
imap_port: 443,
imap_security: IMAPSecurity.SSL,
username: 'user',
password: 'pass',
is_token: false,
account_type: MailAccountType.IMAP,
},
{
name: 'Mail Account 3',
id: 3,
imap_server: 'imap.example.com',
imap_port: 443,
imap_security: IMAPSecurity.SSL,
username: 'user',
password: 'pass',
is_token: false,
account_type: MailAccountType.IMAP,
},
]
// run common tests
commonAbstractPaperlessServiceTests(endpoint, MailAccountService)
describe(`Additional service tests for MailAccountService`, () => {
it('should correct api endpoint on test account', () => {
subscription = service.test(mail_accounts[0]).subscribe()
const req = httpTestingController.expectOne(
`${environment.apiBaseUrl}${endpoint}/test/`
)
expect(req.request.method).toEqual('POST')
})
it('should support reload', () => {
service['reload']()
const req = httpTestingController.expectOne(
`${environment.apiBaseUrl}${endpoint}/?page=1&page_size=100000`
)
expect(req.request.method).toEqual('GET')
req.flush({ results: mail_accounts })
expect(service.allAccounts).toEqual(mail_accounts)
})
it('should support processAccount', () => {
subscription = service.processAccount(mail_accounts[0]).subscribe()
const req = httpTestingController.expectOne(
`${environment.apiBaseUrl}${endpoint}/${mail_accounts[0].id}/process/`
)
expect(req.request.method).toEqual('POST')
})
beforeEach(() => {
// Dont need to setup again
httpTestingController = TestBed.inject(HttpTestingController)
service = TestBed.inject(MailAccountService)
})
afterEach(() => {
subscription?.unsubscribe()
httpTestingController.verify()
})
})