package org.jhipster.health.web.rest; import org.jhipster.health.Application; import org.jhipster.health.domain.Preferences; import org.jhipster.health.domain.enumeration.Units; import org.jhipster.health.repository.PreferencesRepository; import org.jhipster.health.repository.search.PreferencesSearchRepository; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.web.PageableHandlerMethodArgumentResolver; import org.springframework.http.MediaType; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.util.ReflectionTestUtils; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.WebApplicationContext; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.persistence.EntityManager; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.Matchers.hasItem; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user; import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** * Test class for the PreferencesResource REST controller. * * @see PreferencesResource */ @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) public class PreferencesResourceIntTest { private static final Integer DEFAULT_WEEKLY_GOAL = 10; private static final Integer UPDATED_WEEKLY_GOAL = 11; private static final Units DEFAULT_WEIGHT_UNITS = Units.kg; private static final Units UPDATED_WEIGHT_UNITS = Units.lb; @Inject private PreferencesRepository preferencesRepository; @Inject private PreferencesSearchRepository preferencesSearchRepository; @Inject private MappingJackson2HttpMessageConverter jacksonMessageConverter; @Inject private PageableHandlerMethodArgumentResolver pageableArgumentResolver; @Inject private EntityManager em; @Inject private WebApplicationContext context; private MockMvc restPreferencesMockMvc; private Preferences preferences; @PostConstruct public void setup() { MockitoAnnotations.initMocks(this); PreferencesResource preferencesResource = new PreferencesResource(); ReflectionTestUtils.setField(preferencesResource, "preferencesSearchRepository", preferencesSearchRepository); ReflectionTestUtils.setField(preferencesResource, "preferencesRepository", preferencesRepository); this.restPreferencesMockMvc = MockMvcBuilders.standaloneSetup(preferencesResource) .setCustomArgumentResolvers(pageableArgumentResolver) .setMessageConverters(jacksonMessageConverter).build(); } /** * Create an entity for this test. * * This is a static method, as tests for other entities might also need it, * if they test an entity which requires the current entity. */ public static Preferences createEntity(EntityManager em) { Preferences preferences = new Preferences(); preferences = new Preferences() .weeklyGoal(DEFAULT_WEEKLY_GOAL) .weightUnits(DEFAULT_WEIGHT_UNITS); return preferences; } @Before public void initTest() { preferencesSearchRepository.deleteAll(); preferences = createEntity(em); } @Test @Transactional public void createPreferences() throws Exception { int databaseSizeBeforeCreate = preferencesRepository.findAll().size(); // create security-aware mockMvc restPreferencesMockMvc = MockMvcBuilders .webAppContextSetup(context) .apply(springSecurity()) .build(); // Create the Preferences restPreferencesMockMvc.perform(post("/api/preferences") .with(user("user")) .contentType(TestUtil.APPLICATION_JSON_UTF8) .content(TestUtil.convertObjectToJsonBytes(preferences))) .andExpect(status().isCreated()); // Validate the Preferences in the database List<Preferences> preferences = preferencesRepository.findAll(); assertThat(preferences).hasSize(databaseSizeBeforeCreate + 1); Preferences testPreferences = preferences.get(preferences.size() - 1); assertThat(testPreferences.getWeeklyGoal()).isEqualTo(DEFAULT_WEEKLY_GOAL); assertThat(testPreferences.getWeightUnits()).isEqualTo(DEFAULT_WEIGHT_UNITS); // Validate the Preferences in ElasticSearch Preferences preferencesEs = preferencesSearchRepository.findOne(testPreferences.getId()); assertThat(preferencesEs).isEqualToComparingFieldByField(testPreferences); } @Test @Transactional public void checkWeeklyGoalIsRequired() throws Exception { int databaseSizeBeforeTest = preferencesRepository.findAll().size(); // set the field null preferences.setWeeklyGoal(null); // Create the Preferences, which fails. restPreferencesMockMvc.perform(post("/api/preferences") .contentType(TestUtil.APPLICATION_JSON_UTF8) .content(TestUtil.convertObjectToJsonBytes(preferences))) .andExpect(status().isBadRequest()); List<Preferences> preferences = preferencesRepository.findAll(); assertThat(preferences).hasSize(databaseSizeBeforeTest); } @Test @Transactional public void checkWeightUnitsIsRequired() throws Exception { int databaseSizeBeforeTest = preferencesRepository.findAll().size(); // set the field null preferences.setWeightUnits(null); // Create the Preferences, which fails. restPreferencesMockMvc.perform(post("/api/preferences") .contentType(TestUtil.APPLICATION_JSON_UTF8) .content(TestUtil.convertObjectToJsonBytes(preferences))) .andExpect(status().isBadRequest()); List<Preferences> preferences = preferencesRepository.findAll(); assertThat(preferences).hasSize(databaseSizeBeforeTest); } @Test @Transactional public void getAllPreferences() throws Exception { // Initialize the database preferencesRepository.saveAndFlush(preferences); // create security-aware mockMvc restPreferencesMockMvc = MockMvcBuilders .webAppContextSetup(context) .apply(springSecurity()) .build(); // Get all the preferences restPreferencesMockMvc.perform(get("/api/preferences?sort=id,desc") .with(user("admin").roles("ADMIN"))) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)) .andExpect(jsonPath("$.[*].id").value(hasItem(preferences.getId().intValue()))) .andExpect(jsonPath("$.[*].weeklyGoal").value(hasItem(DEFAULT_WEEKLY_GOAL))) .andExpect(jsonPath("$.[*].weightUnits").value(hasItem(DEFAULT_WEIGHT_UNITS.toString()))); } @Test @Transactional public void getPreferences() throws Exception { // Initialize the database preferencesRepository.saveAndFlush(preferences); // Get the preferences restPreferencesMockMvc.perform(get("/api/preferences/{id}", preferences.getId())) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)) .andExpect(jsonPath("$.id").value(preferences.getId().intValue())) .andExpect(jsonPath("$.weeklyGoal").value(DEFAULT_WEEKLY_GOAL)) .andExpect(jsonPath("$.weightUnits").value(DEFAULT_WEIGHT_UNITS.toString())); } @Test @Transactional public void getNonExistingPreferences() throws Exception { // Get the preferences restPreferencesMockMvc.perform(get("/api/preferences/{id}", Long.MAX_VALUE)) .andExpect(status().isNotFound()); } @Test @Transactional public void updatePreferences() throws Exception { // Initialize the database preferencesRepository.saveAndFlush(preferences); preferencesSearchRepository.save(preferences); int databaseSizeBeforeUpdate = preferencesRepository.findAll().size(); // Update the preferences Preferences updatedPreferences = preferencesRepository.findOne(preferences.getId()); updatedPreferences .weeklyGoal(UPDATED_WEEKLY_GOAL) .weightUnits(UPDATED_WEIGHT_UNITS); restPreferencesMockMvc.perform(put("/api/preferences") .contentType(TestUtil.APPLICATION_JSON_UTF8) .content(TestUtil.convertObjectToJsonBytes(updatedPreferences))) .andExpect(status().isOk()); // Validate the Preferences in the database List<Preferences> preferences = preferencesRepository.findAll(); assertThat(preferences).hasSize(databaseSizeBeforeUpdate); Preferences testPreferences = preferences.get(preferences.size() - 1); assertThat(testPreferences.getWeeklyGoal()).isEqualTo(UPDATED_WEEKLY_GOAL); assertThat(testPreferences.getWeightUnits()).isEqualTo(UPDATED_WEIGHT_UNITS); // Validate the Preferences in ElasticSearch Preferences preferencesEs = preferencesSearchRepository.findOne(testPreferences.getId()); assertThat(preferencesEs).isEqualToComparingFieldByField(testPreferences); } @Test @Transactional public void deletePreferences() throws Exception { // Initialize the database preferencesRepository.saveAndFlush(preferences); preferencesSearchRepository.save(preferences); int databaseSizeBeforeDelete = preferencesRepository.findAll().size(); // Get the preferences restPreferencesMockMvc.perform(delete("/api/preferences/{id}", preferences.getId()) .accept(TestUtil.APPLICATION_JSON_UTF8)) .andExpect(status().isOk()); // Validate ElasticSearch is empty boolean preferencesExistsInEs = preferencesSearchRepository.exists(preferences.getId()); assertThat(preferencesExistsInEs).isFalse(); // Validate the database is empty List<Preferences> preferences = preferencesRepository.findAll(); assertThat(preferences).hasSize(databaseSizeBeforeDelete - 1); } @Test @Transactional public void searchPreferences() throws Exception { // Initialize the database preferencesRepository.saveAndFlush(preferences); preferencesSearchRepository.save(preferences); // Search the preferences restPreferencesMockMvc.perform(get("/api/_search/preferences?query=id:" + preferences.getId())) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)) .andExpect(jsonPath("$.[*].id").value(hasItem(preferences.getId().intValue()))) .andExpect(jsonPath("$.[*].weeklyGoal").value(hasItem(DEFAULT_WEEKLY_GOAL))) .andExpect(jsonPath("$.[*].weightUnits").value(hasItem(DEFAULT_WEIGHT_UNITS.toString()))); } }