// Path: src/test/java/com/lob/BaseTest.java
// public class BaseTest {
// 
//     @BeforeClass
//     public static void beforeClass() {
//         Lob.init(System.getenv("LOB_API_KEY"));
//     }
// 
// }
// 
// Path: src/main/java/com/lob/Lob.java
// public class Lob {
// 
//     public static final String API_BASE_URL = "https://api.lob.com/v1/";
//     public static final String VERSION = "7.0.0";
// 
//     public static String apiKey;
//     public static String apiVersion;
// 
//     public static void init(final String apiKey) {
//         Lob.apiKey = apiKey;
//         Lob.apiVersion = null;
//     }
// 
//     public static void init(final String apiKey, final String apiVersion) {
//         Lob.apiKey = apiKey;
//         Lob.apiVersion = apiVersion;
//     }
// 
// }
// 
// Path: src/main/java/com/lob/net/LobResponse.java
// public class LobResponse<T> {
// 
//     int responseCode;
//     T responseBody;
//     Map<String, List<String>> responseHeaders;
// 
//     public LobResponse(int responseCode, T responseBody) {
//         this.responseCode = responseCode;
//         this.responseBody = responseBody;
//         this.responseHeaders = null;
//     }
// 
//     public LobResponse(int responseCode, T responseBody, Map<String, List<String>> responseHeaders) {
//         this.responseCode = responseCode;
//         this.responseBody = responseBody;
//         this.responseHeaders = responseHeaders;
//     }
// 
//     public int getResponseCode() {
//         return responseCode;
//     }
// 
//     public T getResponseBody() {
//         return responseBody;
//     }
// 
//     public Map<String, List<String>> getResponseHeaders() {
//         return responseHeaders;
//     }
// }


import com.lob.BaseTest;
import com.lob.Lob;
import com.lob.net.LobResponse;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.File;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import static org.hamcrest.core.IsInstanceOf.instanceOf;
import static org.junit.Assert.*;

                        new Address.RequestBuilder()
                                .setName("Donald")
                                .setLine1("185 Berry St Ste 6100")
                                .setCity("San Francisco")
                                .setState("CA")
                                .setZip("94107")
                                .setCountry("US")
                )
                .setBankAccount(VERIFIED_BANK_ACCOUNT)
                .create();

        Check check = response.getResponseBody();

        assertEquals(200, response.getResponseCode());
        assertNotNull(check.getId());
        assertEquals("Hello Check", check.getMessage());
        assertNotNull(check.getUrl());
        assertEquals(VERIFIED_BANK_ACCOUNT, check.getBankAccount().getId());
        assertEquals("check", check.getObject());
    }

    @Test
    public void testCreateFutureCheck() throws Exception {
        ZonedDateTime today = ZonedDateTime.now();
        ZonedDateTime futureDate = today.plusDays(1);

        LobResponse<Check> response = new Check.RequestBuilder()
                .setDescription("Test Future Check")
                .setAmount("1.00")
                .setTo(

// Path: src/test/java/com/lob/BaseTest.java
// public class BaseTest {
// 
//     @BeforeClass
//     public static void beforeClass() {
//         Lob.init(System.getenv("LOB_API_KEY"));
//     }
// 
// }
// 
// Path: src/main/java/com/lob/Lob.java
// public class Lob {
// 
//     public static final String API_BASE_URL = "https://api.lob.com/v1/";
//     public static final String VERSION = "7.0.0";
// 
//     public static String apiKey;
//     public static String apiVersion;
// 
//     public static void init(final String apiKey) {
//         Lob.apiKey = apiKey;
//         Lob.apiVersion = null;
//     }
// 
//     public static void init(final String apiKey, final String apiVersion) {
//         Lob.apiKey = apiKey;
//         Lob.apiVersion = apiVersion;
//     }
// 
// }
// 
// Path: src/main/java/com/lob/net/LobResponse.java
// public class LobResponse<T> {
// 
//     int responseCode;
//     T responseBody;
//     Map<String, List<String>> responseHeaders;
// 
//     public LobResponse(int responseCode, T responseBody) {
//         this.responseCode = responseCode;
//         this.responseBody = responseBody;
//         this.responseHeaders = null;
//     }
// 
//     public LobResponse(int responseCode, T responseBody, Map<String, List<String>> responseHeaders) {
//         this.responseCode = responseCode;
//         this.responseBody = responseBody;
//         this.responseHeaders = responseHeaders;
//     }
// 
//     public int getResponseCode() {
//         return responseCode;
//     }
// 
//     public T getResponseBody() {
//         return responseBody;
//     }
// 
//     public Map<String, List<String>> getResponseHeaders() {
//         return responseHeaders;
//     }
// }


// Path: src/test/java/com/lob/model/CheckTest.java
import com.lob.BaseTest;
import com.lob.Lob;
import com.lob.net.LobResponse;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.File;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import static org.hamcrest.core.IsInstanceOf.instanceOf;
import static org.junit.Assert.*;

                        new Address.RequestBuilder()
                                .setName("Donald")
                                .setLine1("185 Berry St Ste 6100")
                                .setCity("San Francisco")
                                .setState("CA")
                                .setZip("94107")
                                .setCountry("US")
                )
                .setBankAccount(VERIFIED_BANK_ACCOUNT)
                .create();

        Check check = response.getResponseBody();

        assertEquals(200, response.getResponseCode());
        assertNotNull(check.getId());
        assertEquals("Hello Check", check.getMessage());
        assertNotNull(check.getUrl());
        assertEquals(VERIFIED_BANK_ACCOUNT, check.getBankAccount().getId());
        assertEquals("check", check.getObject());
    }

    @Test
    public void testCreateFutureCheck() throws Exception {
        ZonedDateTime today = ZonedDateTime.now();
        ZonedDateTime futureDate = today.plusDays(1);

        LobResponse<Check> response = new Check.RequestBuilder()
                .setDescription("Test Future Check")
                .setAmount("1.00")
                .setTo(

                        new Address.RequestBuilder()
