Skip to content

Commit

Permalink
Merge pull request #211 from Promact/incLeaveReportCodeCoverage
Browse files Browse the repository at this point in the history
Increased leave report code coverage
  • Loading branch information
Ankit Bhanvadia committed Mar 1, 2017
2 parents 769b2a7 + 380a3dc commit 48eb2c6
Show file tree
Hide file tree
Showing 6 changed files with 283 additions and 123 deletions.
Expand Up @@ -59,7 +59,7 @@ public class ScrumBotRepository : RepositoryBase, IScrumBotRepository
{
_tempScrumDetailsDataRepository = tempScrumDetailsDataRepository;
_scrumAnswerDataRepository = scrumAnswerDataRepository;
_logger = LogManager.GetLogger("ScrumBotModule");
_logger = LogManager.GetLogger("ScrumBotModule");
_scrumDataRepository = scrumDataRepository;
_questionDataRepository = questionDataRepository;
_slackUserDetailRepository = slackUserDetailRepository;
Expand Down Expand Up @@ -90,6 +90,7 @@ public class ScrumBotRepository : RepositoryBase, IScrumBotRepository
/// <returns>reply message</returns>
public async Task<string> ProcessMessagesAsync(string slackUserId, string slackChannelId, string message, string scrumBotId)
{
_logger.Info(_today);
string replyText = string.Empty;
SlackUserDetailAc slackUserDetail = await _slackUserDetailRepository.GetByIdAsync(slackUserId);
SlackChannelDetails slackChannelDetail = await _slackChannelRepository.GetByIdAsync(slackChannelId);
Expand Down Expand Up @@ -230,6 +231,7 @@ public async Task<string> ProcessMessagesAsync(string slackUserId, string slackC
{
Scrum scrum = await _scrumDataRepository.FirstOrDefaultAsync(x => String.Compare(x.SlackChannelId, slackChannelId, StringComparison.OrdinalIgnoreCase) == 0 &&
DbFunctions.TruncateTime(x.ScrumDate) == _today);
_logger.Info(scrum?.ScrumDate);
if (await IsScrumStartLeaveCommandAsync(scrumBotId, message, messageArray)
|| String.Compare(message, _stringConstant.ScrumHalt, StringComparison.OrdinalIgnoreCase) == 0
|| String.Compare(message, _stringConstant.ScrumResume, StringComparison.OrdinalIgnoreCase) == 0
Expand Down Expand Up @@ -429,8 +431,10 @@ private async Task<bool> IsScrumStartLeaveCommandAsync(string scrumBotId, string
/// <returns>Object of Scrum</returns>
private async Task<Scrum> GetScrumAsync(string slackChannelId)
{
return await _scrumDataRepository.FirstOrDefaultAsync(x => String.Compare(x.SlackChannelId, slackChannelId, StringComparison.OrdinalIgnoreCase) == 0 &&
DbFunctions.TruncateTime(x.ScrumDate) == _today);
var scrum = await _scrumDataRepository.FirstOrDefaultAsync(x => String.Compare(x.SlackChannelId, slackChannelId, StringComparison.OrdinalIgnoreCase) == 0 &&
DbFunctions.TruncateTime(x.ScrumDate) == _today);
_logger.Info(scrum?.ScrumDate);
return scrum;
}


Expand Down Expand Up @@ -1024,6 +1028,7 @@ private async Task<int> UpdateScrumAsync(int scrumId, bool isOngoing, bool isHal
if (!isOngoing)
await RemoveTemporaryScrumDetailsAsync(scrumId);
Scrum scrum = await _scrumDataRepository.FirstAsync(x => x.Id == scrumId);
_logger.Info(scrum?.ScrumDate);
scrum.IsOngoing = isOngoing;
scrum.IsHalted = isHalted;
_scrumDataRepository.Update(scrum);
Expand Down Expand Up @@ -1259,6 +1264,7 @@ private async Task<ScrumStatus> FetchScrumStatusAsync(ProjectAc project, List<Us
&& DbFunctions.TruncateTime(x.ScrumDate) == _today);
if (scrum != null)
{
_logger.Info(scrum?.ScrumDate);
if (!scrum.IsHalted)
return scrum.IsOngoing ? ScrumStatus.OnGoing : ScrumStatus.Completed;
//scrum is halted
Expand Down
1 change: 1 addition & 0 deletions Slack.Automation/Promact.Erp.Web/Promact.Erp.Web.csproj
Expand Up @@ -1192,6 +1192,7 @@
<TypeScriptCompile Include="app\leaveReport\leaveReport-Details\leaveReport-Details.model.ts" />
<TypeScriptCompile Include="app\leaveReport\leaveReport-List\leaveReport-List.component.ts" />
<TypeScriptCompile Include="app\leaveReport\leaveReport-List\leaveReport-List.model.ts" />
<TypeScriptCompile Include="app\leaveReport\leaveReport.component.spec.ts" />
<TypeScriptCompile Include="app\leaveReport\leaveReport.component.ts" />
<TypeScriptCompile Include="app\leaveReport\leaveReport.module.ts" />
<TypeScriptCompile Include="app\leaveReport\leaveReport.routes.ts" />
Expand Down
@@ -1,57 +1,110 @@
//declare let describe, it, beforeEach, expect;
//import { async, inject, TestBed, ComponentFixture, tick, fakeAsync } from '@angular/core/testing';
//import { Provider } from "@angular/core";
//import { Router, ActivatedRoute, RouterModule, Routes } from '@angular/router';
//import { Observable } from 'rxjs/Observable';
//import { RouterLinkStubDirective } from '../../shared/mock/mock.routerLink';
//import { LeaveModule } from '../../leaveReport/leaveReport.module';
//import { LeaveReportService } from '../leaveReport.service';
//import { MockLeaveReportService } from '../../shared/mock/mock.leaveReport.service';
//import { StringConstant } from '../../shared/stringConstant';
//import { LeaveReportDetailsComponent } from './leaveReport-Details.component';
//import { LoaderService } from '../../shared/loader.service';
//import { Md2SelectChange } from 'md2';
//import { AppModule } from '../../app.module';

//let promise: TestBed;

//describe('LeaveReport Detials Tests', () => {
// const routes: Routes = [];
// class MockLoaderService { }
// class MockMd2Select { }
// class MockActivatedRoute extends ActivatedRoute {
// constructor() {
// super();
// this.params = Observable.of({ id: "1" });
// }
// };

// beforeEach(async(() => {
// this.promise = TestBed.configureTestingModule({
// declarations: [RouterLinkStubDirective], //Declaration of mock routerLink used on page.
// imports: [AppModule, RouterModule.forRoot(routes, { useHash: true }) //Set LocationStrategy for component.
// ],
// providers: [
// { provide: ActivatedRoute, useClass: MockActivatedRoute },
// { provide: LeaveReportService, useClass: MockLeaveReportService },
// { provide: StringConstant, useClass: StringConstant },
// { provide: LoaderService, useClass: MockLoaderService },
// { provide: Md2SelectChange, useClass: MockMd2Select },
// ]
// }).compileComponents();
// }));

// it('Shows details of leave report for an employee on initialization', fakeAsync(() => {
// let fixture = TestBed.createComponent(LeaveReportDetailsComponent); //Create instance of component
// let leaveReportDetailsComponent = fixture.componentInstance;
// let result = leaveReportDetailsComponent.ngOnInit();
// tick();
// expect(leaveReportDetailsComponent.leaveReportDetail.length).toBe(1);
// }));
//});
declare let describe, it, beforeEach, expect;
import { async, inject, TestBed, ComponentFixture } from '@angular/core/testing';
import { Provider } from "@angular/core";
import { Router, ActivatedRoute, RouterModule, Routes } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { RouterLinkStubDirective } from '../../shared/mock/mock.routerLink';
import { AppModule } from '../../../app/app.module';
import { LeaveReportService } from '../leaveReport.service';
import { MockLeaveReportService } from '../../shared/mock/mock.leaveReport.service';
import { StringConstant } from '../../shared/stringConstant';
import { LeaveReportDetailsComponent } from './leaveReport-Details.component';
import { LoaderService } from '../../shared/loader.service';
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { LeaveReport } from '../../leaveReport/leaveReport-List/leaveReport-List.model';
import { LeaveReportDetail } from '../../leaveReport/leaveReport-Details/leaveReport-Details.model';
let promise: TestBed;
let stringConstant = new StringConstant();

describe('LeaveReport Detials Tests', () => {
const routes: Routes = [];
class MockLoaderService { }
class MockActivatedRoute extends ActivatedRoute {
constructor() {
super();
this.params = Observable.of({ id: "1" });
}
};

beforeEach(async(() => {
this.promise = TestBed.configureTestingModule({
declarations: [RouterLinkStubDirective], //Declaration of mock routerLink used on page.
imports: [AppModule, RouterModule.forRoot(routes, { useHash: true }) //Set LocationStrategy for component.
],
providers: [
{ provide: ActivatedRoute, useClass: MockActivatedRoute },
{ provide: LeaveReportService, useClass: MockLeaveReportService },
{ provide: StringConstant, useClass: StringConstant },
{ provide: LoaderService, useClass: MockLoaderService }
]
}).compileComponents();
}));


it('Shows list of leave reports Details', () => {
let fixture = TestBed.createComponent(LeaveReportDetailsComponent); //Create instance of component
let taskMailDetailsComponent = fixture.componentInstance;
let result = taskMailDetailsComponent.ngOnInit();
expect(taskMailDetailsComponent.leaveReportDetail.length).toBe(0);
});


it('Downloads report of leave reports on export to pdf', () => {
let mockLeaveReportDetails = new Array<MockLeaveReportDetails>();
let mockLeaveReportDetail = new MockLeaveReportDetails();
mockLeaveReportDetail.EmployeeUserName = stringConstant.userEmail;
mockLeaveReportDetail.EmployeeName = stringConstant.userName;
mockLeaveReportDetail.LeaveFrom = stringConstant.leaveDate;
mockLeaveReportDetails.push(mockLeaveReportDetail);

let fixture = TestBed.createComponent(LeaveReportDetailsComponent); //Create instance of component
let leaveReportDetailsComponent = fixture.componentInstance;
leaveReportDetailsComponent.leaveReportDetail = mockLeaveReportDetails;
leaveReportDetailsComponent.exportDataToPdf();
console.log(leaveReportDetailsComponent.leaveReportDetail.push());
expect(leaveReportDetailsComponent.leaveReportDetail.length).toBe(1);
});


it('Shows details of leave report for an employee on initialization but there are no leave reports', () => {
let mockLeaveReportDetails = new Array<MockLeaveReportDetails>();
let fixture = TestBed.createComponent(LeaveReportDetailsComponent); //Create instance of component
let leaveReportDetailsComponent = fixture.componentInstance;
let leaveReportService = fixture.debugElement.injector.get(LeaveReportService);
spyOn(leaveReportService, stringConstant.getLeaveReportDetail).and.returnValue(new BehaviorSubject(mockLeaveReportDetails).asObservable());
let result = leaveReportDetailsComponent.getLeaveReportDetail();
expect(leaveReportDetailsComponent.leaveReportDetail.length).toBe(0);
});


it('Shows details of leave report for an employee on initialization', () => {
let mockLeaveReportDetails = new Array<MockLeaveReportDetails>();
let mockLeaveReportDetail = new MockLeaveReportDetails();
mockLeaveReportDetail.EmployeeUserName = stringConstant.userEmail;
mockLeaveReportDetail.EmployeeName = stringConstant.userName;
mockLeaveReportDetail.LeaveFrom = stringConstant.leaveDate;
mockLeaveReportDetails.push(mockLeaveReportDetail);

let fixture = TestBed.createComponent(LeaveReportDetailsComponent); //Create instance of component
let leaveReportDetailsComponent = fixture.componentInstance;
let leaveReportService = fixture.debugElement.injector.get(LeaveReportService);
spyOn(leaveReportService, stringConstant.getLeaveReportDetail).and.returnValue(new BehaviorSubject(mockLeaveReportDetails).asObservable());
let result = leaveReportDetailsComponent.getLeaveReportDetail();
expect(leaveReportDetailsComponent.leaveReportDetail.length).toBe(1);

});


});
class MockLeaveReport extends LeaveReport {
constructor() {
super();
}
}

class MockLeaveReportDetails extends LeaveReportDetail {
constructor() {
super();
}
}

0 comments on commit 48eb2c6

Please sign in to comment.