Guest User

Untitled

a guest
May 4th, 2017
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.94 KB | None | 0 0
  1. package com.epam.nl.apartmentbooking.service;
  2.  
  3. import com.epam.nl.apartmentbooking.config.TestConfig;
  4. import com.epam.nl.apartmentbooking.dao.IUserDao;
  5. import com.epam.nl.apartmentbooking.dao.impl.UserDao;
  6. import com.epam.nl.apartmentbooking.domain.User;
  7. import com.epam.nl.apartmentbooking.domain.constant.UserRole;
  8. import com.epam.nl.apartmentbooking.domain.constant.UserSex;
  9. import com.epam.nl.apartmentbooking.service.impl.UserService;
  10. import org.junit.Before;
  11. import org.junit.Test;
  12. import org.junit.runner.RunWith;
  13. import org.mockito.InjectMocks;
  14. import org.mockito.Mock;
  15. import org.mockito.MockitoAnnotations;
  16. import org.mockito.runners.MockitoJUnitRunner;
  17. import org.springframework.beans.factory.annotation.Qualifier;
  18. import org.springframework.test.context.ContextConfiguration;
  19.  
  20. import static junit.framework.TestCase.assertNotNull;
  21. import static org.mockito.Mockito.mock;
  22.  
  23. /**
  24.  * Created by Nastassia_Laptsinska on 4/11/2017.
  25.  */
  26.  
  27. @RunWith(MockitoJUnitRunner.class)
  28. @ContextConfiguration(classes= {TestConfig.class})
  29. public class UserServiceTest {
  30.  
  31.     @InjectMocks
  32.     @Qualifier("userService")
  33.     private UserService userService;
  34.  
  35.     @Mock
  36.     @Qualifier("userDao")
  37.     private IUserDao userDao;
  38.  
  39.     @Mock
  40.     private User user;
  41.  
  42.     @Before
  43.     public void initMocks(){
  44.         MockitoAnnotations.initMocks(this);
  45.         //user = mock(User.class);
  46.     }
  47.  
  48.     @Test
  49.     public void testMockCreation(){
  50.         assertNotNull(user);
  51.         assertNotNull(userDao);
  52.     }
  53.  
  54.     @Test
  55.     public void registerANewUserTest() {
  56.         User user = new User();
  57.         user.setUserRole(UserRole.ADMIN);
  58.         user.setName("Nastassia");
  59.         user.setSurname("Laptsinskaya");
  60.         user.setEmail("laptsinskaya@gmail.com");
  61.         user.setPasswordHash("12345");
  62.         user.setLogin("Nastassia");
  63.         user.setUserSex(UserSex.FEMALE);
  64.         user.setPersonalInfo("aaaaaaa");
  65.  
  66.         userService.registerANewUser(user);
  67.  
  68.     }
  69.  
  70.  
  71. }
  72.  
  73.  
  74.  
  75.  
  76. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  77.  
  78. package com.epam.nl.apartmentbooking.service.impl;
  79.  
  80. import com.epam.nl.apartmentbooking.dao.IUserDao;
  81. import com.epam.nl.apartmentbooking.domain.User;
  82. import com.epam.nl.apartmentbooking.service.IUserService;
  83. import org.springframework.beans.factory.annotation.Autowired;
  84. import org.springframework.beans.factory.annotation.Qualifier;
  85. import org.springframework.stereotype.Service;
  86.  
  87. /**
  88.  * Created by Nastassia_Laptsinska on 4/7/2017.
  89.  */
  90.  
  91. @Service("userService")
  92. public class UserService implements IUserService {
  93.  
  94.     @Autowired
  95.     @Qualifier("userDao")
  96.     private IUserDao userDao;
  97.  
  98.  
  99.     @Override
  100.     public boolean registerANewUser(User newUser) {
  101.         /*if ( checkIfEmailIsAlreadyRegistered(newUser.getEmail()) ){
  102.             System.err.println("User already exists");
  103.             return false;
  104.         }*/
  105.         System.err.println("Inserting........ user " + newUser.getLogin());
  106.         userDao.insert(newUser);
  107.         return true;
  108.     }
  109.  
  110.     @Override
  111.     public boolean checkIfEmailIsAlreadyRegistered(String email) {
  112.         User user = getUserByEmail(email);
  113.         if (! (user == null) ){
  114.             return true;
  115.         }
  116.         return false;
  117.     }
  118.  
  119.     private User getUserByEmail(String email){
  120.         return userDao.getUserByEmail(email);
  121.     }
  122. }
  123.  
  124.  
  125. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  126.  
  127. package com.epam.nl.apartmentbooking.dao.impl;
  128.  
  129. import com.epam.nl.apartmentbooking.dao.IUserDao;
  130. import com.epam.nl.apartmentbooking.domain.User;
  131. import com.epam.nl.apartmentbooking.domain.constant.UserRole;
  132. import com.epam.nl.apartmentbooking.domain.constant.UserSex;
  133. import org.springframework.beans.factory.annotation.Autowired;
  134. import org.springframework.dao.EmptyResultDataAccessException;
  135. import org.springframework.jdbc.core.JdbcTemplate;
  136. import org.springframework.jdbc.core.RowMapper;
  137. import org.springframework.stereotype.Repository;
  138. import java.sql.ResultSet;
  139. import java.sql.SQLException;
  140.  
  141. /**
  142.  * Created by Nastassia_Laptsinska on 4/26/2017.
  143.  */
  144.  
  145. @Repository("userDao")
  146. public class UserDao implements IUserDao {
  147.  
  148.     @Autowired
  149.     private JdbcTemplate jdbcTemplate;
  150.  
  151.     private static final String FIND_USER_BY_ID_Q =
  152.             "SELECT * FROM USERS WHERE USR_ID_PK = ?";
  153.  
  154.     private static final String INSERT_USER_Q =
  155.             "INSERT INTO USERS (USR_ROLE, USR_NAME, USR_SURNAME, USR_EMAIL, USR_PASSWORD, USR_LOGIN, USR_SEX, " +
  156.                     "USR_PERSONAL_INFO) VALUES (?,?,?,?,?,?,?,?)";
  157.  
  158.     private static final String UPDATE_USER_BY_USR_ID_Q =
  159.             "UPDATE USERS SET USR_ROLE = ?, USR_NAME = ?, USR_SURNAME = ?, USR_EMAIL = ?, USR_PASSWORD = ?," +
  160.                     " USR_LOGIN = ?, USR_SEX = ?, USR_PERSONAL_INFO = ? WHERE USR_ID_PK = ?";
  161.  
  162.     private static final String REMOVE_USER_BY_EMAIL_LOGIN_Q =
  163.             "DELETE FROM USERS WHERE (USR_EMAIL = ?) AND (USR_LOGIN = ?)";
  164.  
  165.     private static final String REMOVE_USER_BY_ID_Q =
  166.             "DELETE FROM USERS WHERE USR_ID_PK = ?";
  167.  
  168.     private static final String FIND_USER_BY_EMAIL_Q =
  169.             "SELECT * FROM USERS WHERE USR_EMAIL = ?";
  170.  
  171.     @Override
  172.     public User findById(Long id) {
  173.         User user;
  174.         try {
  175.             user = jdbcTemplate.queryForObject(FIND_USER_BY_ID_Q, new Object[]{id}, new UserMapper());
  176.         } catch (EmptyResultDataAccessException e){
  177.             return null;
  178.         }
  179.         return user;
  180.     }
  181.  
  182.     @Override
  183.     public boolean insert(User user) {
  184.         System.err.println("Inserted");
  185.         Object[] args = new Object[]{user.getUserRole().toString(), user.getName(), user.getSurname(), user.getEmail(),
  186.                                      user.getPasswordHash(), user.getLogin(), user.getUserSex().toString(), user.getPersonalInfo()};
  187.         jdbcTemplate.update(INSERT_USER_Q, args);
  188.         return true;
  189.     }
  190.  
  191.     @Override
  192.     public boolean update(User user) {
  193.         Object[] args = new Object[]{user.getUserRole().toString(), user.getName(), user.getSurname(), user.getEmail(),
  194.                 user.getPasswordHash(), user.getLogin(), user.getUserSex().toString(), user.getPersonalInfo(), user.getId()};
  195.         jdbcTemplate.update(UPDATE_USER_BY_USR_ID_Q, args);
  196.         return true;
  197.     }
  198.  
  199.     @Override
  200.     public boolean remove(User user) {
  201.         Object[] args = new Object[]{user.getEmail(), user.getLogin()};
  202.         jdbcTemplate.update(REMOVE_USER_BY_EMAIL_LOGIN_Q, args);
  203.         return true;
  204.     }
  205.  
  206.     @Override
  207.     public boolean removeById(Long id) {
  208.         jdbcTemplate.update(REMOVE_USER_BY_ID_Q, id);
  209.         return true;
  210.     }
  211.  
  212.     @Override
  213.     public User getUserByEmail(String email) {
  214.         System.err.println("Here by email");
  215.         User user;
  216.         try {
  217.             user = jdbcTemplate.queryForObject(FIND_USER_BY_EMAIL_Q, new Object[]{email}, new UserMapper());
  218.         } catch(EmptyResultDataAccessException e) {
  219.             return null;
  220.         }
  221.         return user;
  222.     }
  223.  
  224.     private static final class UserMapper implements RowMapper<User> {
  225.  
  226.         @Override
  227.         public User mapRow(ResultSet rs, int rowNum) throws SQLException {
  228.             User user = new User();
  229.             user.setId(rs.getLong("usr_id_pk"));
  230.             user.setUserRole(UserRole.valueOf(rs.getString("usr_role")));
  231.             user.setName(rs.getString("usr_name"));
  232.             user.setSurname(rs.getString("usr_surname"));
  233.             user.setEmail(rs.getString("usr_email"));
  234.             user.setPasswordHash(rs.getString("usr_password"));
  235.             user.setLogin(rs.getString("usr_login"));
  236.             user.setUserSex( UserSex.valueOf(rs.getString("usr_sex").toUpperCase()));
  237.             user.setPersonalInfo(rs.getString("usr_personal_info"));
  238.  
  239.             return user;
  240.         }
  241.  
  242.     }
  243. }
  244.  
  245.  
  246. /////////////////////////////////////////////////////////////////////////////////////////////////
  247.  
  248. package com.epam.nl.apartmentbooking.config;
  249.  
  250. import com.github.springtestdbunit.bean.DatabaseConfigBean;
  251. import com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean;
  252. import oracle.jdbc.pool.OracleDataSource;
  253. import org.apache.commons.dbcp2.BasicDataSource;
  254. import org.dbunit.ext.oracle.OracleDataTypeFactory;
  255. import org.slf4j.Logger;
  256. import org.slf4j.LoggerFactory;
  257. import org.springframework.beans.factory.annotation.Autowired;
  258. import org.springframework.context.annotation.*;
  259. import org.springframework.core.env.Environment;
  260. import org.springframework.jdbc.core.JdbcTemplate;
  261. import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  262. import org.springframework.transaction.annotation.EnableTransactionManagement;
  263.  
  264. import javax.sql.DataSource;
  265. import java.sql.SQLException;
  266.  
  267. /**
  268.  * Created by Nastassia_Laptsinska on 4/11/2017.
  269.  */
  270.  
  271. @Configuration
  272. @EnableTransactionManagement
  273. @ComponentScan({"com.epam.nl.apartmentbooking.domain", "com.epam.nl.apartmentbooking.dao",
  274.                 "com.epam.nl.apartmentbooking.service"})
  275. @PropertySources({ @PropertySource("classpath:testDatasource.properties") })
  276.  
  277. public class TestConfig {
  278.     private final Logger logger = LoggerFactory.getLogger(TestConfig.class);
  279.  
  280.     @Autowired
  281.     private Environment env;
  282.  
  283.     @Bean
  284.     public DataSource testDataSource() throws SQLException {
  285.  
  286.         OracleDataSource testDataSource = new OracleDataSource();
  287.  
  288.         testDataSource.setURL(env.getProperty("ds.test.url"));
  289.         testDataSource.setUser(env.getProperty("ds.test.username"));
  290.         testDataSource.setPassword(env.getProperty("ds.test.password"));
  291.  
  292.         return testDataSource;
  293.     }
  294.  
  295.     @Autowired
  296.     @Bean
  297.     @DependsOn("testDataSource")
  298.     public JdbcTemplate jdbcTemplate(DataSource dataSource){
  299.         return new JdbcTemplate(dataSource);
  300.     }
  301.  
  302.     @Bean(name = "transactionManager")
  303.     public DataSourceTransactionManager getTransactionManager() throws SQLException {
  304.         DataSourceTransactionManager txManager = new DataSourceTransactionManager();
  305.  
  306.         DataSource dataSource = this.testDataSource();
  307.         txManager.setDataSource(dataSource);
  308.  
  309.         return txManager;
  310.     }
  311.  
  312.     @Bean
  313.     public DatabaseConfigBean dbUnitDatabaseConfig() {
  314.         DatabaseConfigBean dbConfig = new DatabaseConfigBean();
  315.         dbConfig.setDatatypeFactory(new OracleDataTypeFactory());
  316.         return dbConfig;
  317.     }
  318.  
  319.     @Bean
  320.     @Autowired
  321.     public DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection(DataSource testDataSource) {
  322.         DatabaseDataSourceConnectionFactoryBean dbConnFactoryBean = new DatabaseDataSourceConnectionFactoryBean();
  323.         dbConnFactoryBean.setDatabaseConfig(dbUnitDatabaseConfig());
  324.         dbConnFactoryBean.setDataSource(testDataSource);
  325.         dbConnFactoryBean.setSchema(env.getRequiredProperty("ds.test.schema"));
  326.         return dbConnFactoryBean;
  327.     }
  328.  
  329. }
Add Comment
Please, Sign In to add comment