meta-grabber/tests/app.test.js
2023-02-25 23:49:41 +01:00

113 lines
3.3 KiB
JavaScript

import regeneratorRuntime from 'regenerator-runtime'
import fs from 'fs/promises'
import ElectronTest from './setupElectronTests'
const timeout = 20000
const electronTest = new ElectronTest({ timeout })
const TEST_FILE_DIR = './tmp'
const NO_OF_FILES = 7
let page
jest.setTimeout(timeout)
beforeAll(async () => {
page = await electronTest.createPage()
await loadDefaultSettings()
await page.reload()
})
afterAll(async () => electronTest.destroyPage())
xdescribe('Home', () => {
test('show initial instructions in snackbar', async () => {
await expectText(
'.message__text',
'Please search for a TV show and open the files you want to rename.'
)
})
test('rename files', async () => {
// create files
await fs.mkdir(TEST_FILE_DIR, { recursive: true })
await createMkvFiles()
// TODO: open files
// choose tv show
await page.type('[data-test-id=input-tv-show]', 'breaking bad')
await page.waitForSelector('.tv-show-input__wrapper > div > div')
await expectText(
'.tv-show-input__wrapper > div > div',
'Breaking Bad (2008)'
)
await page.click('.tv-show-input__wrapper > div > div')
await page.waitForSelector('.file-rename__item__label')
await expectText('.file-rename__item__label', 'SEASON 0')
// TODO: choose season
// TODO: rename files
const files = await fs.readdir(TEST_FILE_DIR)
expect(files).toContain('bb.1x01.mkv')
// expect(files).toContain('S01 E01 - Pilot.mkv')
// expect(files).toContain('S01 E02 - Cats in the bag....mkv')
// expect(files).toContain('S01 E03 - ...And the Bags in the River.mkv')
// expect(files).toContain('S01 E04 - Cancer Man.mkv')
// expect(files).toContain('S01 E05 - Gray Matter.mkv')
// expect(files).toContain('S01 E06 - Crazy Hanful of Nothin.mkv')
// expect(files).toContain('S01 E07 - A No-Rough-Stuff-Type Deal.mkv')
// delete files
await fs.rm(TEST_FILE_DIR, { recursive: true })
})
})
xdescribe('Settings', () => {
test('change ui language', async () => {
await page.click('.settings-button')
await wait(400) // css transition
await expectText('h2', 'Settings')
await page.click('[data-test-id=button-ui-lang-de]')
await expectText('h2', 'Einstellungen')
await page.click('[data-test-id=button-ui-lang-ch]')
await expectText('h2', 'Istellige')
await page.click('[data-test-id=button-ui-lang-en]')
await expectText('h2', 'Settings')
})
})
function wait(ms) {
return new Promise((res) => setTimeout(res, ms))
}
async function loadDefaultSettings() {
await page.evaluate(() => {
localStorage.setItem('uiLang', 'en')
localStorage.setItem('apiProvider', 'tvdb')
// TODO: set rest of localstorge to default values
})
}
async function expectText(selector, expectedText) {
const actualText = await page.$eval(selector, (el) => el.innerText)
expect(actualText).toBe(expectedText)
}
async function createMkvFiles() {
for (let i = 1; i <= NO_OF_FILES; i++) {
await fs.writeFile(`${TEST_FILE_DIR}/bb.1x0${i}.mkv`, '')
}
}
async function createMkvSampleFiles() {
for (let i = 1; i <= NO_OF_FILES; i++) {
await fs.writeFile(`${TEST_FILE_DIR}/bb.1x0${i}-sample.mkv`, '')
}
}
async function expectMkvSampleFiles(actualFiles) {
for (let i = 1; i <= NO_OF_FILES; i++) {
expect(actualFiles).toContain(`bb.1x0${i}-sample.mkv`)
}
}