public void FailureResult_should_create_result_in_the_failed_state()
        {
            var id          = Guid.NewGuid();
            var taskType    = new Urn("nid", "nss");
            var expectedDto = new ExpectedResult
            {
                Id        = id,
                TaskType  = taskType,
                TaskState = ApiTaskState.Failed
            };

            var result = ApiTaskResult <SuccessResult, FailureResult> .FailureResult(new FailureResult(), id, taskType);

            result.Should().BeEquivalentTo(expectedDto);
        }
        public void Running_should_create_result_in_the_running_state()
        {
            var id          = Guid.NewGuid();
            var taskType    = new Urn("nid", "nss");
            var expectedDto = new ExpectedResult
            {
                Id        = id,
                TaskType  = taskType,
                TaskState = ApiTaskState.Running
            };

            var result = ApiTaskResult <SuccessResult> .Running(id, taskType);

            result.Should().BeEquivalentTo(expectedDto);
        }
        public void ConvertToSingleApiResult_should_convert_running_result_to_running_result()
        {
            var id          = Guid.NewGuid();
            var taskType    = new Urn("nid", "nss");
            var expectedDto = new ExpectedResult
            {
                Id        = id,
                TaskType  = taskType,
                TaskState = ApiTaskState.Running
            };
            var taskResult = ApiTaskResult <SuccessResult, FailureResult> .Running(id, taskType);

            var oneResultApiResult = taskResult.ConvertToSingleApiResult(
                x => x.Value,
                x => new ApiError(HttpStatusCode.Forbidden, x.Value.ToString())
                );

            oneResultApiResult.Should().BeEquivalentTo(expectedDto);
            oneResultApiResult.TryGetSuccessResult(out _).Should().BeFalse();
        }
        public void ConvertToSingleApiResult_should_convert_task_error_result_to_api_error()
        {
            var id          = Guid.NewGuid();
            var taskType    = new Urn("nid", "nss");
            var expectedDto = new ExpectedResult
            {
                Id        = id,
                TaskType  = taskType,
                TaskState = ApiTaskState.Failed
            };
            var expectedApiError = new ApiError(HttpStatusCode.Forbidden, "an error");
            var taskResult       = ApiTaskResult <SuccessResult, FailureResult> .TaskFailure(expectedApiError, id, taskType);

            var oneResultApiResult = taskResult.ConvertToSingleApiResult(
                x => x.Value,
                x => new ApiError(HttpStatusCode.Forbidden, x.Value.ToString())
                );

            oneResultApiResult.Should().BeEquivalentTo(expectedDto);
            oneResultApiResult.TryGetTaskError(out var apiError).Should().BeTrue();
            apiError.Should().BeEquivalentTo(expectedApiError);
        }