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',