Skip to content

Commit

Permalink
Reduced dependency on lodash
Browse files Browse the repository at this point in the history
  • Loading branch information
nbeach committed Nov 28, 2018
1 parent b1375ab commit f933b6d
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 9 deletions.
14 changes: 8 additions & 6 deletions src/mock-component.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import {Component, EventEmitter, Input, Output, Type} from "@angular/core"
import {selectorOf} from "./selector-of"
import {extend, keys, keysIn, reduce, set, some} from "lodash"
import {some} from "lodash"
import {propertyMetadata} from "./reflection"
import isNil = require("lodash/fp/isNil")
import {resolveGlobalObject} from "./global-object"
import isNil = require("lodash/fp/isNil")

declare const window: any
declare const global: any

function propertiesDecoratedWith(decorator: any, propertyMetadata: any): string[] {
return keys(propertyMetadata).filter((key: any) => instanceExistsIn(decorator, propertyMetadata[key]))
return Object.keys(propertyMetadata).filter((key: any) => instanceExistsIn(decorator, propertyMetadata[key]))
}

function instanceExistsIn<T>(object: Type<T>, list: any[]): boolean {
Expand Down Expand Up @@ -43,10 +43,12 @@ export function mockComponent<T>(constructor: Type<T>, mockSetup: MockSetup = ()
}

const MockComponent = () => {
const outputs = reduce(options.outputs, (obj, property) => set(obj, property, new EventEmitter<any>()), {})
const mockedMethods = keysIn(constructor.prototype).reduce((obj, property) => set(obj, property, getMockProvider()()), {})
const mockProvider = getMockProvider()

const outputs = options.outputs.reduce((obj, property) => ({...obj, [property]: new EventEmitter() }), {})
const mockedMethods = Object.keys(constructor.prototype).reduce((obj, property) => ({...obj, [property]: mockProvider()}), {})

const mocked = extend({}, outputs, mockedMethods)
const mocked = {...outputs, ...mockedMethods}
mockSetup(mocked)
return mocked
}
Expand Down
3 changes: 1 addition & 2 deletions src/test-component.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import {ComponentFixture, TestBed} from "@angular/core/testing"
import {Component, Type} from "@angular/core"
import {concat} from "lodash"
import {selectComponent, selectComponents} from "./dom"
import {mockComponent, MockSetup} from "./mock-component"
import {selectorOf} from "./selector-of"
Expand Down Expand Up @@ -128,7 +127,7 @@ export class TestBuilder<T> {
const TestHostComponent = createTestHostComponent(this.subject, this.inputInitializations, this.outputWatches)

TestBed.configureTestingModule({
declarations: concat(TestHostComponent, this.subject, mockComponents, this._use),
declarations: [TestHostComponent, this.subject, ...mockComponents, this._use],
providers: this._providers,
imports: this._imports,
schemas: this._schemas,
Expand Down
2 changes: 1 addition & 1 deletion src/test-host.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export default function createTestHostComponent<T>(subject: Type<T>, inputInitia

function addInputProperties(inputInitializations: Map<string, any>, object: any) {
const inputs = Array.from(inputInitializations.entries())
inputs.forEach(input => object[input[0]] = input[1])
inputs.forEach(([key, value]) => object[key] = value)
}

function addOutputWatches(outputWatches: OutputWatch[], object: any) {
Expand Down

0 comments on commit f933b6d

Please sign in to comment.