Skip to content

Commit ff76166

Browse files
committed
feat: add more tests and filter out invalid versions more
1 parent 5e8519d commit ff76166

File tree

2 files changed

+78
-1
lines changed

2 files changed

+78
-1
lines changed

src/pilot.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ export function migrate(
4949
(version) => Number.isInteger(version.version) && version.version > 0
5050
)
5151

52+
versions = versions.filter(
53+
(version) =>
54+
version.migration !== undefined &&
55+
Object.keys(version.migration).length > 0
56+
)
57+
5258
versions = versions.sort((a, b) => a.version - b.version)
5359

5460
for (const version of versions) {

tests/pilot.ts

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import test from 'ava'
22

3-
import { MigrateSource, MigrateVersions, migrate } from '../src/pilot.js'
3+
import {
4+
MigrateSource,
5+
MigrateVersion,
6+
MigrateVersions,
7+
migrate,
8+
} from '../src/pilot.js'
49

510
const v3_versions: MigrateVersions = [
611
{
@@ -295,3 +300,69 @@ test('should still have valid migration even with a minimal migration', (t) => {
295300

296301
t.deepEqual(actualResult, v3_expectedResult)
297302
})
303+
304+
test('should filter out invalid versions', (t) => {
305+
const versions: MigrateVersions = [
306+
{
307+
version: 1,
308+
migration: {
309+
user: {
310+
id: 0,
311+
name: '',
312+
},
313+
},
314+
},
315+
{
316+
version: 2,
317+
migration: {
318+
user: {
319+
email: '',
320+
},
321+
},
322+
},
323+
{
324+
version: 3,
325+
migration: {
326+
inventory: {
327+
limit: 100,
328+
items: [],
329+
},
330+
},
331+
},
332+
{
333+
version: 4,
334+
migration: {},
335+
},
336+
{
337+
version: 5.1,
338+
migration: {
339+
user: {
340+
id: 0,
341+
name: '',
342+
},
343+
},
344+
},
345+
{
346+
version: 6,
347+
} as MigrateVersion,
348+
]
349+
350+
const source: MigrateSource = {
351+
__pilot: {
352+
last_migrated: 0,
353+
version: 1,
354+
},
355+
356+
user: {
357+
id: 1,
358+
name: 'Random User',
359+
},
360+
}
361+
362+
const actualResult = migrate(source, versions)
363+
364+
// For the sake of simplicity, we're not testing the last_migrated property
365+
actualResult.__pilot.last_migrated = 0
366+
367+
t.deepEqual(actualResult, v3_expectedResult)
368+
})

0 commit comments

Comments
 (0)