public async Task ShouldSuggestLeaveTimeSheet(string date, string categoryId, string comment) { var json = File.ReadAllText("Data/timepro-api-crm-mixed-client-leave.json"); var appointments = JsonConvert.DeserializeObject <CrmAppointmentModel[]>(json); json = File.ReadAllText("Data/timepro-api-recent-projects.json"); var recentProjects = JsonConvert.DeserializeObject <RecentProjectModel[]>(json); appointments.Should().NotBeEmpty(); var query = new SuggestTimeSheetQuery(); var request = new SuggestTimeSheetRequest { Date = date, EmpID = "JEK", CrmAppointments = appointments, RecentProjects = recentProjects }; var result = await query.Execute(request); result.Should().NotBeNull(); result.EmpID.Should().Be("JEK"); result.ClientID.Should().Be("SSW"); result.ProjectID.Should().Be("LEAVE"); result.CategoryID.Should().Be(categoryId); result.BillableID.Should().Be("W"); result.LocationID.Should().Be("SSW"); result.DateCreated.Should().Be(date); result.Comment.Should().Be(comment); result.AlreadyHasTimesheet.Should().BeFalse(); }
public async Task ShouldSuggestBillableTimeSheet() { var json = File.ReadAllText("Data/timepro-api-crm-mixed-client-leave.json"); var appointments = JsonConvert.DeserializeObject <CrmAppointmentModel[]>(json); json = File.ReadAllText("Data/timepro-api-recent-projects.json"); var recentProjects = JsonConvert.DeserializeObject <RecentProjectModel[]>(json); json = File.ReadAllText("Data/timepro-api-commits.json"); var commits = JsonConvert.DeserializeObject <GitCommitResult>(json); appointments.Should().NotBeEmpty(); commits.data.Should().NotBeEmpty(); var query = new SuggestTimeSheetQuery(); var request = new SuggestTimeSheetRequest { Date = "2019-05-07+10", EmpID = "JEK", CrmAppointments = appointments, RecentProjects = recentProjects, Commits = commits.data }; var result = await query.Execute(request); result.Should().NotBeNull(); result.EmpID.Should().Be("JEK"); result.ClientID.Should().Be("T2VV5F"); result.ProjectID.Should().Be("DG8WXY"); result.CategoryID.Should().Be("WEBDEV"); result.BillableID.Should().Be("B"); result.LocationID.Should().Be("SSW"); result.DateCreated.Should().Be("2019-05-07"); result.Comment.Should().Be($"Commits:\n" + $"- Added perf test proejct.\n" + $"- Added test for generating seed data.\n" + $"- Moved perf project from logical folder PL to BL.\n" + $"- Moved Eplan.ManagementService.Application from root to logical folder BL.\n" + $"- Connect to the DB test.\n" + $"- Moved EfCulkSeedPersister to data layer.\n" + $"- Completed EfBulkSeedPersister refactor to data layer.\n" + $"- Connect to DB test now clears all tables and verifies if it can execute a SQL statement.\n" + $"- Added test that do a full seeding process.\n" + $"- Added DB fixture and converted one test.\n" + $"- Completed seeding DB and making sure we reuse the DB.\n" + $"- First \"real\" test."); result.SuggestedActions.Should().NotBeNull(); result.SuggestedActions.SelectProject.Should().BeFalse(); result.SuggestedActions.EnterDescription.Should().BeFalse(); }
public async Task ShouldSuggestBillableTimeSheetWithSuggestedActions() { var json = File.ReadAllText("Data/timepro-api-crm-mixed-client-leave.json"); var appointments = JsonConvert.DeserializeObject <CrmAppointmentModel[]>(json); json = File.ReadAllText("Data/timepro-api-recent-projects.json"); var recentProjects = JsonConvert.DeserializeObject <List <RecentProjectModel> >(json); recentProjects.Add(new RecentProjectModel { Client = "Awesome Software & Service GmbH&Co.KG", ClientID = "T2VV5F", Project = "Awesome IAM #2", ProjectID = "DG8WXY2", Iteration = null, IterationId = null, Category = "Web Site Development", CategoryID = "WEBDEV", DateCreated = new System.DateTime(2019, 4, 10) }); json = File.ReadAllText("Data/timepro-api-commits-empty.json"); var commits = JsonConvert.DeserializeObject <GitCommitResult>(json); appointments.Should().NotBeEmpty(); var query = new SuggestTimeSheetQuery(); var request = new SuggestTimeSheetRequest { Date = "2019-05-07+10", EmpID = "JEK", CrmAppointments = appointments, RecentProjects = recentProjects, Commits = commits.data }; var result = await query.Execute(request); result.Should().NotBeNull(); result.EmpID.Should().Be("JEK"); result.ClientID.Should().Be("T2VV5F"); result.ProjectID.Should().Be("DG8WXY"); result.CategoryID.Should().Be("WEBDEV"); result.BillableID.Should().Be("B"); result.LocationID.Should().Be("SSW"); result.DateCreated.Should().Be("2019-05-07"); result.Comment.Should().BeNullOrEmpty(); result.SuggestedActions.Should().NotBeNull(); result.SuggestedActions.SelectProject.Should().BeTrue(); result.SuggestedActions.EnterDescription.Should().BeTrue(); }
public async Task ShouldAlreadyHaveTimesheet() { string date = "2019-05-06"; string categoryId = "LNWD"; string comment = "SSW (SSW) - Labour Day public holiday (QLD only)"; var json = File.ReadAllText("Data/timepro-api-crm-mixed-client-leave.json"); var appointments = JsonConvert.DeserializeObject <CrmAppointmentModel[]>(json); json = File.ReadAllText("Data/timepro-api-recent-projects.json"); var recentProjects = JsonConvert.DeserializeObject <RecentProjectModel[]>(json); appointments.Should().NotBeEmpty(); var query = new SuggestTimeSheetQuery(); var request = new SuggestTimeSheetRequest { Date = date, EmpID = "JEK", CrmAppointments = appointments, RecentProjects = recentProjects, Timesheets = new List <TimesheetModel> { new TimesheetModel { id = 729994442, title = "SSW (SSW) - Labour Day public holiday (QLD only)" } } }; var result = await query.Execute(request); result.Should().NotBeNull(); result.EmpID.Should().Be("JEK"); result.ClientID.Should().Be("SSW"); result.ProjectID.Should().Be("LEAVE"); result.CategoryID.Should().Be(categoryId); result.BillableID.Should().Be("W"); result.LocationID.Should().Be("SSW"); result.DateCreated.Should().Be(date); result.Comment.Should().Be(comment); result.AlreadyHasTimesheet.Should().BeTrue(); }
public async Task ShouldSuggestBillableTimeSheetWithNoDescription() { var json = File.ReadAllText("Data/timepro-api-crm-mixed-client-leave.json"); var appointments = JsonConvert.DeserializeObject <CrmAppointmentModel[]>(json); json = File.ReadAllText("Data/timepro-api-recent-projects.json"); var recentProjects = JsonConvert.DeserializeObject <RecentProjectModel[]>(json); json = File.ReadAllText("Data/timepro-api-commits-empty.json"); var commits = JsonConvert.DeserializeObject <GitCommitResult>(json); appointments.Should().NotBeEmpty(); var query = new SuggestTimeSheetQuery(); var request = new SuggestTimeSheetRequest { Date = "2019-05-07+10", EmpID = "JEK", CrmAppointments = appointments, RecentProjects = recentProjects, Commits = commits.data }; var result = await query.Execute(request); result.Should().NotBeNull(); result.EmpID.Should().Be("JEK"); result.ClientID.Should().Be("T2VV5F"); result.ProjectID.Should().Be("DG8WXY"); result.CategoryID.Should().Be("WEBDEV"); result.BillableID.Should().Be("B"); result.LocationID.Should().Be("SSW"); result.DateCreated.Should().Be("2019-05-07"); result.Comment.Should().BeNullOrEmpty(); result.SuggestedActions.Should().NotBeNull(); result.SuggestedActions.SelectProject.Should().BeFalse(); result.SuggestedActions.EnterDescription.Should().BeTrue(); }
public async Task ShouldSuggestInternalWorkTimeSheet(string gitCommitsFile, string date, string projectId, string categoryId, string comment, bool shouldSelectProject, bool shouldEnterDescription) { var json = File.ReadAllText("Data/timepro-api-crm-mixed-client-leave.json"); var appointments = JsonConvert.DeserializeObject <CrmAppointmentModel[]>(json); json = File.ReadAllText("Data/timepro-api-recent-projects.json"); var recentProjects = JsonConvert.DeserializeObject <RecentProjectModel[]>(json); json = File.ReadAllText(gitCommitsFile); var commits = JsonConvert.DeserializeObject <GitCommitResult>(json); appointments.Should().NotBeEmpty(); var query = new SuggestTimeSheetQuery(); var request = new SuggestTimeSheetRequest { Date = date + "+10", EmpID = "JEK", CrmAppointments = appointments, RecentProjects = recentProjects, Commits = commits.data }; var result = await query.Execute(request); result.Should().NotBeNull(); result.EmpID.Should().Be("JEK"); result.ClientID.Should().Be("SSW"); result.ProjectID.Should().Be(projectId); result.CategoryID.Should().Be(categoryId); result.BillableID.Should().Be("W"); result.LocationID.Should().Be("SSW"); result.DateCreated.Should().Be(date); result.Comment.Should().Be(comment); result.SuggestedActions.Should().NotBeNull(); result.SuggestedActions.SelectProject.Should().Be(shouldSelectProject); result.SuggestedActions.EnterDescription.Should().Be(shouldEnterDescription); }