// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/BookService.java
// public interface BookService {
// 
// 	QueryResult findBooksByTitle(String q);
// 
// 	Item findBookById(String id);
// 
// }
// 
// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/Item.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class Item implements Serializable {
// 
// 	private static final long serialVersionUID = -6854695261165137027L;
// 	String id;
// 	String selfLink;
// 	VolumeInfo volumeInfo;
// 
// 	public String getId() {
// 		return id;
// 	}
// 
// 	public void setId(String id) {
// 		this.id = id;
// 	}
// 
// 	public String getSelfLink() {
// 		return selfLink;
// 	}
// 
// 	public void setSelfLink(String selfLink) {
// 		this.selfLink = selfLink;
// 	}
// 
// 	public VolumeInfo getVolumeInfo() {
// 		return volumeInfo;
// 	}
// 
// 	public void setVolumeInfo(VolumeInfo volumeInfo) {
// 		this.volumeInfo = volumeInfo;
// 	}
// }
// 
// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/QueryResult.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class QueryResult implements Serializable {
// 
// 	private static final long serialVersionUID = 8453337880965373284L;
// 	private int totalItems;
// 	List<Item> items;
// 
// 	public int getTotalItems() {
// 		return totalItems;
// 	}
// 
// 	public void setTotalItems(int totalItems) {
// 		this.totalItems = totalItems;
// 	}
// 
// 	public List<Item> getItems() {
// 		return items;
// 	}
// 
// 	public void setItems(List<Item> items) {
// 		this.items = items;
// 	}
// 
// }
// 
// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/VolumeInfo.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class VolumeInfo implements Serializable {
// 	private static final long serialVersionUID = 3162880556852067979L;
// 	String title;
// 	List<String> authors;
// 	String publisher;
// 	String publishedDate;
// 	String description;
// 	List<String> categories;
// 
// 	public String getTitle() {
// 		return title;
// 	}
// 
// 	public void setTitle(String title) {
// 		this.title = title;
// 	}
// 
// 	public List<String> getAuthors() {
// 		return authors;
// 	}
// 
// 	public void setAuthors(List<String> authors) {
// 		this.authors = authors;
// 	}
// 
// 	public String getPublisher() {
// 		return publisher;
// 	}
// 
// 	public void setPublisher(String publisher) {
// 		this.publisher = publisher;
// 	}
// 
// 	public String getPublishedDate() {
// 		return publishedDate;
// 	}
// 
// 	public void setPublishedDate(String publishedDate) {
// 		this.publishedDate = publishedDate;
// 	}
// 
// 	public String getDescription() {
// 		return description;
// 	}
// 
// 	public void setDescription(String description) {
// 		this.description = description;
// 	}
// 
// 	public List<String> getCategories() {
// 		return categories;
// 	}
// 
// 	public void setCategories(List<String> categories) {
// 		this.categories = categories;
// 	}
// }
// 
// Path: src/main/java/com/github/ggeorgovassilis/springjsonmapper/spring/SpringRestInvokerProxyFactoryBean.java
// public class SpringRestInvokerProxyFactoryBean extends BaseRestInvokerProxyFactoryBean {
// 
// 	@Override
// 	protected MethodInspector constructDefaultMethodInspector() {
// 		List<MappingAnnotationResolver<? extends Annotation>> mappings = Arrays.asList(new RequestMappingAnnotationResolver(),
// 				new PutMappingAnnotationResolver(),
// 				new PostMappingAnnotationResolver(),
// 				new PatchMappingAnnotationResolver(),
// 				new GetMappingAnnotationResolver(),
// 				new DeleteMappingAnnotationResolver());
// 
// 		MappingAnnotationsInspector mappingAnnotationsInspector = new MappingAnnotationsInspector(mappings);
// 		SpringAnnotationMethodInspector inspector = new SpringAnnotationMethodInspector(mappingAnnotationsInspector);
// 		inspector.setEmbeddedValueResolver(expressionResolver);
// 		return inspector;
// 	}
// 
// }


import com.github.ggeorgovassilis.springjsonmapper.services.BookService;
import com.github.ggeorgovassilis.springjsonmapper.services.Item;
import com.github.ggeorgovassilis.springjsonmapper.services.QueryResult;
import com.github.ggeorgovassilis.springjsonmapper.services.VolumeInfo;
import com.github.ggeorgovassilis.springjsonmapper.spring.SpringRestInvokerProxyFactoryBean;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.hamcrest.Matchers.hasProperty;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
package com.github.ggeorgovassilis.springjsonmapper.integrationtests;




/**
 * Integration test with the google books API using the
 * {@link SpringRestInvokerProxyFactoryBean}
 * 
 * @author george georgovassilis
 */
@ExtendWith(SpringExtension.class)
public abstract class AbstractGoogleBooksApiTest {

	@Autowired
// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/BookService.java
// public interface BookService {
// 
// 	QueryResult findBooksByTitle(String q);
// 
// 	Item findBookById(String id);
// 
// }
// 
// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/Item.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class Item implements Serializable {
// 
// 	private static final long serialVersionUID = -6854695261165137027L;
// 	String id;
// 	String selfLink;
// 	VolumeInfo volumeInfo;
// 
// 	public String getId() {
// 		return id;
// 	}
// 
// 	public void setId(String id) {
// 		this.id = id;
// 	}
// 
// 	public String getSelfLink() {
// 		return selfLink;
// 	}
// 
// 	public void setSelfLink(String selfLink) {
// 		this.selfLink = selfLink;
// 	}
// 
// 	public VolumeInfo getVolumeInfo() {
// 		return volumeInfo;
// 	}
// 
// 	public void setVolumeInfo(VolumeInfo volumeInfo) {
// 		this.volumeInfo = volumeInfo;
// 	}
// }
// 
// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/QueryResult.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class QueryResult implements Serializable {
// 
// 	private static final long serialVersionUID = 8453337880965373284L;
// 	private int totalItems;
// 	List<Item> items;
// 
// 	public int getTotalItems() {
// 		return totalItems;
// 	}
// 
// 	public void setTotalItems(int totalItems) {
// 		this.totalItems = totalItems;
// 	}
// 
// 	public List<Item> getItems() {
// 		return items;
// 	}
// 
// 	public void setItems(List<Item> items) {
// 		this.items = items;
// 	}
// 
// }
// 
// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/services/VolumeInfo.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class VolumeInfo implements Serializable {
// 	private static final long serialVersionUID = 3162880556852067979L;
// 	String title;
// 	List<String> authors;
// 	String publisher;
// 	String publishedDate;
// 	String description;
// 	List<String> categories;
// 
// 	public String getTitle() {
// 		return title;
// 	}
// 
// 	public void setTitle(String title) {
// 		this.title = title;
// 	}
// 
// 	public List<String> getAuthors() {
// 		return authors;
// 	}
// 
// 	public void setAuthors(List<String> authors) {
// 		this.authors = authors;
// 	}
// 
// 	public String getPublisher() {
// 		return publisher;
// 	}
// 
// 	public void setPublisher(String publisher) {
// 		this.publisher = publisher;
// 	}
// 
// 	public String getPublishedDate() {
// 		return publishedDate;
// 	}
// 
// 	public void setPublishedDate(String publishedDate) {
// 		this.publishedDate = publishedDate;
// 	}
// 
// 	public String getDescription() {
// 		return description;
// 	}
// 
// 	public void setDescription(String description) {
// 		this.description = description;
// 	}
// 
// 	public List<String> getCategories() {
// 		return categories;
// 	}
// 
// 	public void setCategories(List<String> categories) {
// 		this.categories = categories;
// 	}
// }
// 
// Path: src/main/java/com/github/ggeorgovassilis/springjsonmapper/spring/SpringRestInvokerProxyFactoryBean.java
// public class SpringRestInvokerProxyFactoryBean extends BaseRestInvokerProxyFactoryBean {
// 
// 	@Override
// 	protected MethodInspector constructDefaultMethodInspector() {
// 		List<MappingAnnotationResolver<? extends Annotation>> mappings = Arrays.asList(new RequestMappingAnnotationResolver(),
// 				new PutMappingAnnotationResolver(),
// 				new PostMappingAnnotationResolver(),
// 				new PatchMappingAnnotationResolver(),
// 				new GetMappingAnnotationResolver(),
// 				new DeleteMappingAnnotationResolver());
// 
// 		MappingAnnotationsInspector mappingAnnotationsInspector = new MappingAnnotationsInspector(mappings);
// 		SpringAnnotationMethodInspector inspector = new SpringAnnotationMethodInspector(mappingAnnotationsInspector);
// 		inspector.setEmbeddedValueResolver(expressionResolver);
// 		return inspector;
// 	}
// 
// }


// Path: src/test/java/com/github/ggeorgovassilis/springjsonmapper/integrationtests/AbstractGoogleBooksApiTest.java
import com.github.ggeorgovassilis.springjsonmapper.services.BookService;
import com.github.ggeorgovassilis.springjsonmapper.services.Item;
import com.github.ggeorgovassilis.springjsonmapper.services.QueryResult;
import com.github.ggeorgovassilis.springjsonmapper.services.VolumeInfo;
import com.github.ggeorgovassilis.springjsonmapper.spring.SpringRestInvokerProxyFactoryBean;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.hamcrest.Matchers.hasProperty;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

package com.github.ggeorgovassilis.springjsonmapper.integrationtests;




/**
 * Integration test with the google books API using the
 * {@link SpringRestInvokerProxyFactoryBean}
 * 
 * @author george georgovassilis
 */
@ExtendWith(SpringExtension.class)
public abstract class AbstractGoogleBooksApiTest {

	@Autowired
	protected BookService bookService;