Пример #1
0
        public async Task FindAllHydratedTimeEntriesForUserAsync_ShouldReturnHydratedTimeEntryDtoImplList()
        {
            const int hourlyRateAmount = 1234;

            // Create project
            var projectRequest = new ProjectRequest
            {
                Name       = "FindAllHydratedTimeEntriesForProjectAsync " + Guid.NewGuid(),
                Color      = "#FF00FF",
                HourlyRate = new HourlyRateRequest {
                    Amount = hourlyRateAmount
                }
            };

            var createProject = await _client.CreateProjectAsync(_workspaceId, projectRequest);

            createProject.IsSuccessful.Should().BeTrue();
            createProject.Data.Should().NotBeNull();

            ProjectDtoImpl project = createProject.Data;

            var now = DateTimeOffset.UtcNow;
            var timeEntryRequest = new TimeEntryRequest
            {
                Start     = now,
                End       = now.AddSeconds(1),
                ProjectId = project.Id
            };

            var createResult = await _client.CreateTimeEntryAsync(_workspaceId, timeEntryRequest);

            createResult.IsSuccessful.Should().BeTrue();

            var userResponse = await _client.GetCurrentUserAsync();

            userResponse.IsSuccessful.Should().BeTrue();

            var response = await _client.FindAllHydratedTimeEntriesForUserAsync(_workspaceId, userResponse.Data.Id,
                                                                                start : DateTimeOffset.Now.AddDays(-1),
                                                                                end : DateTimeOffset.Now.AddDays(1));

            response.IsSuccessful.Should().BeTrue();
            response.Data.Should().Contain(timeEntry => timeEntry.Id.Equals(createResult.Data.Id));
            response.Data.Should().Contain(timeEntry => timeEntry.HourlyRate.Amount.Equals(hourlyRateAmount));

            var deleteProject = await _client.ArchiveAndDeleteProject(_workspaceId, project.Id);

            deleteProject.IsSuccessful.Should().BeTrue();
        }
Пример #2
0
        public async Task FindAllTasksAsync_ShouldReturnTaskList()
        {
            // Prepare some project
            var projectRequest = new ProjectRequest {
                Name = "Task find project", Color = "#FF00FF"
            };
            var createResult = await _client.CreateProjectAsync(_workspaceId, projectRequest);

            createResult.IsSuccessful.Should().BeTrue();
            var projectId = createResult.Data.Id;

            var response = await _client.FindAllTasksAsync(_workspaceId, projectId);

            response.IsSuccessful.Should().BeTrue();
        }
Пример #3
0
        public async Task CreateProjectAsync_ShouldCreteProjectAndReturnProjectImplDto()
        {
            var projectRequest = new ProjectRequest {
                Name  = "Test project",
                Color = "#FF00FF"
            };
            var createResult = await _client.CreateProjectAsync(_workspaceId, projectRequest);

            createResult.IsSuccessful.Should().BeTrue();
            createResult.Data.Should().NotBeNull();

            var findResult = await _client.FindAllProjectsOnWorkspaceAsync(_workspaceId);

            findResult.IsSuccessful.Should().BeTrue();
            findResult.Data.Should().ContainEquivalentOf(createResult.Data);
        }
Пример #4
0
        public async Task CreateTemplatesAsync_ShouldCreteTemplateAndReturnTemplateDto()
        {
            // Create project for test
            var projectRequest = new ProjectRequest {
                Name = "Create Template test project " + Guid.NewGuid(), Color = "#FFFFFF"
            };
            var projectResponse = await _client.CreateProjectAsync(_workspaceId, projectRequest);

            projectResponse.IsSuccessful.Should().BeTrue();
            var projectId = projectResponse.Data.Id;
            // Create task
            var taskRequest = new TaskRequest {
                Name = "Template create task " + Guid.NewGuid()
            };
            var taskResponse = await _client.CreateTaskAsync(_workspaceId, projectId, taskRequest);

            taskResponse.IsSuccessful.Should().BeTrue();
            var taskId = taskResponse.Data.Id;

            var templatePatchRequest = new TemplateRequest()
            {
                Name             = "Create Test template " + Guid.NewGuid(),
                ProjectsAndTasks = new List <ProjectsTaskTupleRequest>()
                {
                    new ProjectsTaskTupleRequest
                    {
                        ProjectId = projectId,
                        TaskId    = taskId
                    }
                }
            };

            var createResult = await _client.CreateTemplatesAsync(_workspaceId, templatePatchRequest);

            createResult.IsSuccessful.Should().BeTrue();
            createResult.Data.Should().NotBeNull();

            var deleteProject = await _client.ArchiveAndDeleteProject(_workspaceId, projectId);

            deleteProject.IsSuccessful.Should().BeTrue();
        }
Пример #5
0
        public static async Task <ProjectDtoImpl> CreateTestProjectAsync(ClockifyClient client, string workspaceName, string clientId)
        {
            var projectRequest = new ProjectRequest {
                Name       = "GetDetailedReportAsync " + Guid.NewGuid(),
                Color      = "#FF00FF",
                HourlyRate = new HourlyRateRequest {
                    Amount = 1234
                },
                ClientId = clientId
            };

            var createProject = await client.CreateProjectAsync(workspaceName, projectRequest);

            createProject.IsSuccessful.Should().BeTrue();
            createProject.Data.Should().NotBeNull();

            ProjectDtoImpl project = createProject.Data;

            return(project);
        }
Пример #6
0
        public async Task FindAllTimeEntriesForProjectAsync_ShouldReturnTimeEntryDtoImplList()
        {
            // Create project
            var projectRequest = new ProjectRequest
            {
                Name  = "FindAllTimeEntriesForProjectAsync " + Guid.NewGuid(),
                Color = "#FF00FF"
            };
            var createProject = await _client.CreateProjectAsync(_workspaceId, projectRequest);

            createProject.IsSuccessful.Should().BeTrue();
            createProject.Data.Should().NotBeNull();

            ProjectDtoImpl project = createProject.Data;


            // Create TimeEntries
            var now = DateTimeOffset.UtcNow;
            var timeEntry1Request = new TimeEntryRequest
            {
                ProjectId   = project.Id,
                Start       = now,
                End         = now.AddMinutes(2),
                Description = "TimeEntry1"
            };

            var addTimeEntry1 = await _client.CreateTimeEntryAsync(_workspaceId, timeEntry1Request);

            addTimeEntry1.IsSuccessful.Should().BeTrue();
            addTimeEntry1.Data.Should().NotBeNull();

            TimeEntryDtoImpl timeEntry1 = addTimeEntry1.Data;

            var timeEntry2Request = new TimeEntryRequest
            {
                ProjectId   = project.Id,
                Start       = now.AddDays(-1),
                End         = now.AddMinutes(3),
                Description = "TimeEntry2"
            };


            var addTimeEntry2 = await _client.CreateTimeEntryAsync(_workspaceId, timeEntry2Request);

            addTimeEntry2.IsSuccessful.Should().BeTrue();
            addTimeEntry2.Data.Should().NotBeNull();

            TimeEntryDtoImpl timeEntry2 = addTimeEntry2.Data;


            // Send request

            var response = await _client.FindAllTimeEntriesForProjectAsync(_workspaceId, projectId : project.Id, start : DateTimeOffset.Now.AddDays(-1),
                                                                           end : DateTimeOffset.Now.AddDays(1));

            //response.IsSuccessful.Should().BeTrue();
            response.Data.Should().NotBeNull();

            List <TimeEntryDtoImpl> responseContent = response.Data as List <TimeEntryDtoImpl>;

            responseContent.Should().Contain(timeEntry => timeEntry.Id.Equals(timeEntry1.Id));
            responseContent.Should().Contain(timeEntry => timeEntry.Id.Equals(timeEntry2.Id));


            // Clean up
            await _client.DeleteTimeEntryAsync(_workspaceId, addTimeEntry1.Data.Id);

            await _client.DeleteTimeEntryAsync(_workspaceId, addTimeEntry2.Data.Id);

            await _client.DeleteProjectAsync(_workspaceId, createProject.Data.Id);
        }