Skip to content

Commit

Permalink
refactor(ng): track ngrx entity
Browse files Browse the repository at this point in the history
Add library for ngrx entity state
for track entity.
Fix most played tracks graphql.
  • Loading branch information
Sikora00 authored and MaciejSikorski committed Oct 11, 2020
1 parent 1cf94f9 commit 7492c70
Show file tree
Hide file tree
Showing 73 changed files with 730 additions and 376 deletions.
33 changes: 33 additions & 0 deletions angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -1754,6 +1754,39 @@
}
}
}
},
"ng-radio-infrastructure-track-persistence-ngrx-entity": {
"projectType": "library",
"root": "libs/ng/radio/infrastructure-track-persistence-ngrx-entity",
"sourceRoot": "libs/ng/radio/infrastructure-track-persistence-ngrx-entity/src",
"prefix": "sdj",
"architect": {
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"libs/ng/radio/infrastructure-track-persistence-ngrx-entity/tsconfig.lib.json",
"libs/ng/radio/infrastructure-track-persistence-ngrx-entity/tsconfig.spec.json"
],
"exclude": [
"**/node_modules/**",
"!libs/ng/radio/infrastructure-track-persistence-ngrx-entity/**/*"
]
}
},
"test": {
"builder": "@nrwl/jest:jest",
"options": {
"jestConfig": "libs/ng/radio/infrastructure-track-persistence-ngrx-entity/jest.config.js",
"passWithNoTests": true
}
}
},
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
}
}
},
"cli": {
Expand Down
16 changes: 9 additions & 7 deletions apps/ng/src/app/app.component.spec.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import { async, TestBed } from '@angular/core/testing';
import { TestBed, waitForAsync } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';

describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [AppComponent],
}).compileComponents();
}));
beforeEach(
waitForAsync(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [AppComponent],
}).compileComponents();
})
);

it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { JwtService } from '@nestjs/jwt';
import { Test, TestingModule } from '@nestjs/testing';
import { SlackApiService } from '@sdj/shared/domain';
import { LoginHandler } from './login.handler';
import { createSpyObj } from 'jest-createspyobj';
import { LoginHandler } from './login.handler';

describe('LoginHandler', () => {
let handler: LoginHandler;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Args, Query, Resolver } from '@nestjs/graphql';
import { Args, Parent, Query, ResolveField, Resolver } from '@nestjs/graphql';
import {
Track,
TrackRepositoryInterface,
Expand All @@ -14,4 +14,9 @@ export class TrackResolver {
): Promise<Track[]> {
return this.trackRepository.findMostPlayedTracks(channelId);
}

@ResolveField('playedCount', () => Number)
async getPlayedCount(@Parent() track: Track): Promise<number> {
return track.playedCount();
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { async, TestBed } from '@angular/core/testing';
import { TestBed, waitForAsync } from '@angular/core/testing';
import { NgAuthCoreApplicationServicesModule } from './ng-auth-core-application-services.module';

describe('NgAuthCoreApplicationServicesModule', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [NgAuthCoreApplicationServicesModule],
}).compileComponents();
}));
beforeEach(
waitForAsync(() => {
TestBed.configureTestingModule({
imports: [NgAuthCoreApplicationServicesModule],
}).compileComponents();
})
);

it('should create', () => {
expect(NgAuthCoreApplicationServicesModule).toBeDefined();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { MatIconModule } from '@angular/material/icon';
import { MatMenuModule } from '@angular/material/menu';
import { MatToolbarModule } from '@angular/material/toolbar';
Expand All @@ -9,12 +9,14 @@ describe('NavbarComponent', () => {
let component: NavbarComponent;
let fixture: ComponentFixture<NavbarComponent>;

beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [MatIconModule, MatMenuModule, MatToolbarModule],
declarations: [NavbarComponent],
}).compileComponents();
}));
beforeEach(
waitForAsync(() => {
TestBed.configureTestingModule({
imports: [MatIconModule, MatMenuModule, MatToolbarModule],
declarations: [NavbarComponent],
}).compileComponents();
})
);

beforeEach(() => {
fixture = TestBed.createComponent(NavbarComponent);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { MatIconModule } from '@angular/material/icon';
import { MatListModule } from '@angular/material/list';

Expand All @@ -8,12 +8,14 @@ describe('SidenavComponent', () => {
let component: SidenavComponent;
let fixture: ComponentFixture<SidenavComponent>;

beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [MatIconModule, MatListModule],
declarations: [SidenavComponent],
}).compileComponents();
}));
beforeEach(
waitForAsync(() => {
TestBed.configureTestingModule({
imports: [MatIconModule, MatListModule],
declarations: [SidenavComponent],
}).compileComponents();
})
);

beforeEach(() => {
fixture = TestBed.createComponent(SidenavComponent);
Expand Down
40 changes: 21 additions & 19 deletions libs/ng/main/shell/src/lib/containers/main/main.component.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { MatSidenavModule } from '@angular/material/sidenav';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { RouterTestingModule } from '@angular/router/testing';
Expand All @@ -15,25 +15,27 @@ describe('MainComponent', () => {
let component: MainComponent;
let fixture: ComponentFixture<MainComponent>;

beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
MatSidenavModule,
RouterTestingModule,
HttpClientTestingModule,
NoopAnimationsModule,
],
declarations: [
MainComponent,
MockComponent(NavbarComponent),
MockComponent(SidenavComponent),
],
providers: [{ provide: ChannelFacade, useValue: {} }],
}).compileComponents();
beforeEach(
waitForAsync(() => {
TestBed.configureTestingModule({
imports: [
MatSidenavModule,
RouterTestingModule,
HttpClientTestingModule,
NoopAnimationsModule,
],
declarations: [
MainComponent,
MockComponent(NavbarComponent),
MockComponent(SidenavComponent),
],
providers: [{ provide: ChannelFacade, useValue: {} }],
}).compileComponents();

const channelFacade = TestBed.inject(ChannelFacade);
(channelFacade.selectedChannel$ as any) = hot('');
}));
const channelFacade = TestBed.inject(ChannelFacade);
(channelFacade.selectedChannel$ as any) = hot('');
})
);

beforeEach(() => {
fixture = TestBed.createComponent(MainComponent);
Expand Down
14 changes: 8 additions & 6 deletions libs/ng/main/shell/src/lib/ng-main-shell.module.spec.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { async, TestBed } from '@angular/core/testing';
import { TestBed, waitForAsync } from '@angular/core/testing';
import { NgMainShellModule } from './ng-main-shell.module';

describe('NgMainShellModule', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [NgMainShellModule],
}).compileComponents();
}));
beforeEach(
waitForAsync(() => {
TestBed.configureTestingModule({
imports: [NgMainShellModule],
}).compileComponents();
})
);

it('should create', () => {
expect(NgMainShellModule).toBeDefined();
Expand Down
12 changes: 6 additions & 6 deletions libs/ng/radio/core/application-services/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
export * from './lib/ng-radio-core-application-services.module';
export * from './lib/external-radio.facade';
export * from './lib/ports/radio-data-service.port';
export * from './lib/ports/data-services/radio-data-service.port';
export * from './lib/radio.facade';
export * from './lib/channel/ngrx-channel.facade';
export * from './lib/ports/channel-data.service';
export * from './lib/ports/queued-track.repository';
export * from './lib/ports/radio-data-service.port';
export * from './lib/ports/track-data.service';
export * from './lib/ports/data-services/channel-data.service';
export * from './lib/ports/data-services/queued-track.repository';
export * from './lib/ports/data-services/radio-data-service.port';
export * from './lib/ports/data-services/track-data.service';
export * from './lib/ports/persistance/track-persistence.service';
export * from './lib/queued-track/queued-track.facade';
export * from './lib/track/track.facade';
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { merge, Observable } from 'rxjs';
import { map, switchMap, withLatestFrom } from 'rxjs/operators';
import { ChannelPartialState } from '../../+state/channel.reducer';
import { channelQuery } from '../../+state/channel.selectors';
import { ChannelDataService } from '../../../ports/channel-data.service';
import { ChannelDataService } from '../../../ports/data-services/channel-data.service';
import { ChannelsReceivedEvent } from '../../events/channels-received.event';
import { LoadChannelsQuery } from './load-channels.query';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { async, TestBed } from '@angular/core/testing';
import { TestBed, waitForAsync } from '@angular/core/testing';
import { NgRadioCoreApplicationServicesModule } from './ng-radio-core-application-services.module';

describe('NgRadioCoreApplicationServicesModule', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [NgRadioCoreApplicationServicesModule],
}).compileComponents();
}));
beforeEach(
waitForAsync(() => {
TestBed.configureTestingModule({
imports: [NgRadioCoreApplicationServicesModule],
}).compileComponents();
})
);

it('should create', () => {
expect(NgRadioCoreApplicationServicesModule).toBeDefined();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import { RadioFacade } from './radio.facade';
import * as fromRadio from './radio/+state/radio.reducer';
import { JoinHandler } from './radio/commands/join/join.handler';
import { GetAudioSourceHandler } from './radio/queries/get-audio-source.handler';
import { NgCoreTrackApplicationServicesModule } from './track/ng-core-track-application-services.module';

const HANDLERS = [JoinHandler, GetAudioSourceHandler];
const CHANNEL_HANDLERS = [LoadChannelsHandler];
Expand All @@ -29,7 +28,6 @@ const CHANNEL_HANDLERS = [LoadChannelsHandler];
],
imports: [
NgCoreQueuedTrackApplicationServicesModule,
NgCoreTrackApplicationServicesModule,
EffectsModule.forFeature(HANDLERS),
StoreModule.forFeature(fromRadio.RADIO_FEATURE_KEY, fromRadio.reducer),
EffectsModule.forFeature(CHANNEL_HANDLERS),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { Track } from '@sdj/ng/radio/core/domain';
import { Observable } from 'rxjs';

export abstract class TrackPersistenceService {
abstract save(tracks: Track[]): Observable<void>;
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import { async, TestBed } from '@angular/core/testing';
import { TestBed, waitForAsync } from '@angular/core/testing';
import { NgCoreQueuedTrackApplicationServicesModule } from './ng-core-queued-track-application-services.module';

describe('NgCoreQueuedTrackApplicationServicesModule', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [NgCoreQueuedTrackApplicationServicesModule],
}).compileComponents();
}));
beforeEach(
waitForAsync(() => {
TestBed.configureTestingModule({
imports: [NgCoreQueuedTrackApplicationServicesModule],
}).compileComponents();
})
);

it('should create', () => {
expect(NgCoreQueuedTrackApplicationServicesModule).toBeDefined();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import { QueuedTrack } from '@sdj/ng/radio/core/domain';
import { BehaviorSubject, Subscription } from 'rxjs';
import { map } from 'rxjs/operators';
import { QueuedTrackRepository } from '../ports/queued-track.repository';
import { QueuedTrackRepository } from '../ports/data-services/queued-track.repository';

@Injectable()
export class QueuedTrackFacade {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { createSpyObj } from 'jest-createspyobj';
import { cold, hot } from 'jest-marbles';
import { Observable } from 'rxjs';
import { ExternalRadioFacade } from '../../external-radio.facade';
import { RadioDataService } from '../../ports/radio-data-service.port';
import { RadioDataService } from '../../ports/data-services/radio-data-service.port';
import { AudioSourceChangedEvent } from '../events/audio-source-changed/audio-source-changed.event';
import { GetAudioSourceHandler } from './get-audio-source.handler';
import { GetAudioSourceQuery } from './get-audio-source.query';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { filter, first, map, switchMap, withLatestFrom } from 'rxjs/operators';
import { RadioPartialState } from '../+state/radio.reducer';
import { radioQuery } from '../+state/radio.selectors';
import { ExternalRadioFacade } from '../../external-radio.facade';
import { RadioDataService } from '../../ports/radio-data-service.port';
import { RadioDataService } from '../../ports/data-services/radio-data-service.port';
import { AudioSourceChangedEvent } from '../events/audio-source-changed/audio-source-changed.event';
import { AudioSourceChangedEventPayload } from '../events/audio-source-changed/audio-source-changed.event-payload';
import { GetAudioSourceQuery } from './get-audio-source.query';
Expand Down

This file was deleted.

Loading

0 comments on commit 7492c70

Please sign in to comment.