// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) TypeSpec Code Generator.

package client.naming.generated;

// The Java test files under 'generated' package are generated for your reference.
// If you wish to modify these files, please copy them out of the 'generated' package, and modify there.
// See https://aka.ms/azsdk/dpg/java/tests for guide on adding a test.

import client.naming.HeaderClient;
import client.naming.ModelClient;
import client.naming.NamingClient;
import client.naming.NamingClientBuilder;
import client.naming.PropertyClient;
import client.naming.UnionEnumClient;
import com.azure.core.http.policy.HttpLogDetailLevel;
import com.azure.core.http.policy.HttpLogOptions;
import com.azure.core.test.TestMode;
import com.azure.core.test.TestProxyTestBase;
import com.azure.core.util.Configuration;

class NamingClientTestBase extends TestProxyTestBase {
    protected NamingClient namingClient;

    protected PropertyClient propertyClient;

    protected HeaderClient headerClient;

    protected ModelClient modelClient;

    protected UnionEnumClient unionEnumClient;

    @Override
    protected void beforeTest() {
        NamingClientBuilder namingClientbuilder = new NamingClientBuilder()
            .endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "http://localhost:3000"))
            .httpClient(getHttpClientOrUsePlayback(getHttpClients().findFirst().orElse(null)))
            .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BASIC));
        if (getTestMode() == TestMode.RECORD) {
            namingClientbuilder.addPolicy(interceptorManager.getRecordPolicy());
        }
        namingClient = namingClientbuilder.buildClient();

        NamingClientBuilder propertyClientbuilder = new NamingClientBuilder()
            .endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "http://localhost:3000"))
            .httpClient(getHttpClientOrUsePlayback(getHttpClients().findFirst().orElse(null)))
            .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BASIC));
        if (getTestMode() == TestMode.RECORD) {
            propertyClientbuilder.addPolicy(interceptorManager.getRecordPolicy());
        }
        propertyClient = propertyClientbuilder.buildPropertyClient();

        NamingClientBuilder headerClientbuilder = new NamingClientBuilder()
            .endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "http://localhost:3000"))
            .httpClient(getHttpClientOrUsePlayback(getHttpClients().findFirst().orElse(null)))
            .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BASIC));
        if (getTestMode() == TestMode.RECORD) {
            headerClientbuilder.addPolicy(interceptorManager.getRecordPolicy());
        }
        headerClient = headerClientbuilder.buildHeaderClient();

        NamingClientBuilder modelClientbuilder = new NamingClientBuilder()
            .endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "http://localhost:3000"))
            .httpClient(getHttpClientOrUsePlayback(getHttpClients().findFirst().orElse(null)))
            .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BASIC));
        if (getTestMode() == TestMode.RECORD) {
            modelClientbuilder.addPolicy(interceptorManager.getRecordPolicy());
        }
        modelClient = modelClientbuilder.buildModelClient();

        NamingClientBuilder unionEnumClientbuilder = new NamingClientBuilder()
            .endpoint(Configuration.getGlobalConfiguration().get("ENDPOINT", "http://localhost:3000"))
            .httpClient(getHttpClientOrUsePlayback(getHttpClients().findFirst().orElse(null)))
            .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BASIC));
        if (getTestMode() == TestMode.RECORD) {
            unionEnumClientbuilder.addPolicy(interceptorManager.getRecordPolicy());
        }
        unionEnumClient = unionEnumClientbuilder.buildUnionEnumClient();

    }
}
