// Path: src/test/java/com/github/rwitzel/couchrepository/model/Exotic.java
// @JsonInclude(Include.NON_NULL)
// public class Exotic {
// 
// 	/**
// 	 * CouchDB-specific property that allows us to distinct exotic documents from other documents.
// 	 */
// 	@JsonProperty("type")
// 	private String type = "exotic";
// 
// 	/**
// 	 * The ID for CouchDB. Computed from {@link #id}.
// 	 */
// 	@SerializedName("_id")
// 	@JsonProperty("_id")
// 	private String computedKey;
// 
// 	/**
// 	 * The domain-specific ID.
// 	 */
// 	@JsonProperty("internalId")
// 	private ExoticId id;
// 
// 	/**
// 	 * The revision property for CouchDB.
// 	 */
// 	@SerializedName("_rev")
// 	@JsonProperty("_rev")
// 	private String version;
// 
// 	private String data;
// 
// 	public Exotic() {
// 		super();
// 	}
// 
// 	public Exotic(ExoticId id) {
// 		super();
// 		this.id = id;
// 		this.computedKey = id.toCouchId();
// 	}
// 
// 	public String getData() {
// 		return data;
// 	}
// 
// 	public void setData(String data) {
// 		this.data = data;
// 	}
// 
// 	public ExoticId getId() {
// 		return id;
// 	}
// 	
// 	public void setId(ExoticId id) {
// 		this.id = id;
// 	}
// 
// 	public String getComputedKey() {
// 		return computedKey;
// 	}
// 	
// 	public void setComputedKey(String computedKey) {
// 		this.computedKey = computedKey;
// 	}
// 
// 	public String getVersion() {
// 		return version;
// 	}
// 
// 	public void setVersion(String version) {
// 		this.version = version;
// 	}
// 	
// }
// 
// Path: src/test/java/com/github/rwitzel/couchrepository/model/ExoticId.java
// public class ExoticId implements Serializable {
// 
// 	private static final long serialVersionUID = -2640126433764396121L;
// 
// 	private Integer idPart1;
// 
//     private String idPart2;
// 
//     private Boolean idPart3;
// 
//     public ExoticId() {
//         super();
//     }
// 
//     public ExoticId(String couchId) {
//         super();
//         
//         String[] parts = couchId.split("_");
//         this.idPart1 = Integer.parseInt(parts[0]);
//         this.idPart2 = parts[1];
//         this.idPart3 = Boolean.parseBoolean(parts[2]);
//     }
// 
//     public ExoticId(Integer idPart1, String idPart2, Boolean idPart3) {
//         super();
//         this.idPart1 = idPart1;
//         this.idPart2 = idPart2;
//         this.idPart3 = idPart3;
//     }
//     
//     public Integer getIdPart1() {
// 		return idPart1;
// 	}
// 
// 	public String getIdPart2() {
// 		return idPart2;
// 	}
// 
// 	public Boolean getIdPart3() {
// 		return idPart3;
// 	}
// 
// 	public String toCouchId() {
//         return toCouchId(idPart1, idPart2, idPart3);
//     }
// 
//     public static String toCouchId(Integer idPart1, String idPart2, Boolean idPart3) {
//         return idPart1 + "_" + idPart2 + "_" + idPart3;
//     }
// }


import static java.util.Collections.singleton;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Optional;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.github.rwitzel.couchrepository.model.Exotic;
import com.github.rwitzel.couchrepository.model.ExoticId;
package com.github.rwitzel.couchrepository.api;





/**
 * Tests entities with custom ID and revision attributes.
 * 
 * @author rwitzel
 */
public abstract class AbstractExoticTest extends AbstractCustomImplementationTest {

    @Autowired
// Path: src/test/java/com/github/rwitzel/couchrepository/model/Exotic.java
// @JsonInclude(Include.NON_NULL)
// public class Exotic {
// 
// 	/**
// 	 * CouchDB-specific property that allows us to distinct exotic documents from other documents.
// 	 */
// 	@JsonProperty("type")
// 	private String type = "exotic";
// 
// 	/**
// 	 * The ID for CouchDB. Computed from {@link #id}.
// 	 */
// 	@SerializedName("_id")
// 	@JsonProperty("_id")
// 	private String computedKey;
// 
// 	/**
// 	 * The domain-specific ID.
// 	 */
// 	@JsonProperty("internalId")
// 	private ExoticId id;
// 
// 	/**
// 	 * The revision property for CouchDB.
// 	 */
// 	@SerializedName("_rev")
// 	@JsonProperty("_rev")
// 	private String version;
// 
// 	private String data;
// 
// 	public Exotic() {
// 		super();
// 	}
// 
// 	public Exotic(ExoticId id) {
// 		super();
// 		this.id = id;
// 		this.computedKey = id.toCouchId();
// 	}
// 
// 	public String getData() {
// 		return data;
// 	}
// 
// 	public void setData(String data) {
// 		this.data = data;
// 	}
// 
// 	public ExoticId getId() {
// 		return id;
// 	}
// 	
// 	public void setId(ExoticId id) {
// 		this.id = id;
// 	}
// 
// 	public String getComputedKey() {
// 		return computedKey;
// 	}
// 	
// 	public void setComputedKey(String computedKey) {
// 		this.computedKey = computedKey;
// 	}
// 
// 	public String getVersion() {
// 		return version;
// 	}
// 
// 	public void setVersion(String version) {
// 		this.version = version;
// 	}
// 	
// }
// 
// Path: src/test/java/com/github/rwitzel/couchrepository/model/ExoticId.java
// public class ExoticId implements Serializable {
// 
// 	private static final long serialVersionUID = -2640126433764396121L;
// 
// 	private Integer idPart1;
// 
//     private String idPart2;
// 
//     private Boolean idPart3;
// 
//     public ExoticId() {
//         super();
//     }
// 
//     public ExoticId(String couchId) {
//         super();
//         
//         String[] parts = couchId.split("_");
//         this.idPart1 = Integer.parseInt(parts[0]);
//         this.idPart2 = parts[1];
//         this.idPart3 = Boolean.parseBoolean(parts[2]);
//     }
// 
//     public ExoticId(Integer idPart1, String idPart2, Boolean idPart3) {
//         super();
//         this.idPart1 = idPart1;
//         this.idPart2 = idPart2;
//         this.idPart3 = idPart3;
//     }
//     
//     public Integer getIdPart1() {
// 		return idPart1;
// 	}
// 
// 	public String getIdPart2() {
// 		return idPart2;
// 	}
// 
// 	public Boolean getIdPart3() {
// 		return idPart3;
// 	}
// 
// 	public String toCouchId() {
//         return toCouchId(idPart1, idPart2, idPart3);
//     }
// 
//     public static String toCouchId(Integer idPart1, String idPart2, Boolean idPart3) {
//         return idPart1 + "_" + idPart2 + "_" + idPart3;
//     }
// }


// Path: src/test/java/com/github/rwitzel/couchrepository/api/AbstractExoticTest.java
import static java.util.Collections.singleton;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.Optional;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.github.rwitzel.couchrepository.model.Exotic;
import com.github.rwitzel.couchrepository.model.ExoticId;

package com.github.rwitzel.couchrepository.api;





/**
 * Tests entities with custom ID and revision attributes.
 * 
 * @author rwitzel
 */
public abstract class AbstractExoticTest extends AbstractCustomImplementationTest {

    @Autowired
    CouchDbCrudRepository<Exotic, ExoticId> exoticRepository;