diff --git a/packages/composer-playground/.istanbul.yml b/packages/composer-playground/.istanbul.yml index 96e384ed76..6552b9186e 100644 --- a/packages/composer-playground/.istanbul.yml +++ b/packages/composer-playground/.istanbul.yml @@ -6,7 +6,7 @@ instrumentation: - "docker/*" check: global: - statements: 97 - branches: 89 - functions: 95 - lines: 97 + statements: 98 + branches: 91 + functions: 96 + lines: 98 diff --git a/packages/composer-playground/src/app/connection-profile-data/connection-profile-data.component.ts b/packages/composer-playground/src/app/connection-profile-data/connection-profile-data.component.ts index 6bb2c789fc..750a5b6af2 100644 --- a/packages/composer-playground/src/app/connection-profile-data/connection-profile-data.component.ts +++ b/packages/composer-playground/src/app/connection-profile-data/connection-profile-data.component.ts @@ -194,7 +194,6 @@ export class ConnectionProfileDataComponent { this.profileUpdated.emit({updated: true}); }, (reason) => { - console.log(reason); if (reason && reason !== 1) { // someone hasn't pressed escape this.alertService.errorStatus$.next(reason); } diff --git a/packages/composer-playground/src/app/directives/file-drag-drop/file-drag-and-drop.directive.spec.ts b/packages/composer-playground/src/app/directives/file-drag-drop/file-drag-and-drop.directive.spec.ts new file mode 100644 index 0000000000..eb299c8a37 --- /dev/null +++ b/packages/composer-playground/src/app/directives/file-drag-drop/file-drag-and-drop.directive.spec.ts @@ -0,0 +1,207 @@ +/* tslint:disable:no-unused-variable */ +/* tslint:disable:no-unused-expression */ +/* tslint:disable:no-var-requires */ +/* tslint:disable:max-classes-per-file */ +import { ComponentFixture, TestBed, async, fakeAsync, tick, inject } from '@angular/core/testing'; +import { Component, Renderer, } from '@angular/core'; +import { By } from '@angular/platform-browser'; + +import * as sinon from 'sinon'; +import * as chai from 'chai'; +import { FileDragDropDirective } from './file-drag-and-drop.directive'; + +let should = chai.should(); + +@Component({ + selector: 'test', + template: ` +
+
` +}) + +class TestComponent { + + fileTypes: string[] = ['.bna']; + maxFileSize: number = 3; + + accepted; + rejected; + left; + over; + + fileAccepted(accepted) { + this.accepted = accepted; + } + + fileRejected(rejected) { + this.rejected = rejected; + } + + fileLeft(left) { + this.left = left; + } + + fileOver(over) { + this.over = over; + } +} + +describe('FileDragDropDirective', () => { + + let component: TestComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [TestComponent, FileDragDropDirective] + }) + + .compileComponents(); + + fixture = TestBed.createComponent(TestComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create the directive', async(() => { + component.should.be.ok; + })); + + describe('onDragOver', () => { + it('should emit event when dragged over', async(() => { + component = fixture.componentInstance; + let divEl = fixture.debugElement.query(By.css('div')); + + let event = { + preventDefault: sinon.stub(), + stopPropagation: sinon.stub() + }; + + divEl.triggerEventHandler('dragenter', event); + + fixture.detectChanges(); + + component.over.should.equal('entered'); + event.preventDefault.should.have.been.called; + event.stopPropagation.should.have.been.called; + })); + }); + + describe('onDragLeave', () => { + it('should emit event when dragged left', async(() => { + component = fixture.componentInstance; + let divEl = fixture.debugElement.query(By.css('div')); + + let event = { + preventDefault: sinon.stub(), + stopPropagation: sinon.stub() + }; + + divEl.triggerEventHandler('dragexit', event); + + fixture.detectChanges(); + + component.left.should.equal('exited'); + event.preventDefault.should.have.been.called; + event.stopPropagation.should.have.been.called; + })); + }); + + describe('onDrop', () => { + it('should emit accept event on drop', async(() => { + component = fixture.componentInstance; + let divEl = fixture.debugElement.query(By.css('div')); + + let event = { + dataTransfer: { + files: [{name: 'bob.bna', size: 2}] + }, + preventDefault: sinon.stub(), + stopPropagation: sinon.stub() + }; + + divEl.triggerEventHandler('drop', event); + + fixture.detectChanges(); + + component.accepted.should.deep.equal({name: 'bob.bna', size: 2}); + event.preventDefault.should.have.been.called; + event.stopPropagation.should.have.been.called; + })); + + it('should emit accept event on drop with different structure', async(() => { + component = fixture.componentInstance; + let divEl = fixture.debugElement.query(By.css('div')); + + let event = { + originalEvent: { + dataTransfer: { + files: [{name: 'bob.bna', size: 2}] + }, + }, + preventDefault: sinon.stub(), + stopPropagation: sinon.stub() + + }; + + divEl.triggerEventHandler('drop', event); + + fixture.detectChanges(); + + component.accepted.should.deep.equal({name: 'bob.bna', size: 2}); + event.preventDefault.should.have.been.called; + event.stopPropagation.should.have.been.called; + })); + + it('should emit reject event on drop with wrong file type', async(() => { + component = fixture.componentInstance; + let divEl = fixture.debugElement.query(By.css('div')); + + let event = { + originalEvent: { + dataTransfer: { + files: [{name: 'bob.zip', size: 2}] + }, + }, + preventDefault: sinon.stub(), + stopPropagation: sinon.stub() + + }; + + divEl.triggerEventHandler('drop', event); + + fixture.detectChanges(); + + component.rejected.should.equal('file bob.zip has an unsupported file type'); + event.preventDefault.should.have.been.called; + event.stopPropagation.should.have.been.called; + })); + + it('should emit reject event on drop with file too big', async(() => { + component = fixture.componentInstance; + let divEl = fixture.debugElement.query(By.css('div')); + + let event = { + originalEvent: { + dataTransfer: { + files: [{name: 'bob.bna', size: 5}] + }, + }, + preventDefault: sinon.stub(), + stopPropagation: sinon.stub() + + }; + + divEl.triggerEventHandler('drop', event); + + fixture.detectChanges(); + + component.rejected.should.equal('file bob.bna was too large'); + event.preventDefault.should.have.been.called; + event.stopPropagation.should.have.been.called; + })); + }); +}); diff --git a/packages/composer-playground/src/app/services/client.service.spec.ts b/packages/composer-playground/src/app/services/client.service.spec.ts index f7a364a233..69da308db8 100644 --- a/packages/composer-playground/src/app/services/client.service.spec.ts +++ b/packages/composer-playground/src/app/services/client.service.spec.ts @@ -889,7 +889,6 @@ describe('ClientService', () => { let businessNetworkConnectionMock = sinon.stub(service, 'getBusinessNetworkConnection').returns(businessNetworkConMock); service.issueIdentity('userId', 'uniqueName', {issuer: false, affiliation: undefined}).then((identity) => { - console.log('CAZ', identity); let expected = { participant: 'uniqueName', userID: 'userId',