From bf8d48b18de15f6e28f15c7867d01e9a63bc3b81 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 19:08:34 +0000 Subject: [PATCH] feat(api): benefits mutation API endpoints (create benefit, update benefit, enroll individual, unenroll individual) now properly return async response types --- .stats.yml | 4 +- .../api/models/EnrolledIndividualBenifit.kt | 169 ++++++++++++++++++ .../HrisBenefitIndividualUnenrollManyPage.kt | 80 --------- ...sBenefitIndividualUnenrollManyPageAsync.kt | 92 ---------- .../models/IndividualUnenrollManyResponse.kt | 65 ++++++- .../hris/benefits/IndividualServiceAsync.kt | 10 +- .../benefits/IndividualServiceAsyncImpl.kt | 18 +- .../hris/benefits/IndividualService.kt | 10 +- .../hris/benefits/IndividualServiceImpl.kt | 18 +- .../models/EnrolledIndividualBenifitTest.kt | 39 ++++ .../IndividualUnenrollManyResponseTest.kt | 13 +- .../benefits/IndividualServiceAsyncTest.kt | 11 +- .../hris/benefits/IndividualServiceTest.kt | 9 +- 13 files changed, 312 insertions(+), 226 deletions(-) create mode 100644 finch-java-core/src/main/kotlin/com/tryfinch/api/models/EnrolledIndividualBenifit.kt delete mode 100644 finch-java-core/src/main/kotlin/com/tryfinch/api/models/HrisBenefitIndividualUnenrollManyPage.kt delete mode 100644 finch-java-core/src/main/kotlin/com/tryfinch/api/models/HrisBenefitIndividualUnenrollManyPageAsync.kt create mode 100644 finch-java-core/src/test/kotlin/com/tryfinch/api/models/EnrolledIndividualBenifitTest.kt diff --git a/.stats.yml b/.stats.yml index 543e5ffc..60191858 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 45 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-8c83f0eae70d2a02ed3e2059fc251affdccd2f848f45445e4fed64dfd9ca5985.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-bf858f37d7ab420841ddc6329dad8c46377308b6a5c8e935908011d0f9845e22.yml openapi_spec_hash: 2523952a32436e3c7fd3b55508c2e7ee -config_hash: ce10384813f68ba3fed61c7b601b396b +config_hash: 4a8def48077df6382ed9fe00588baecf diff --git a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/EnrolledIndividualBenifit.kt b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/EnrolledIndividualBenifit.kt new file mode 100644 index 00000000..29b0494d --- /dev/null +++ b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/EnrolledIndividualBenifit.kt @@ -0,0 +1,169 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.tryfinch.api.models + +import com.fasterxml.jackson.annotation.JsonAnyGetter +import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.annotation.JsonProperty +import com.tryfinch.api.core.ExcludeMissing +import com.tryfinch.api.core.JsonField +import com.tryfinch.api.core.JsonMissing +import com.tryfinch.api.core.JsonValue +import com.tryfinch.api.core.checkRequired +import com.tryfinch.api.errors.FinchInvalidDataException +import java.util.Collections +import java.util.Objects + +class EnrolledIndividualBenifit +private constructor( + private val jobId: JsonField, + private val additionalProperties: MutableMap, +) { + + @JsonCreator + private constructor( + @JsonProperty("job_id") @ExcludeMissing jobId: JsonField = JsonMissing.of() + ) : this(jobId, mutableMapOf()) + + /** + * @throws FinchInvalidDataException if the JSON field has an unexpected type or is unexpectedly + * missing or null (e.g. if the server responded with an unexpected value). + */ + fun jobId(): String = jobId.getRequired("job_id") + + /** + * Returns the raw JSON value of [jobId]. + * + * Unlike [jobId], this method doesn't throw if the JSON field has an unexpected type. + */ + @JsonProperty("job_id") @ExcludeMissing fun _jobId(): JsonField = jobId + + @JsonAnySetter + private fun putAdditionalProperty(key: String, value: JsonValue) { + additionalProperties.put(key, value) + } + + @JsonAnyGetter + @ExcludeMissing + fun _additionalProperties(): Map = + Collections.unmodifiableMap(additionalProperties) + + fun toBuilder() = Builder().from(this) + + companion object { + + /** + * Returns a mutable builder for constructing an instance of [EnrolledIndividualBenifit]. + * + * The following fields are required: + * ```java + * .jobId() + * ``` + */ + @JvmStatic fun builder() = Builder() + } + + /** A builder for [EnrolledIndividualBenifit]. */ + class Builder internal constructor() { + + private var jobId: JsonField? = null + private var additionalProperties: MutableMap = mutableMapOf() + + @JvmSynthetic + internal fun from(enrolledIndividualBenifit: EnrolledIndividualBenifit) = apply { + jobId = enrolledIndividualBenifit.jobId + additionalProperties = enrolledIndividualBenifit.additionalProperties.toMutableMap() + } + + fun jobId(jobId: String) = jobId(JsonField.of(jobId)) + + /** + * Sets [Builder.jobId] to an arbitrary JSON value. + * + * You should usually call [Builder.jobId] with a well-typed [String] value instead. This + * method is primarily for setting the field to an undocumented or not yet supported value. + */ + fun jobId(jobId: JsonField) = apply { this.jobId = jobId } + + fun additionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.clear() + putAllAdditionalProperties(additionalProperties) + } + + fun putAdditionalProperty(key: String, value: JsonValue) = apply { + additionalProperties.put(key, value) + } + + fun putAllAdditionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.putAll(additionalProperties) + } + + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + + /** + * Returns an immutable instance of [EnrolledIndividualBenifit]. + * + * Further updates to this [Builder] will not mutate the returned instance. + * + * The following fields are required: + * ```java + * .jobId() + * ``` + * + * @throws IllegalStateException if any required field is unset. + */ + fun build(): EnrolledIndividualBenifit = + EnrolledIndividualBenifit( + checkRequired("jobId", jobId), + additionalProperties.toMutableMap(), + ) + } + + private var validated: Boolean = false + + fun validate(): EnrolledIndividualBenifit = apply { + if (validated) { + return@apply + } + + jobId() + validated = true + } + + fun isValid(): Boolean = + try { + validate() + true + } catch (e: FinchInvalidDataException) { + false + } + + /** + * Returns a score indicating how many valid values are contained in this object recursively. + * + * Used for best match union deserialization. + */ + @JvmSynthetic internal fun validity(): Int = (if (jobId.asKnown().isPresent) 1 else 0) + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is EnrolledIndividualBenifit && jobId == other.jobId && additionalProperties == other.additionalProperties /* spotless:on */ + } + + /* spotless:off */ + private val hashCode: Int by lazy { Objects.hash(jobId, additionalProperties) } + /* spotless:on */ + + override fun hashCode(): Int = hashCode + + override fun toString() = + "EnrolledIndividualBenifit{jobId=$jobId, additionalProperties=$additionalProperties}" +} diff --git a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/HrisBenefitIndividualUnenrollManyPage.kt b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/HrisBenefitIndividualUnenrollManyPage.kt deleted file mode 100644 index ae03ec8f..00000000 --- a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/HrisBenefitIndividualUnenrollManyPage.kt +++ /dev/null @@ -1,80 +0,0 @@ -// File generated from our OpenAPI spec by Stainless. - -package com.tryfinch.api.models - -import com.tryfinch.api.services.blocking.hris.benefits.IndividualService -import java.util.Objects -import java.util.Optional -import java.util.stream.Stream -import java.util.stream.StreamSupport -import kotlin.jvm.optionals.getOrNull -import kotlin.jvm.optionals.toList - -/** Unenroll individuals from a deduction or contribution */ -class HrisBenefitIndividualUnenrollManyPage -private constructor( - private val individualsService: IndividualService, - private val params: HrisBenefitIndividualUnenrollManyParams, - private val items: List, -) { - - /** Returns the response that this page was parsed from. */ - fun items(): List = items - - /** Delegates to [List], but gracefully handles missing data. */ - fun items(): List = - items.flatMap { it.toList() }.getOrNull() ?: emptyList() - - override fun equals(other: Any?): Boolean { - if (this === other) { - return true - } - - return /* spotless:off */ other is HrisBenefitIndividualUnenrollManyPage && individualsService == other.individualsService && params == other.params && items == other.items /* spotless:on */ - } - - override fun hashCode(): Int = /* spotless:off */ Objects.hash(individualsService, params, items) /* spotless:on */ - - override fun toString() = - "HrisBenefitIndividualUnenrollManyPage{individualsService=$individualsService, params=$params, items=$items}" - - fun hasNextPage(): Boolean = items.isNotEmpty() - - fun getNextPageParams(): Optional = Optional.empty() - - fun getNextPage(): Optional { - return getNextPageParams().map { individualsService.unenrollMany(it) } - } - - fun autoPager(): AutoPager = AutoPager(this) - - companion object { - - @JvmStatic - fun of( - individualsService: IndividualService, - params: HrisBenefitIndividualUnenrollManyParams, - items: List, - ) = HrisBenefitIndividualUnenrollManyPage(individualsService, params, items) - } - - class AutoPager(private val firstPage: HrisBenefitIndividualUnenrollManyPage) : - Iterable { - - override fun iterator(): Iterator = iterator { - var page = firstPage - var index = 0 - while (true) { - while (index < page.items().size) { - yield(page.items()[index++]) - } - page = page.getNextPage().getOrNull() ?: break - index = 0 - } - } - - fun stream(): Stream { - return StreamSupport.stream(spliterator(), false) - } - } -} diff --git a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/HrisBenefitIndividualUnenrollManyPageAsync.kt b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/HrisBenefitIndividualUnenrollManyPageAsync.kt deleted file mode 100644 index 88f96491..00000000 --- a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/HrisBenefitIndividualUnenrollManyPageAsync.kt +++ /dev/null @@ -1,92 +0,0 @@ -// File generated from our OpenAPI spec by Stainless. - -package com.tryfinch.api.models - -import com.tryfinch.api.services.async.hris.benefits.IndividualServiceAsync -import java.util.Objects -import java.util.Optional -import java.util.concurrent.CompletableFuture -import java.util.concurrent.Executor -import java.util.function.Predicate -import kotlin.jvm.optionals.getOrNull -import kotlin.jvm.optionals.toList - -/** Unenroll individuals from a deduction or contribution */ -class HrisBenefitIndividualUnenrollManyPageAsync -private constructor( - private val individualsService: IndividualServiceAsync, - private val params: HrisBenefitIndividualUnenrollManyParams, - private val items: List, -) { - - /** Returns the response that this page was parsed from. */ - fun items(): List = items - - /** Delegates to [List], but gracefully handles missing data. */ - fun items(): List = - items.flatMap { it.toList() }.getOrNull() ?: emptyList() - - override fun equals(other: Any?): Boolean { - if (this === other) { - return true - } - - return /* spotless:off */ other is HrisBenefitIndividualUnenrollManyPageAsync && individualsService == other.individualsService && params == other.params && items == other.items /* spotless:on */ - } - - override fun hashCode(): Int = /* spotless:off */ Objects.hash(individualsService, params, items) /* spotless:on */ - - override fun toString() = - "HrisBenefitIndividualUnenrollManyPageAsync{individualsService=$individualsService, params=$params, items=$items}" - - fun hasNextPage(): Boolean = items.isNotEmpty() - - fun getNextPageParams(): Optional = Optional.empty() - - fun getNextPage(): CompletableFuture> { - return getNextPageParams() - .map { individualsService.unenrollMany(it).thenApply { Optional.of(it) } } - .orElseGet { CompletableFuture.completedFuture(Optional.empty()) } - } - - fun autoPager(): AutoPager = AutoPager(this) - - companion object { - - @JvmStatic - fun of( - individualsService: IndividualServiceAsync, - params: HrisBenefitIndividualUnenrollManyParams, - items: List, - ) = HrisBenefitIndividualUnenrollManyPageAsync(individualsService, params, items) - } - - class AutoPager(private val firstPage: HrisBenefitIndividualUnenrollManyPageAsync) { - - fun forEach( - action: Predicate, - executor: Executor, - ): CompletableFuture { - fun CompletableFuture>.forEach( - action: (IndividualUnenrollManyResponse) -> Boolean, - executor: Executor, - ): CompletableFuture = - thenComposeAsync( - { page -> - page - .filter { it.items().all(action) } - .map { it.getNextPage().forEach(action, executor) } - .orElseGet { CompletableFuture.completedFuture(null) } - }, - executor, - ) - return CompletableFuture.completedFuture(Optional.of(firstPage)) - .forEach(action::test, executor) - } - - fun toList(executor: Executor): CompletableFuture> { - val values = mutableListOf() - return forEach(values::add, executor).thenApply { values } - } - } -} diff --git a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/IndividualUnenrollManyResponse.kt b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/IndividualUnenrollManyResponse.kt index f568b3c3..6641101c 100644 --- a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/IndividualUnenrollManyResponse.kt +++ b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/IndividualUnenrollManyResponse.kt @@ -5,16 +5,39 @@ package com.tryfinch.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.annotation.JsonProperty import com.tryfinch.api.core.ExcludeMissing +import com.tryfinch.api.core.JsonField +import com.tryfinch.api.core.JsonMissing import com.tryfinch.api.core.JsonValue +import com.tryfinch.api.core.checkRequired import com.tryfinch.api.errors.FinchInvalidDataException import java.util.Collections import java.util.Objects class IndividualUnenrollManyResponse -private constructor(private val additionalProperties: MutableMap) { +private constructor( + private val jobId: JsonField, + private val additionalProperties: MutableMap, +) { - @JsonCreator private constructor() : this(mutableMapOf()) + @JsonCreator + private constructor( + @JsonProperty("job_id") @ExcludeMissing jobId: JsonField = JsonMissing.of() + ) : this(jobId, mutableMapOf()) + + /** + * @throws FinchInvalidDataException if the JSON field has an unexpected type or is unexpectedly + * missing or null (e.g. if the server responded with an unexpected value). + */ + fun jobId(): String = jobId.getRequired("job_id") + + /** + * Returns the raw JSON value of [jobId]. + * + * Unlike [jobId], this method doesn't throw if the JSON field has an unexpected type. + */ + @JsonProperty("job_id") @ExcludeMissing fun _jobId(): JsonField = jobId @JsonAnySetter private fun putAdditionalProperty(key: String, value: JsonValue) { @@ -33,6 +56,11 @@ private constructor(private val additionalProperties: MutableMap? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(individualUnenrollManyResponse: IndividualUnenrollManyResponse) = apply { + jobId = individualUnenrollManyResponse.jobId additionalProperties = individualUnenrollManyResponse.additionalProperties.toMutableMap() } + fun jobId(jobId: String) = jobId(JsonField.of(jobId)) + + /** + * Sets [Builder.jobId] to an arbitrary JSON value. + * + * You should usually call [Builder.jobId] with a well-typed [String] value instead. This + * method is primarily for setting the field to an undocumented or not yet supported value. + */ + fun jobId(jobId: JsonField) = apply { this.jobId = jobId } + fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() putAllAdditionalProperties(additionalProperties) @@ -71,9 +111,19 @@ private constructor(private val additionalProperties: MutableMap = + ): CompletableFuture = unenrollMany(params, RequestOptions.none()) /** @see [unenrollMany] */ fun unenrollMany( params: HrisBenefitIndividualUnenrollManyParams, requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture + ): CompletableFuture /** * A view of [IndividualServiceAsync] that provides access to raw HTTP responses for each @@ -102,7 +102,7 @@ interface IndividualServiceAsync { @MustBeClosed fun unenrollMany( params: HrisBenefitIndividualUnenrollManyParams - ): CompletableFuture> = + ): CompletableFuture> = unenrollMany(params, RequestOptions.none()) /** @see [unenrollMany] */ @@ -110,6 +110,6 @@ interface IndividualServiceAsync { fun unenrollMany( params: HrisBenefitIndividualUnenrollManyParams, requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture> + ): CompletableFuture> } } diff --git a/finch-java-core/src/main/kotlin/com/tryfinch/api/services/async/hris/benefits/IndividualServiceAsyncImpl.kt b/finch-java-core/src/main/kotlin/com/tryfinch/api/services/async/hris/benefits/IndividualServiceAsyncImpl.kt index f7e4750d..2ea6a3b6 100644 --- a/finch-java-core/src/main/kotlin/com/tryfinch/api/services/async/hris/benefits/IndividualServiceAsyncImpl.kt +++ b/finch-java-core/src/main/kotlin/com/tryfinch/api/services/async/hris/benefits/IndividualServiceAsyncImpl.kt @@ -18,7 +18,6 @@ import com.tryfinch.api.core.prepareAsync import com.tryfinch.api.models.HrisBenefitIndividualEnrolledIdsParams import com.tryfinch.api.models.HrisBenefitIndividualRetrieveManyBenefitsPageAsync import com.tryfinch.api.models.HrisBenefitIndividualRetrieveManyBenefitsParams -import com.tryfinch.api.models.HrisBenefitIndividualUnenrollManyPageAsync import com.tryfinch.api.models.HrisBenefitIndividualUnenrollManyParams import com.tryfinch.api.models.IndividualBenefit import com.tryfinch.api.models.IndividualEnrolledIdsResponse @@ -51,7 +50,7 @@ class IndividualServiceAsyncImpl internal constructor(private val clientOptions: override fun unenrollMany( params: HrisBenefitIndividualUnenrollManyParams, requestOptions: RequestOptions, - ): CompletableFuture = + ): CompletableFuture = // delete /employer/benefits/{benefit_id}/individuals withRawResponse().unenrollMany(params, requestOptions).thenApply { it.parse() } @@ -127,14 +126,14 @@ class IndividualServiceAsyncImpl internal constructor(private val clientOptions: } } - private val unenrollManyHandler: Handler> = - jsonHandler>(clientOptions.jsonMapper) + private val unenrollManyHandler: Handler = + jsonHandler(clientOptions.jsonMapper) .withErrorHandler(errorHandler) override fun unenrollMany( params: HrisBenefitIndividualUnenrollManyParams, requestOptions: RequestOptions, - ): CompletableFuture> { + ): CompletableFuture> { val request = HttpRequest.builder() .method(HttpMethod.DELETE) @@ -151,16 +150,9 @@ class IndividualServiceAsyncImpl internal constructor(private val clientOptions: .use { unenrollManyHandler.handle(it) } .also { if (requestOptions.responseValidation!!) { - it.forEach { it.validate() } + it.validate() } } - .let { - HrisBenefitIndividualUnenrollManyPageAsync.of( - IndividualServiceAsyncImpl(clientOptions), - params, - it, - ) - } } } } diff --git a/finch-java-core/src/main/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualService.kt b/finch-java-core/src/main/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualService.kt index f0f36e43..e6f88fd1 100644 --- a/finch-java-core/src/main/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualService.kt +++ b/finch-java-core/src/main/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualService.kt @@ -8,9 +8,9 @@ import com.tryfinch.api.core.http.HttpResponseFor import com.tryfinch.api.models.HrisBenefitIndividualEnrolledIdsParams import com.tryfinch.api.models.HrisBenefitIndividualRetrieveManyBenefitsPage import com.tryfinch.api.models.HrisBenefitIndividualRetrieveManyBenefitsParams -import com.tryfinch.api.models.HrisBenefitIndividualUnenrollManyPage import com.tryfinch.api.models.HrisBenefitIndividualUnenrollManyParams import com.tryfinch.api.models.IndividualEnrolledIdsResponse +import com.tryfinch.api.models.IndividualUnenrollManyResponse interface IndividualService { @@ -44,13 +44,13 @@ interface IndividualService { /** Unenroll individuals from a deduction or contribution */ fun unenrollMany( params: HrisBenefitIndividualUnenrollManyParams - ): HrisBenefitIndividualUnenrollManyPage = unenrollMany(params, RequestOptions.none()) + ): IndividualUnenrollManyResponse = unenrollMany(params, RequestOptions.none()) /** @see [unenrollMany] */ fun unenrollMany( params: HrisBenefitIndividualUnenrollManyParams, requestOptions: RequestOptions = RequestOptions.none(), - ): HrisBenefitIndividualUnenrollManyPage + ): IndividualUnenrollManyResponse /** A view of [IndividualService] that provides access to raw HTTP responses for each method. */ interface WithRawResponse { @@ -96,7 +96,7 @@ interface IndividualService { @MustBeClosed fun unenrollMany( params: HrisBenefitIndividualUnenrollManyParams - ): HttpResponseFor = + ): HttpResponseFor = unenrollMany(params, RequestOptions.none()) /** @see [unenrollMany] */ @@ -104,6 +104,6 @@ interface IndividualService { fun unenrollMany( params: HrisBenefitIndividualUnenrollManyParams, requestOptions: RequestOptions = RequestOptions.none(), - ): HttpResponseFor + ): HttpResponseFor } } diff --git a/finch-java-core/src/main/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualServiceImpl.kt b/finch-java-core/src/main/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualServiceImpl.kt index a7b88f24..ca75feab 100644 --- a/finch-java-core/src/main/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualServiceImpl.kt +++ b/finch-java-core/src/main/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualServiceImpl.kt @@ -18,7 +18,6 @@ import com.tryfinch.api.core.prepare import com.tryfinch.api.models.HrisBenefitIndividualEnrolledIdsParams import com.tryfinch.api.models.HrisBenefitIndividualRetrieveManyBenefitsPage import com.tryfinch.api.models.HrisBenefitIndividualRetrieveManyBenefitsParams -import com.tryfinch.api.models.HrisBenefitIndividualUnenrollManyPage import com.tryfinch.api.models.HrisBenefitIndividualUnenrollManyParams import com.tryfinch.api.models.IndividualBenefit import com.tryfinch.api.models.IndividualEnrolledIdsResponse @@ -50,7 +49,7 @@ class IndividualServiceImpl internal constructor(private val clientOptions: Clie override fun unenrollMany( params: HrisBenefitIndividualUnenrollManyParams, requestOptions: RequestOptions, - ): HrisBenefitIndividualUnenrollManyPage = + ): IndividualUnenrollManyResponse = // delete /employer/benefits/{benefit_id}/individuals withRawResponse().unenrollMany(params, requestOptions).parse() @@ -120,14 +119,14 @@ class IndividualServiceImpl internal constructor(private val clientOptions: Clie } } - private val unenrollManyHandler: Handler> = - jsonHandler>(clientOptions.jsonMapper) + private val unenrollManyHandler: Handler = + jsonHandler(clientOptions.jsonMapper) .withErrorHandler(errorHandler) override fun unenrollMany( params: HrisBenefitIndividualUnenrollManyParams, requestOptions: RequestOptions, - ): HttpResponseFor { + ): HttpResponseFor { val request = HttpRequest.builder() .method(HttpMethod.DELETE) @@ -142,16 +141,9 @@ class IndividualServiceImpl internal constructor(private val clientOptions: Clie .use { unenrollManyHandler.handle(it) } .also { if (requestOptions.responseValidation!!) { - it.forEach { it.validate() } + it.validate() } } - .let { - HrisBenefitIndividualUnenrollManyPage.of( - IndividualServiceImpl(clientOptions), - params, - it, - ) - } } } } diff --git a/finch-java-core/src/test/kotlin/com/tryfinch/api/models/EnrolledIndividualBenifitTest.kt b/finch-java-core/src/test/kotlin/com/tryfinch/api/models/EnrolledIndividualBenifitTest.kt new file mode 100644 index 00000000..633d13fb --- /dev/null +++ b/finch-java-core/src/test/kotlin/com/tryfinch/api/models/EnrolledIndividualBenifitTest.kt @@ -0,0 +1,39 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.tryfinch.api.models + +import com.fasterxml.jackson.module.kotlin.jacksonTypeRef +import com.tryfinch.api.core.jsonMapper +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test + +internal class EnrolledIndividualBenifitTest { + + @Test + fun create() { + val enrolledIndividualBenifit = + EnrolledIndividualBenifit.builder() + .jobId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") + .build() + + assertThat(enrolledIndividualBenifit.jobId()) + .isEqualTo("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") + } + + @Test + fun roundtrip() { + val jsonMapper = jsonMapper() + val enrolledIndividualBenifit = + EnrolledIndividualBenifit.builder() + .jobId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") + .build() + + val roundtrippedEnrolledIndividualBenifit = + jsonMapper.readValue( + jsonMapper.writeValueAsString(enrolledIndividualBenifit), + jacksonTypeRef(), + ) + + assertThat(roundtrippedEnrolledIndividualBenifit).isEqualTo(enrolledIndividualBenifit) + } +} diff --git a/finch-java-core/src/test/kotlin/com/tryfinch/api/models/IndividualUnenrollManyResponseTest.kt b/finch-java-core/src/test/kotlin/com/tryfinch/api/models/IndividualUnenrollManyResponseTest.kt index fca952aa..f5ad98fe 100644 --- a/finch-java-core/src/test/kotlin/com/tryfinch/api/models/IndividualUnenrollManyResponseTest.kt +++ b/finch-java-core/src/test/kotlin/com/tryfinch/api/models/IndividualUnenrollManyResponseTest.kt @@ -11,13 +11,22 @@ internal class IndividualUnenrollManyResponseTest { @Test fun create() { - val individualUnenrollManyResponse = IndividualUnenrollManyResponse.builder().build() + val individualUnenrollManyResponse = + IndividualUnenrollManyResponse.builder() + .jobId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") + .build() + + assertThat(individualUnenrollManyResponse.jobId()) + .isEqualTo("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") } @Test fun roundtrip() { val jsonMapper = jsonMapper() - val individualUnenrollManyResponse = IndividualUnenrollManyResponse.builder().build() + val individualUnenrollManyResponse = + IndividualUnenrollManyResponse.builder() + .jobId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") + .build() val roundtrippedIndividualUnenrollManyResponse = jsonMapper.readValue( diff --git a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/hris/benefits/IndividualServiceAsyncTest.kt b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/hris/benefits/IndividualServiceAsyncTest.kt index bb31f78d..bd192a83 100644 --- a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/hris/benefits/IndividualServiceAsyncTest.kt +++ b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/hris/benefits/IndividualServiceAsyncTest.kt @@ -60,12 +60,15 @@ internal class IndividualServiceAsyncTest { .build() val individualServiceAsync = client.hris().benefits().individuals() - val pageFuture = + val responseFuture = individualServiceAsync.unenrollMany( - HrisBenefitIndividualUnenrollManyParams.builder().benefitId("benefit_id").build() + HrisBenefitIndividualUnenrollManyParams.builder() + .benefitId("benefit_id") + .addIndividualId("string") + .build() ) - val page = pageFuture.get() - page.items().forEach { it.validate() } + val response = responseFuture.get() + response.validate() } } diff --git a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualServiceTest.kt b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualServiceTest.kt index 8a74402c..9e5ffd30 100644 --- a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualServiceTest.kt +++ b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/hris/benefits/IndividualServiceTest.kt @@ -58,11 +58,14 @@ internal class IndividualServiceTest { .build() val individualService = client.hris().benefits().individuals() - val page = + val response = individualService.unenrollMany( - HrisBenefitIndividualUnenrollManyParams.builder().benefitId("benefit_id").build() + HrisBenefitIndividualUnenrollManyParams.builder() + .benefitId("benefit_id") + .addIndividualId("string") + .build() ) - page.items().forEach { it.validate() } + response.validate() } }