mirror of
https://github.com/immich-app/immich.git
synced 2025-12-28 01:11:47 +03:00
refactor(server): event emits (#10648)
* refactor(server): event emits * refactor: change default priority to 0
This commit is contained in:
@@ -27,7 +27,7 @@ describe(DatabaseService.name, () => {
|
||||
it('should throw an error if PostgreSQL version is below minimum supported version', async () => {
|
||||
databaseMock.getPostgresVersion.mockResolvedValueOnce('13.10.0');
|
||||
|
||||
await expect(sut.init()).rejects.toThrow('Invalid PostgreSQL version. Found 13.10.0');
|
||||
await expect(sut.onBootstrapEvent()).rejects.toThrow('Invalid PostgreSQL version. Found 13.10.0');
|
||||
|
||||
expect(databaseMock.getPostgresVersion).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
@@ -35,7 +35,7 @@ describe(DatabaseService.name, () => {
|
||||
it(`should start up successfully with pgvectors`, async () => {
|
||||
databaseMock.getPostgresVersion.mockResolvedValue('14.0.0');
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(databaseMock.getPostgresVersion).toHaveBeenCalled();
|
||||
expect(databaseMock.createExtension).toHaveBeenCalledWith(DatabaseExtension.VECTORS);
|
||||
@@ -50,7 +50,7 @@ describe(DatabaseService.name, () => {
|
||||
databaseMock.getPostgresVersion.mockResolvedValue('14.0.0');
|
||||
databaseMock.getExtensionVersion.mockResolvedValue('0.5.0');
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(databaseMock.createExtension).toHaveBeenCalledWith(DatabaseExtension.VECTOR);
|
||||
expect(databaseMock.createExtension).toHaveBeenCalledTimes(1);
|
||||
@@ -60,7 +60,7 @@ describe(DatabaseService.name, () => {
|
||||
|
||||
it(`should throw an error if the pgvecto.rs extension is not installed`, async () => {
|
||||
databaseMock.getExtensionVersion.mockResolvedValue('');
|
||||
await expect(sut.init()).rejects.toThrow(`Unexpected: The pgvecto.rs extension is not installed.`);
|
||||
await expect(sut.onBootstrapEvent()).rejects.toThrow(`Unexpected: The pgvecto.rs extension is not installed.`);
|
||||
|
||||
expect(databaseMock.createExtension).toHaveBeenCalledTimes(1);
|
||||
expect(databaseMock.runMigrations).not.toHaveBeenCalled();
|
||||
@@ -69,7 +69,7 @@ describe(DatabaseService.name, () => {
|
||||
it(`should throw an error if the pgvector extension is not installed`, async () => {
|
||||
process.env.DB_VECTOR_EXTENSION = 'pgvector';
|
||||
databaseMock.getExtensionVersion.mockResolvedValue('');
|
||||
await expect(sut.init()).rejects.toThrow(`Unexpected: The pgvector extension is not installed.`);
|
||||
await expect(sut.onBootstrapEvent()).rejects.toThrow(`Unexpected: The pgvector extension is not installed.`);
|
||||
|
||||
expect(databaseMock.createExtension).toHaveBeenCalledTimes(1);
|
||||
expect(databaseMock.runMigrations).not.toHaveBeenCalled();
|
||||
@@ -78,7 +78,7 @@ describe(DatabaseService.name, () => {
|
||||
it(`should throw an error if the pgvecto.rs extension version is below minimum supported version`, async () => {
|
||||
databaseMock.getExtensionVersion.mockResolvedValue('0.1.0');
|
||||
|
||||
await expect(sut.init()).rejects.toThrow(
|
||||
await expect(sut.onBootstrapEvent()).rejects.toThrow(
|
||||
'The pgvecto.rs extension version is 0.1.0, but Immich only supports 0.2.x.',
|
||||
);
|
||||
|
||||
@@ -89,7 +89,7 @@ describe(DatabaseService.name, () => {
|
||||
process.env.DB_VECTOR_EXTENSION = 'pgvector';
|
||||
databaseMock.getExtensionVersion.mockResolvedValue('0.1.0');
|
||||
|
||||
await expect(sut.init()).rejects.toThrow(
|
||||
await expect(sut.onBootstrapEvent()).rejects.toThrow(
|
||||
'The pgvector extension version is 0.1.0, but Immich only supports >=0.5 <1',
|
||||
);
|
||||
|
||||
@@ -99,7 +99,7 @@ describe(DatabaseService.name, () => {
|
||||
it(`should throw an error if pgvecto.rs extension version is a nightly`, async () => {
|
||||
databaseMock.getExtensionVersion.mockResolvedValue('0.0.0');
|
||||
|
||||
await expect(sut.init()).rejects.toThrow(
|
||||
await expect(sut.onBootstrapEvent()).rejects.toThrow(
|
||||
'The pgvecto.rs extension version is 0.0.0, which means it is a nightly release.',
|
||||
);
|
||||
|
||||
@@ -111,7 +111,7 @@ describe(DatabaseService.name, () => {
|
||||
process.env.DB_VECTOR_EXTENSION = 'pgvector';
|
||||
databaseMock.getExtensionVersion.mockResolvedValue('0.0.0');
|
||||
|
||||
await expect(sut.init()).rejects.toThrow(
|
||||
await expect(sut.onBootstrapEvent()).rejects.toThrow(
|
||||
'The pgvector extension version is 0.0.0, which means it is a nightly release.',
|
||||
);
|
||||
|
||||
@@ -122,7 +122,7 @@ describe(DatabaseService.name, () => {
|
||||
it(`should throw error if pgvecto.rs extension could not be created`, async () => {
|
||||
databaseMock.createExtension.mockRejectedValue(new Error('Failed to create extension'));
|
||||
|
||||
await expect(sut.init()).rejects.toThrow('Failed to create extension');
|
||||
await expect(sut.onBootstrapEvent()).rejects.toThrow('Failed to create extension');
|
||||
|
||||
expect(loggerMock.fatal).toHaveBeenCalledTimes(1);
|
||||
expect(loggerMock.fatal.mock.calls[0][0]).toContain(
|
||||
@@ -137,7 +137,7 @@ describe(DatabaseService.name, () => {
|
||||
databaseMock.getExtensionVersion.mockResolvedValue('0.0.0');
|
||||
databaseMock.createExtension.mockRejectedValue(new Error('Failed to create extension'));
|
||||
|
||||
await expect(sut.init()).rejects.toThrow('Failed to create extension');
|
||||
await expect(sut.onBootstrapEvent()).rejects.toThrow('Failed to create extension');
|
||||
|
||||
expect(loggerMock.fatal).toHaveBeenCalledTimes(1);
|
||||
expect(loggerMock.fatal.mock.calls[0][0]).toContain(
|
||||
@@ -152,7 +152,7 @@ describe(DatabaseService.name, () => {
|
||||
databaseMock.getAvailableExtensionVersion.mockResolvedValue(version);
|
||||
databaseMock.getExtensionVersion.mockResolvedValue(version);
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(databaseMock.updateVectorExtension).toHaveBeenCalledWith('vectors', version);
|
||||
expect(databaseMock.updateVectorExtension).toHaveBeenCalledTimes(1);
|
||||
@@ -168,7 +168,7 @@ describe(DatabaseService.name, () => {
|
||||
databaseMock.getAvailableExtensionVersion.mockResolvedValue(version);
|
||||
databaseMock.getExtensionVersion.mockResolvedValue(version);
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(databaseMock.updateVectorExtension).toHaveBeenCalledWith('vector', version);
|
||||
expect(databaseMock.updateVectorExtension).toHaveBeenCalledTimes(1);
|
||||
@@ -182,7 +182,7 @@ describe(DatabaseService.name, () => {
|
||||
it(`should not upgrade pgvecto.rs to ${version}`, async () => {
|
||||
databaseMock.getAvailableExtensionVersion.mockResolvedValue(version);
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(databaseMock.updateVectorExtension).not.toHaveBeenCalled();
|
||||
expect(databaseMock.runMigrations).toHaveBeenCalledTimes(1);
|
||||
@@ -196,7 +196,7 @@ describe(DatabaseService.name, () => {
|
||||
databaseMock.getExtensionVersion.mockResolvedValue('0.5.0');
|
||||
databaseMock.getAvailableExtensionVersion.mockResolvedValue(version);
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(databaseMock.updateVectorExtension).not.toHaveBeenCalled();
|
||||
expect(databaseMock.runMigrations).toHaveBeenCalledTimes(1);
|
||||
@@ -210,7 +210,7 @@ describe(DatabaseService.name, () => {
|
||||
databaseMock.getAvailableExtensionVersion.mockResolvedValue('0.5.2');
|
||||
databaseMock.updateVectorExtension.mockRejectedValue(new Error('Failed to update extension'));
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(loggerMock.warn.mock.calls[0][0]).toContain('The pgvector extension can be updated to 0.5.2.');
|
||||
expect(loggerMock.error).toHaveBeenCalledTimes(1);
|
||||
@@ -223,7 +223,7 @@ describe(DatabaseService.name, () => {
|
||||
databaseMock.getAvailableExtensionVersion.mockResolvedValue('0.2.1');
|
||||
databaseMock.updateVectorExtension.mockRejectedValue(new Error('Failed to update extension'));
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(loggerMock.warn.mock.calls[0][0]).toContain('The pgvecto.rs extension can be updated to 0.2.1.');
|
||||
expect(loggerMock.error).toHaveBeenCalledTimes(1);
|
||||
@@ -236,7 +236,7 @@ describe(DatabaseService.name, () => {
|
||||
databaseMock.getAvailableExtensionVersion.mockResolvedValue('0.2.1');
|
||||
databaseMock.updateVectorExtension.mockResolvedValue({ restartRequired: true });
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(loggerMock.warn).toHaveBeenCalledTimes(1);
|
||||
expect(loggerMock.warn.mock.calls[0][0]).toContain('pgvecto.rs');
|
||||
@@ -251,7 +251,7 @@ describe(DatabaseService.name, () => {
|
||||
databaseMock.getAvailableExtensionVersion.mockResolvedValue('0.5.1');
|
||||
databaseMock.updateVectorExtension.mockResolvedValue({ restartRequired: true });
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(loggerMock.warn).toHaveBeenCalledTimes(1);
|
||||
expect(loggerMock.warn.mock.calls[0][0]).toContain('pgvector');
|
||||
@@ -263,7 +263,7 @@ describe(DatabaseService.name, () => {
|
||||
it('should reindex if needed', async () => {
|
||||
databaseMock.shouldReindex.mockResolvedValue(true);
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(databaseMock.shouldReindex).toHaveBeenCalledTimes(2);
|
||||
expect(databaseMock.reindex).toHaveBeenCalledTimes(2);
|
||||
@@ -274,7 +274,7 @@ describe(DatabaseService.name, () => {
|
||||
it('should not reindex if not needed', async () => {
|
||||
databaseMock.shouldReindex.mockResolvedValue(false);
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(databaseMock.shouldReindex).toHaveBeenCalledTimes(2);
|
||||
expect(databaseMock.reindex).toHaveBeenCalledTimes(0);
|
||||
@@ -286,7 +286,7 @@ describe(DatabaseService.name, () => {
|
||||
process.env.DB_SKIP_MIGRATIONS = 'true';
|
||||
databaseMock.getExtensionVersion.mockResolvedValue('0.2.0');
|
||||
|
||||
await expect(sut.init()).resolves.toBeUndefined();
|
||||
await expect(sut.onBootstrapEvent()).resolves.toBeUndefined();
|
||||
|
||||
expect(databaseMock.runMigrations).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user