Skip to content

Commit

Permalink
Issue #SH-31 merge: Merge pull request #1047 from subranil/release-3.1.0
Browse files Browse the repository at this point in the history
Issue #SH-31 feat: Added telemetry for group-details and add members and test suites
  • Loading branch information
swayangjit authored Jul 9, 2020
2 parents e0469a9 + d04e529 commit 91273f8
Show file tree
Hide file tree
Showing 6 changed files with 312 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Component } from '@angular/core';
import { NavParams, PopoverController } from '@ionic/angular';
import { CommonUtilService } from '@app/services';
import {CommonUtilService, Environment, ImpressionSubtype, ImpressionType, PageId, TelemetryGeneratorService} from '@app/services';

@Component({
selector: 'app-my-groups-popover',
Expand All @@ -18,7 +18,8 @@ export class MyGroupsPopoverComponent {
constructor(
private popOverCtrl: PopoverController,
private navParams: NavParams,
private commonUtilService: CommonUtilService
private commonUtilService: CommonUtilService,
private telemetryGeneratorService: TelemetryGeneratorService
) { }

ionViewWillEnter() {
Expand All @@ -27,6 +28,11 @@ export class MyGroupsPopoverComponent {
this.buttonText = this.navParams.get('buttonText');
this.isFromAddMember = this.navParams.get('isFromAddMember');
this.commonUtilService.getAppName().then((res) => { this.appName = res; });

if (this.isFromAddMember) {
this.telemetryGeneratorService.generateImpressionTelemetry(ImpressionType.VIEW,
ImpressionSubtype.DISPLAY_DIKSHA_ID_TUTORIAL, PageId.ADD_MEMBER, Environment.GROUP);
}
}

close() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,15 @@ import { AddMemberToGroupPage } from './add-member-to-group.page';
import { ProfileService, GroupService } from '@project-sunbird/sunbird-sdk';
import { Router } from '@angular/router';
import { Platform, PopoverController } from '@ionic/angular';
import { AppHeaderService, CommonUtilService } from '@app/services';
import {
AppHeaderService,
CommonUtilService,
Environment, ID,
InteractSubtype,
InteractType,
PageId,
TelemetryGeneratorService
} from '@app/services';
import { Location } from '@angular/common';
import { of, throwError, Subscription } from 'rxjs';

Expand All @@ -28,6 +36,7 @@ describe('AddMemberToGroupPage', () => {
}
})) as any
};
const mockTelemetryGeneratorService: Partial<TelemetryGeneratorService> = {};

beforeAll(() => {
addMemberToGroupPage = new AddMemberToGroupPage(
Expand All @@ -38,7 +47,8 @@ describe('AddMemberToGroupPage', () => {
mockLocation as Location,
mockPlatform as Platform,
mockCommonUtilService as CommonUtilService,
mockPopoverCtrl as PopoverController
mockPopoverCtrl as PopoverController,
mockTelemetryGeneratorService as TelemetryGeneratorService
);
});

Expand All @@ -60,8 +70,14 @@ describe('AddMemberToGroupPage', () => {
it('should back to previous page', () => {
addMemberToGroupPage.isUserIdVerified = false;
mockLocation.back = jest.fn();
mockTelemetryGeneratorService.generateBackClickedTelemetry = jest.fn();
addMemberToGroupPage.handleBackButton(true);
expect(addMemberToGroupPage.isUserIdVerified).toBeFalsy();
expect(mockTelemetryGeneratorService.generateBackClickedTelemetry).toHaveBeenCalledWith(
PageId.ADD_MEMBER,
Environment.GROUP,
true
);
expect(mockLocation.back).toHaveBeenCalled();
});
});
Expand All @@ -73,7 +89,7 @@ describe('AddMemberToGroupPage', () => {
addMemberToGroupPage.handleDeviceBackButton();
});

it('should handel device back button', () => {
it('should handle device back button', () => {
const data = {
name: 'back'
};
Expand Down Expand Up @@ -106,8 +122,15 @@ describe('AddMemberToGroupPage', () => {
describe('onVerifyClick', () => {
it('should return errorMessage if userId is undefined', (done) => {
addMemberToGroupPage.userId = undefined;
mockTelemetryGeneratorService.generateInteractTelemetry = jest.fn();
addMemberToGroupPage.onVerifyClick();
setTimeout(() => {
expect(mockTelemetryGeneratorService.generateInteractTelemetry).toHaveBeenCalledWith(
InteractType.TOUCH,
InteractSubtype.VERIFY_CLICKED,
Environment.GROUP,
PageId.ADD_MEMBER
);
expect(addMemberToGroupPage.userId).toBeUndefined();
expect(addMemberToGroupPage.showErrorMsg).toBeTruthy();
done();
Expand All @@ -126,10 +149,22 @@ describe('AddMemberToGroupPage', () => {
firstName: 'jhon',
lastName: 'snow'
})) as any;
mockTelemetryGeneratorService.generateInteractTelemetry = jest.fn();
// act
addMemberToGroupPage.onVerifyClick();
// assert
setTimeout(() => {
expect(mockTelemetryGeneratorService.generateInteractTelemetry).toHaveBeenCalledWith(
InteractType.INITIATED,
'',
Environment.GROUP,
PageId.ADD_MEMBER,
undefined,
undefined,
undefined,
undefined,
ID.VERIFY_MEMBER
);
expect(addMemberToGroupPage.userId).not.toBeUndefined();
expect(presentFn).toHaveBeenCalled();
expect(dismissFn).toHaveBeenCalled();
Expand All @@ -138,6 +173,17 @@ describe('AddMemberToGroupPage', () => {
firstName: 'jhon',
lastName: 'snow'
});
expect(mockTelemetryGeneratorService.generateInteractTelemetry).toHaveBeenCalledWith(
InteractType.SUCCESS,
'',
Environment.GROUP,
PageId.ADD_MEMBER,
undefined,
undefined,
undefined,
undefined,
ID.VERIFY_MEMBER
);
expect(addMemberToGroupPage.userName).toBe('jhonsnow');
expect(addMemberToGroupPage.isUserIdVerified).toBeTruthy();
done();
Expand All @@ -156,10 +202,22 @@ describe('AddMemberToGroupPage', () => {
firstName: undefined,
lastName: undefined
})) as any;
mockTelemetryGeneratorService.generateInteractTelemetry = jest.fn();
// act
addMemberToGroupPage.onVerifyClick();
// assert
setTimeout(() => {
expect(mockTelemetryGeneratorService.generateInteractTelemetry).toHaveBeenCalledWith(
InteractType.INITIATED,
'',
Environment.GROUP,
PageId.ADD_MEMBER,
undefined,
undefined,
undefined,
undefined,
ID.VERIFY_MEMBER
);
expect(addMemberToGroupPage.userId).not.toBeUndefined();
expect(presentFn).toHaveBeenCalled();
expect(dismissFn).toHaveBeenCalled();
Expand All @@ -183,6 +241,7 @@ describe('AddMemberToGroupPage', () => {
dismiss: dismissFn,
}));
mockProfileService.getServerProfilesDetails = jest.fn(() => of(undefined)) as any;
mockTelemetryGeneratorService.generateInteractTelemetry = jest.fn();
// act
addMemberToGroupPage.onVerifyClick();
// assert
Expand All @@ -203,6 +262,7 @@ describe('AddMemberToGroupPage', () => {
present: presentFn,
dismiss: dismissFn,
}));
mockTelemetryGeneratorService.generateInteractTelemetry = jest.fn();
mockProfileService.getServerProfilesDetails = jest.fn(() => throwError({error: 'error'})) as any;
// act
addMemberToGroupPage.onVerifyClick();
Expand Down
66 changes: 62 additions & 4 deletions src/app/my-groups/add-member-to-group/add-member-to-group.page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,15 @@ import { Location } from '@angular/common';
import { Router } from '@angular/router';
import { ProfileConstants } from '@app/app/app.constant';
import { Platform } from '@ionic/angular';
import { AppHeaderService, CommonUtilService } from '@app/services';
import {
AppHeaderService,
CommonUtilService,
Environment, ID,
InteractSubtype,
InteractType,
PageId,
TelemetryGeneratorService
} from '@app/services';
import { PopoverController } from '@ionic/angular';
import { animationGrowInTopRight } from '../../animations/animation-grow-in-top-right';
import { animationShrinkOutTopRight } from '../../animations/animation-shrink-out-top-right';
Expand Down Expand Up @@ -41,7 +49,8 @@ export class AddMemberToGroupPage {
private location: Location,
private platform: Platform,
private commonUtilService: CommonUtilService,
private popoverCtrl: PopoverController
private popoverCtrl: PopoverController,
private telemetryGeneratorService: TelemetryGeneratorService
) {
const extras = this.router.getCurrentNavigation().extras.state;
this.groupId = extras.groupId;
Expand Down Expand Up @@ -72,8 +81,6 @@ export class AddMemberToGroupPage {
handleHeaderEvents($event) {
switch ($event.name) {
case 'back':
// this.telemetryGeneratorService.generateBackClickedTelemetry(PageId.COLLECTION_DETAIL, Environment.HOME,
// true, this.cardData.identifier, this.corRelationList);
this.handleBackButton(true);
break;
}
Expand All @@ -83,11 +90,17 @@ export class AddMemberToGroupPage {
if (this.isUserIdVerified) {
this.isUserIdVerified = false;
} else {
this.telemetryGeneratorService.generateBackClickedTelemetry(PageId.ADD_MEMBER, Environment.GROUP, isNavBack);
this.location.back();
}
}

async onVerifyClick() {
this.telemetryGeneratorService.generateInteractTelemetry(
InteractType.TOUCH,
InteractSubtype.VERIFY_CLICKED,
Environment.GROUP,
PageId.ADD_MEMBER);
if (!this.userId) {
this.showErrorMsg = true;
return;
Expand All @@ -97,6 +110,16 @@ export class AddMemberToGroupPage {
userId: 'da4e72df-0371-45be-9df4-a7c7762d3d7f',
requiredFields: ProfileConstants.REQUIRED_FIELDS
};
this.telemetryGeneratorService.generateInteractTelemetry(
InteractType.INITIATED,
'',
Environment.GROUP,
PageId.ADD_MEMBER,
undefined,
undefined,
undefined,
undefined,
ID.VERIFY_MEMBER);
const loader = await this.commonUtilService.getLoader();
await loader.present();
this.profileService.getServerProfilesDetails(req).toPromise()
Expand All @@ -107,6 +130,16 @@ export class AddMemberToGroupPage {
this.userName = serverProfile.firstName ? serverProfile.firstName : '';
this.userName += serverProfile.lastName ? serverProfile.lastName : '';
this.isUserIdVerified = true;
this.telemetryGeneratorService.generateInteractTelemetry(
InteractType.SUCCESS,
'',
Environment.GROUP,
PageId.ADD_MEMBER,
undefined,
undefined,
undefined,
undefined,
ID.VERIFY_MEMBER);
console.log('this.userName', this.userName);
}
}).catch(async () => {
Expand All @@ -120,8 +153,23 @@ export class AddMemberToGroupPage {
}

async onAddToGroupClick() {
this.telemetryGeneratorService.generateInteractTelemetry(
InteractType.TOUCH,
InteractSubtype.ADD_MEMBER_TO_GROUP_CLICKED,
Environment.GROUP,
PageId.ADD_MEMBER);
const loader = await this.commonUtilService.getLoader();
await loader.present();
this.telemetryGeneratorService.generateInteractTelemetry(
InteractType.INITIATED,
'',
Environment.GROUP,
PageId.ADD_MEMBER,
undefined,
undefined,
undefined,
undefined,
ID.ADD_MEMBER_TO_GROUP);
const addMemberToGroupReq: AddMembersRequest = {
groupId: this.groupId,
addMembersRequest: {
Expand All @@ -137,6 +185,16 @@ export class AddMemberToGroupPage {
throw res.error.members[0];
} else {
await loader.dismiss();
this.telemetryGeneratorService.generateInteractTelemetry(
InteractType.SUCCESS,
'',
Environment.GROUP,
PageId.ADD_MEMBER,
undefined,
undefined,
undefined,
undefined,
ID.ADD_MEMBER_TO_GROUP);
this.commonUtilService.showToast('MEMBER_ADDED_TO_GROUP');
this.location.back();
}
Expand Down
5 changes: 4 additions & 1 deletion src/app/my-groups/group-details/group-details.page.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,10 @@ describe('GroupDetailsPage', () => {

it('should navigate to previous page', () => {
mockLocation.back = jest.fn();
mockTelemetryGeneratorService.generateBackClickedTelemetry = jest.fn();
groupDetailsPage.handleBackButton(true);
expect(mockTelemetryGeneratorService.generateBackClickedTelemetry).toHaveBeenCalledWith(
PageId.GROUP_DETAIL, Environment.GROUP, true);
expect(mockLocation.back).toHaveBeenCalled();
});

Expand All @@ -90,7 +93,7 @@ describe('GroupDetailsPage', () => {
expect(mockPlatform.backButton).not.toBeUndefined();
});

it('should handel device back button', () => {
it('should handle device back button', () => {
const data = {
name: 'back'
};
Expand Down
Loading

0 comments on commit 91273f8

Please sign in to comment.