Skip to content

Commit

Permalink
Further fix for #704
Browse files Browse the repository at this point in the history
  • Loading branch information
digimezzo committed Oct 13, 2024
1 parent bb4e4e1 commit 2831295
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 6 deletions.
32 changes: 31 additions & 1 deletion src/app/services/artist/artist.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ describe('ArtistService', () => {
function createService(): ArtistService {
artistSplitter = new ArtistSplitter(translatorServiceMock.object, settingsMock);

return new ArtistService(artistSplitter, trackRepositoryMock.object, loggerMock.object);
return new ArtistService(artistSplitter, trackRepositoryMock.object, settingsMock, loggerMock.object);
}

function createArtistModel(artist: string): ArtistModel {
Expand Down Expand Up @@ -216,6 +216,12 @@ describe('ArtistService', () => {
new ArtistData(';;'),
new ArtistData(';Drift;'),
new ArtistData(';Driftwood;'),
new ArtistData(';Ida;'),
new ArtistData(';Suicidal Tendencies;'),
new ArtistData(';blink-182;'),
new ArtistData(';Link;'),
new ArtistData(';Mid Carson July;'),
new ArtistData(';July;'),
];

settingsMock.artistSplitSeparators = '[ft.][feat.][&][|]';
Expand All @@ -237,6 +243,12 @@ describe('ArtistService', () => {
const sourceArtists8: string[] = service.getSourceArtists([createArtistModel('Artist6 | Artist7')]);
const sourceArtists9: string[] = service.getSourceArtists([createArtistModel('Drift')]);
const sourceArtists10: string[] = service.getSourceArtists([createArtistModel('Driftwood')]);
const sourceArtists11: string[] = service.getSourceArtists([createArtistModel('Ida')]);
const sourceArtists12: string[] = service.getSourceArtists([createArtistModel('Suicidal Tendencies')]);
const sourceArtists13: string[] = service.getSourceArtists([createArtistModel('blink-182')]);
const sourceArtists14: string[] = service.getSourceArtists([createArtistModel('Link')]);
const sourceArtists15: string[] = service.getSourceArtists([createArtistModel('Mid Carson July')]);
const sourceArtists16: string[] = service.getSourceArtists([createArtistModel('July')]);

// Assert
expect(sourceArtists1.length).toEqual(4);
Expand Down Expand Up @@ -280,6 +292,24 @@ describe('ArtistService', () => {

expect(sourceArtists10.length).toEqual(1);
expect(sourceArtists10[0]).toEqual('Driftwood');

expect(sourceArtists11.length).toEqual(1);
expect(sourceArtists11[0]).toEqual('Ida');

expect(sourceArtists12.length).toEqual(1);
expect(sourceArtists12[0]).toEqual('Suicidal Tendencies');

expect(sourceArtists13.length).toEqual(1);
expect(sourceArtists13[0]).toEqual('blink-182');

expect(sourceArtists14.length).toEqual(1);
expect(sourceArtists14[0]).toEqual('Link');

expect(sourceArtists15.length).toEqual(1);
expect(sourceArtists15[0]).toEqual('Mid Carson July');

expect(sourceArtists16.length).toEqual(1);
expect(sourceArtists16[0]).toEqual('July');
});
});
});
15 changes: 10 additions & 5 deletions src/app/services/artist/artist.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@ import { ArtistSplitter } from './artist-splitter';
import { Timer } from '../../common/scheduling/timer';
import { Logger } from '../../common/logger';
import { CollectionUtils } from '../../common/utils/collections-utils';
import { SettingsBase } from '../../common/settings/settings.base';

@Injectable()
export class ArtistService implements ArtistServiceBase {
private sourceArtists: string[] = [];
public constructor(
private artistSplitter: ArtistSplitter,
private trackRepository: TrackRepositoryBase,
private settings: SettingsBase,
private logger: Logger,
) {}

Expand Down Expand Up @@ -59,16 +61,19 @@ export class ArtistService implements ArtistServiceBase {
}

public getSourceArtists(artists: ArtistModel[]): string[] {
const separators: string[] = CollectionUtils.fromString(this.settings.artistSplitSeparators);
const filteredSourceArtists: string[] = [];
const lowerCaseArtistNames = new Set(artists.map((artist) => artist.name.toLowerCase()));

for (const sourceArtist of this.sourceArtists) {
if (
[...lowerCaseArtistNames].some(
(name) =>
sourceArtist.toLowerCase() === name ||
sourceArtist.toLowerCase().includes(` ${name}`) ||
sourceArtist.toLowerCase().includes(`${name} `),
[...lowerCaseArtistNames].some((name) =>
separators.some(
(separator) =>
sourceArtist.toLowerCase() === name ||
sourceArtist.toLowerCase().includes(`${separator} ${name}`) ||
sourceArtist.toLowerCase().includes(`${name} ${separator}`),
),
)
) {
filteredSourceArtists.push(sourceArtist);
Expand Down

0 comments on commit 2831295

Please sign in to comment.