Skip to content

Commit c94ea9c

Browse files
authored
[Enhancement]: Provide Wine-ge/Proton-ge latest version via wine manager (#2513)
* Cleanup test and add latest version * Fix test * Fix test (2) * Small fix
1 parent fd5dcba commit c94ea9c

File tree

11 files changed

+340
-455
lines changed

11 files changed

+340
-455
lines changed

src/backend/wiki_game_info/gamesdb/__tests__/utils.test.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,18 @@ describe('getInfoFromGamesDB', () => {
2828
})
2929

3030
test('catches axios throws', async () => {
31-
jest.spyOn(axios, 'get').mockRejectedValueOnce(new Error('Failed'))
31+
jest.spyOn(axios, 'get').mockRejectedValueOnce({
32+
response: {
33+
data: {
34+
error_description: 'Failed'
35+
}
36+
}
37+
})
3238

3339
const result = await getInfoFromGamesDB('Jotun', 'Grouse', 'legendary')
3440
expect(result).toStrictEqual({ steamID: '' })
3541
expect(logError).toBeCalledWith(
36-
['Was not able to get GamesDB data for Grouse'],
42+
['Was not able to get GamesDB data for Grouse', 'Failed'],
3743
'ExtraGameInfo'
3844
)
3945
})

src/backend/wiki_game_info/gamesdb/utils.ts

+12-7
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,18 @@ async function getGamesdbData(
4545
}
4646
: undefined
4747

48-
const response = await axios.get(url, { headers: headers }).catch(() => {
49-
logError(
50-
[`Was not able to get GamesDB data for ${game_id}`],
51-
LogPrefix.ExtraGameInfo
52-
)
53-
return null
54-
})
48+
const response = await axios
49+
.get(url, { headers: headers })
50+
.catch((error) => {
51+
logError(
52+
[
53+
`Was not able to get GamesDB data for ${game_id}`,
54+
error.response.data.error_description
55+
],
56+
LogPrefix.ExtraGameInfo
57+
)
58+
return null
59+
})
5560
if (!response) {
5661
return { isUpdated: false }
5762
}

src/backend/wine/manager/downloader/__tests__/main/getter.test.ts

+29-35
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,25 @@ import { Repositorys, VersionInfo } from 'common/types'
22
import { getAvailableVersions } from '../../main'
33
import { test_data_release_list } from '../test_data/github-api-test-data.json'
44
import * as axios from 'axios'
5+
import { logError, logWarning } from 'backend/logger/logger'
56

67
jest.mock('backend/logger/logger')
8+
jest.mock('backend/logger/logfile')
79

810
describe('Main - GetAvailableVersions', () => {
911
test('fetch releases succesfully', async () => {
1012
axios.default.get = jest.fn().mockResolvedValue(test_data_release_list)
1113

12-
await getAvailableVersions({})
13-
.then((releases: VersionInfo[]) => {
14-
expect(releases).not.toBe([])
15-
expect(releases.length).toBeGreaterThan(0)
16-
expect(releases[2].version).toContain('6.16-GE-1')
17-
})
18-
.catch(() => {
19-
throw Error('No error should be thrown!')
20-
})
14+
await getAvailableVersions({}).then((releases: VersionInfo[]) => {
15+
expect(releases).not.toBe([])
16+
expect(releases.length).toBeGreaterThan(0)
17+
expect(releases[3].version).toContain('6.16-GE-1')
18+
})
2119

2220
expect(axios.default.get).toBeCalledWith(
2321
'https://api.github.com/repos/GloriousEggroll/wine-ge-custom/releases?per_page=100'
2422
)
23+
expect(logError).not.toBeCalled()
2524
})
2625

2726
test('fetch releases succesfully independent', async () => {
@@ -30,56 +29,51 @@ describe('Main - GetAvailableVersions', () => {
3029
for (let key = 0; key < Object.keys(Repositorys).length / 2; key++) {
3130
await getAvailableVersions({
3231
repositorys: [key]
32+
}).then((releases: VersionInfo[]) => {
33+
expect(releases).not.toBe([])
34+
expect(releases.length).toBeGreaterThan(0)
35+
expect(releases[3].version).toContain('6.16-GE-1')
3336
})
34-
.then((releases: VersionInfo[]) => {
35-
expect(releases).not.toBe([])
36-
expect(releases.length).toBeGreaterThan(0)
37-
expect(releases[2].version).toContain('6.16-GE-1')
38-
})
39-
.catch(() => {
40-
throw Error('No error should be thrown!')
41-
})
4237

4338
expect(axios.default.get).toBeCalledWith(
4439
'https://api.github.com/repos/GloriousEggroll/wine-ge-custom/releases?per_page=100'
4540
)
41+
expect(logError).not.toBeCalled()
4642
}
4743
})
4844

4945
test('fetch releases failed because of 404', async () => {
5046
axios.default.get = jest.fn().mockRejectedValue('Could not fetch tag 404')
5147

5248
for (let key = 0; key < Object.keys(Repositorys).length / 2; key++) {
53-
await getAvailableVersions({ repositorys: [key] })
54-
.then(() => {
55-
throw Error("Function shouldn't success!")
56-
})
57-
.catch((error: Error) => {
58-
expect(error.message).toContain('Could not fetch tag 404')
59-
})
49+
await expect(
50+
getAvailableVersions({ repositorys: [key] })
51+
).resolves.toStrictEqual([])
6052

6153
expect(axios.default.get).toBeCalledWith(
6254
expect.stringContaining('https://api.github.com/repos/')
6355
)
56+
expect(logError).toBeCalledWith(
57+
Error(
58+
'Could not fetch available releases from https://api.github.com/repos/GloriousEggroll/wine-ge-custom/releases with error:\n ' +
59+
'Could not fetch tag 404'
60+
),
61+
'WineDownloader'
62+
)
6463
}
6564
})
6665

6766
test('Invalid repository key returns nothing', async () => {
6867
axios.default.get = jest.fn()
69-
console.warn = jest.fn()
7068

71-
await getAvailableVersions({ repositorys: [-1] })
72-
.then((releases: VersionInfo[]) => {
73-
expect(releases).toStrictEqual([])
74-
expect(releases.length).toBe(0)
75-
})
76-
.catch(() => {
77-
throw Error('No error should be thrown!')
78-
})
69+
await expect(
70+
getAvailableVersions({ repositorys: [-1] })
71+
).resolves.toStrictEqual([])
7972

8073
expect(axios.default.get).not.toBeCalled()
81-
expect(console.warn).toBeCalledWith(
82-
'Unknown and not supported repository key passed! Skip fetch for -1'
74+
expect(logWarning).toBeCalledWith(
75+
'Unknown and not supported repository key passed! Skip fetch for -1',
76+
'WineDownloader'
8377
)
8478
})
8579
})

0 commit comments

Comments
 (0)