feat: allow ignoring current update prompt
This commit is contained in:
@@ -23,6 +23,9 @@ test('update card highlights exporting config before upgrade', () => {
|
||||
const html = fs.readFileSync('sidepanel/sidepanel.html', 'utf8');
|
||||
const css = fs.readFileSync('sidepanel/sidepanel.css', 'utf8');
|
||||
|
||||
assert.match(html, /id="btn-ignore-release"/);
|
||||
assert.match(html, /class="update-card-actions"/);
|
||||
assert.match(css, /\.update-card-actions\s*\{/);
|
||||
assert.match(html, /<p class="update-card-reminder">一定请先导出配置,再执行更新<\/p>/);
|
||||
assert.match(css, /\.update-card-reminder\s*\{/);
|
||||
assert.match(css, /font-weight:\s*700;/);
|
||||
|
||||
@@ -20,6 +20,9 @@ function createUpdateService(options = {}) {
|
||||
setItem(key, value) {
|
||||
cache.set(key, String(value));
|
||||
},
|
||||
removeItem(key) {
|
||||
cache.delete(key);
|
||||
},
|
||||
};
|
||||
|
||||
if (options.cachedSnapshot) {
|
||||
@@ -180,3 +183,54 @@ test('getReleaseSnapshot reorders cached releases before choosing latest version
|
||||
['Ultra1.1']
|
||||
);
|
||||
});
|
||||
|
||||
test('getReleaseSnapshot suppresses an ignored latest update until a newer release appears', async () => {
|
||||
let releases = [
|
||||
{
|
||||
tag_name: 'Ultra1.1',
|
||||
name: 'Ultra1.1',
|
||||
html_url: 'https://example.com/Ultra1.1',
|
||||
published_at: '2026-04-19T00:00:00.000Z',
|
||||
body: '- current release',
|
||||
draft: false,
|
||||
prerelease: false,
|
||||
},
|
||||
];
|
||||
const { api } = createUpdateService({
|
||||
manifest: {
|
||||
version: '1.0',
|
||||
version_name: 'Ultra1.0',
|
||||
},
|
||||
fetchImpl: async () => ({
|
||||
ok: true,
|
||||
async json() {
|
||||
return releases;
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
const firstSnapshot = await api.getReleaseSnapshot({ force: true });
|
||||
assert.equal(firstSnapshot.status, 'update-available');
|
||||
assert.equal(api.ignoreReleaseSnapshot(firstSnapshot), 'Ultra1.1');
|
||||
|
||||
const ignoredSnapshot = await api.getReleaseSnapshot({ force: true });
|
||||
assert.equal(ignoredSnapshot.status, 'ignored');
|
||||
assert.equal(ignoredSnapshot.ignoredVersion, 'Ultra1.1');
|
||||
|
||||
releases = [
|
||||
{
|
||||
tag_name: 'Ultra1.2',
|
||||
name: 'Ultra1.2',
|
||||
html_url: 'https://example.com/Ultra1.2',
|
||||
published_at: '2026-04-20T00:00:00.000Z',
|
||||
body: '- next release',
|
||||
draft: false,
|
||||
prerelease: false,
|
||||
},
|
||||
...releases,
|
||||
];
|
||||
|
||||
const newerSnapshot = await api.getReleaseSnapshot({ force: true });
|
||||
assert.equal(newerSnapshot.status, 'update-available');
|
||||
assert.equal(newerSnapshot.latestVersion, 'Ultra1.2');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user