diff --git a/frontend/src/app/component/tweets/tweets.component.html b/frontend/src/app/component/tweets/tweets.component.html index 3807e70..819d346 100644 --- a/frontend/src/app/component/tweets/tweets.component.html +++ b/frontend/src/app/component/tweets/tweets.component.html @@ -1,11 +1,11 @@
-
+
Kein RSS-Feed vorhanden
RSS-Feed erstellen
-
+
Keine Tweets vorhanden
Schau später noch einmal vorbei! diff --git a/frontend/src/app/component/tweets/tweets.component.spec.ts b/frontend/src/app/component/tweets/tweets.component.spec.ts new file mode 100644 index 0000000..29dc7a5 --- /dev/null +++ b/frontend/src/app/component/tweets/tweets.component.spec.ts @@ -0,0 +1,130 @@ +import {TweetsComponent} from './tweets.component'; +import {async, ComponentFixture, TestBed} from '@angular/core/testing'; +import {HttpClient} from '@angular/common/http'; +import {MatSnackBar} from '@angular/material/snack-bar'; +import {NGXLogger} from 'ngx-logger'; +import {MatDialog} from '@angular/material/dialog'; +import {HttpClientTestingModule} from '@angular/common/http/testing'; +import {FeedService} from "../../services/feed.service"; +import {Observable} from "rxjs"; +import {IFeed} from "../../interfaces/feed.interface"; +import {Tweet} from "../../interfaces/interface"; +import {By} from "@angular/platform-browser"; + + +class MockSnackBar { +} + +class MockMatDialog { +} + +class MockNGXLogger { +} + +//Fake Feed Service +export class MockFeedService { + + getFeeds(): Observable { + return new Observable(); + } +} + +export function mockFillTweets() { + + for (let i = 0; i < 6; i++) { + const tweet: Tweet = {tweet_id: i, created_date: null, text: "Mock", url: "Mock", icon: null} + this.tweets.push(tweet); + } +} + +describe('Component: Tweets', () => { + let fixture: ComponentFixture; + let component: TweetsComponent; + + beforeEach(async(() => { + + //Cancelling initial load and mock http calls + TweetsComponent.prototype.ngOnInit = () => { + }; + TweetsComponent.prototype.fillTweets = mockFillTweets; + TweetsComponent.prototype.loadMore = mockFillTweets; + + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], + providers: [ + {provide: HttpClient, useClass: HttpClientTestingModule}, + {provide: FeedService, useClass: MockFeedService}, + {provide: MatSnackBar, useClass: MockSnackBar}, + {provide: MatDialog, useClass: MockMatDialog}, + {provide: NGXLogger, useClass: MockNGXLogger} + ] + }).compileComponents(); + + fixture = TestBed.createComponent(TweetsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('is TweetsComponent to be defined', () => { + expect(component).toBeDefined(); + }); + + + it('Show text if feeds are empty', () => { + expect(fixture.debugElement.query(By.css('.feeds'))).toBeDefined(); + }); + + it('Do not show text if feeds are filled', () => { + + const feed: IFeed = {active: true, icon: null, id: 1, keywords: null, match_all_keywords: "false", url: ""}; + component.feeds.push(feed); + + expect(fixture.debugElement.query(By.css('.feeds'))).toBeNull(); + + }); + + + it('initial Tweets empty', () => { + + expect(component.tweets.length).toEqual(0); + + }); + + + it('Show text if tweets are empty', () => { + expect(fixture.debugElement.query(By.css('.tweets'))).toBeDefined(); + }) + + + it('Do not show text if tweets are filled', () => { + + component.fillTweets(); + expect(fixture.debugElement.query(By.css('.tweets'))).toBeNull(); + + }); + + + it('load initial six Tweets works', () => { + component.fillTweets(); + expect(component.tweets.length).toEqual(6); + }); + + it('load more Tweets works', () => { + + component.fillTweets(); + component.loadMore(); + expect(component.tweets.length).toEqual(12); + + }); + + it('load more Tweets twice works', () => { + + component.fillTweets() + component.loadMore(); + component.loadMore(); + expect(component.tweets.length).toEqual(18); + + }); + + +}); diff --git a/frontend/src/app/component/tweets/tweets.component.ts b/frontend/src/app/component/tweets/tweets.component.ts index 0bf4693..070422f 100644 --- a/frontend/src/app/component/tweets/tweets.component.ts +++ b/frontend/src/app/component/tweets/tweets.component.ts @@ -1,5 +1,4 @@ import {Component, OnInit} from '@angular/core'; -import {AuthService} from '../../services/auth.service'; import {HttpClient} from '@angular/common/http'; import {FeedService} from '../../services/feed.service'; import {IFeed} from '../../interfaces/feed.interface'; @@ -23,7 +22,6 @@ export class TweetsComponent implements OnInit { feeds: IFeed[] = []; constructor(private http: HttpClient, - private authService: AuthService, private _feedService: FeedService, private _snackbarService: SnackbarService, private _dialog: MatDialog,