From 704f426eeacac69c277dcd48b554a5f9d73f19a2 Mon Sep 17 00:00:00 2001 From: Florian Hartwich Date: Sat, 15 Apr 2017 10:06:40 +0200 Subject: [PATCH] Add additional Blog Component tests --- .../blog-entry/blog-entry.component.spec.ts | 48 +++++++++++++++++++ .../src/app/blog/blog.component.spec.ts | 7 +-- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/project-manager/src/app/blog/blog-entry/blog-entry.component.spec.ts b/project-manager/src/app/blog/blog-entry/blog-entry.component.spec.ts index c669a2a..c571ee0 100644 --- a/project-manager/src/app/blog/blog-entry/blog-entry.component.spec.ts +++ b/project-manager/src/app/blog/blog-entry/blog-entry.component.spec.ts @@ -3,6 +3,7 @@ import {BlogEntryComponent} from "./blog-entry.component"; import {BlogEntry} from "./blog-entry"; import {BlogComponent} from "../blog.component"; import {RouterTestingModule} from "@angular/router/testing"; +import {Component} from "@angular/core"; describe('Blog Entry Isolated Test', () => { @@ -61,7 +62,36 @@ describe('Blog Entry Isolated Test', () => { describe('BlogEntryComp -> BlogComp Dependent Test', () => { + it('should remove entry from BlogComponent on "delete" button click', () => { + TestBed.configureTestingModule({ + declarations: [BlogEntryComponent, MockBlogComponent] + }); + + const entryFixture = TestBed.createComponent(BlogEntryComponent); + const entryInstance: BlogEntryComponent = entryFixture.componentInstance; + + const blogFixture = TestBed.createComponent(MockBlogComponent); + + const blogInstance: any = blogFixture.componentInstance; + + const blogEntry: BlogEntry = blogInstance.entries[0]; + entryInstance.entry = blogEntry; + entryInstance.blogComponent = blogInstance; + + const oldLength = blogInstance.entries.length; + entryFixture.nativeElement.querySelector('div /deep/ .blog-delete > button').click(); + expect(blogInstance.entries.length).toBe(oldLength - 1); + }); + + it('should remove entry from BlogComponent on "delete" button click : OVERRIDE BLOG TEMPLATE', () => { + + TestBed.overrideComponent(BlogComponent, { + set: { + template: '' + } + }); + TestBed.configureTestingModule({ imports: [RouterTestingModule.withRoutes([])], declarations: [BlogEntryComponent, BlogComponent] @@ -87,3 +117,21 @@ describe('Blog Entry Isolated Test', () => { }); +// Mocked Blog Component +@Component({ + selector: 'blog', + template: '' +}) +export class MockBlogComponent { + + entries = [{}, {}]; + + deleteBlogEntry(id) { + this.entries.splice(0, 1); + } + +} + + + + diff --git a/project-manager/src/app/blog/blog.component.spec.ts b/project-manager/src/app/blog/blog.component.spec.ts index e2b995e..cb5481f 100644 --- a/project-manager/src/app/blog/blog.component.spec.ts +++ b/project-manager/src/app/blog/blog.component.spec.ts @@ -1,7 +1,7 @@ import {BlogComponent} from './blog.component' import {TestBed} from "@angular/core/testing"; import {RouterTestingModule} from "@angular/router/testing"; -import {BlogEntryComponent} from "./blog-entry/blog-entry.component"; +import {CUSTOM_ELEMENTS_SCHEMA} from "@angular/core"; describe('Blog Component', () => { @@ -50,7 +50,6 @@ describe('Blog Component', () => { }); }); - describe('Template Driven Form Integration Test', () => { let fixture; @@ -60,7 +59,9 @@ describe('Blog Component', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [RouterTestingModule.withRoutes([])], - declarations: [BlogEntryComponent, BlogComponent] + declarations: [BlogComponent], + // CUSTOM_ELEMENTS_SCHEMA - verhindert das Laden von Sub-Komponenten + schemas: [CUSTOM_ELEMENTS_SCHEMA] }); fixture = TestBed.createComponent(BlogComponent); instance = fixture.componentInstance;