package com.nicusa.converter;
import com.nicusa.controller.PortfolioController;
import com.nicusa.controller.UserProfileController;
import com.nicusa.domain.Portfolio;
import com.nicusa.domain.UserProfile;
import com.nicusa.resource.PortfolioResource;
import com.nicusa.resource.UserProfileResource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.persistence.EntityManager;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.*;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.when;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
@RunWith(MockitoJUnitRunner.class)
public class UserProfileResourceToDomainConverterTest {
@Mock
private EntityManager entityManager;
@Mock
private PortfolioResourceToDomainConverter portfolioResourceToDomainConverter;
@Mock
private DrugResourceToDomainConverter drugResourceToDomainConverter;
@InjectMocks
private UserProfileResourceToDomainConverter userProfileResourceToDomainConverter;
@Test
public void testConvert() {
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(new MockHttpServletRequest()));
UserProfile persistedProfile = new UserProfile();
Portfolio portfolio = new Portfolio();
when(entityManager.find(UserProfile.class, 1L)).thenReturn(persistedProfile);
when(portfolioResourceToDomainConverter.convert(any(PortfolioResource.class))).thenReturn(portfolio);
UserProfileResource userProfileResource = new UserProfileResource();
userProfileResource.setId(1L);
userProfileResource.getLinks().put("self", linkTo(methodOn(UserProfileController.class).getUserProfile(1L)).withSelfRel().getHref());
userProfileResource.getLinks().put("portfolio", linkTo(methodOn(PortfolioController.class).getPortfolio(1L)).withRel("portfolio"));
UserProfile userProfile = userProfileResourceToDomainConverter.convert(userProfileResource);
assertThat(userProfile, is(persistedProfile));
}
}