Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.epam.nl.apartmentbooking.service;
- import com.epam.nl.apartmentbooking.config.TestConfig;
- import com.epam.nl.apartmentbooking.dao.IUserDao;
- import com.epam.nl.apartmentbooking.dao.impl.UserDao;
- import com.epam.nl.apartmentbooking.domain.User;
- import com.epam.nl.apartmentbooking.domain.constant.UserRole;
- import com.epam.nl.apartmentbooking.domain.constant.UserSex;
- import com.epam.nl.apartmentbooking.service.impl.UserService;
- import org.junit.Before;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.mockito.InjectMocks;
- import org.mockito.Mock;
- import org.mockito.MockitoAnnotations;
- import org.mockito.runners.MockitoJUnitRunner;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.test.context.ContextConfiguration;
- import static junit.framework.TestCase.assertNotNull;
- import static org.mockito.Mockito.mock;
- /**
- * Created by Nastassia_Laptsinska on 4/11/2017.
- */
- @RunWith(MockitoJUnitRunner.class)
- @ContextConfiguration(classes= {TestConfig.class})
- public class UserServiceTest {
- @InjectMocks
- @Qualifier("userService")
- private UserService userService;
- @Mock
- @Qualifier("userDao")
- private IUserDao userDao;
- @Mock
- private User user;
- @Before
- public void initMocks(){
- MockitoAnnotations.initMocks(this);
- //user = mock(User.class);
- }
- @Test
- public void testMockCreation(){
- assertNotNull(user);
- assertNotNull(userDao);
- }
- @Test
- public void registerANewUserTest() {
- User user = new User();
- user.setUserRole(UserRole.ADMIN);
- user.setName("Nastassia");
- user.setSurname("Laptsinskaya");
- user.setEmail("laptsinskaya@gmail.com");
- user.setPasswordHash("12345");
- user.setLogin("Nastassia");
- user.setUserSex(UserSex.FEMALE);
- user.setPersonalInfo("aaaaaaa");
- userService.registerANewUser(user);
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- package com.epam.nl.apartmentbooking.service.impl;
- import com.epam.nl.apartmentbooking.dao.IUserDao;
- import com.epam.nl.apartmentbooking.domain.User;
- import com.epam.nl.apartmentbooking.service.IUserService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.stereotype.Service;
- /**
- * Created by Nastassia_Laptsinska on 4/7/2017.
- */
- @Service("userService")
- public class UserService implements IUserService {
- @Autowired
- @Qualifier("userDao")
- private IUserDao userDao;
- @Override
- public boolean registerANewUser(User newUser) {
- /*if ( checkIfEmailIsAlreadyRegistered(newUser.getEmail()) ){
- System.err.println("User already exists");
- return false;
- }*/
- System.err.println("Inserting........ user " + newUser.getLogin());
- userDao.insert(newUser);
- return true;
- }
- @Override
- public boolean checkIfEmailIsAlreadyRegistered(String email) {
- User user = getUserByEmail(email);
- if (! (user == null) ){
- return true;
- }
- return false;
- }
- private User getUserByEmail(String email){
- return userDao.getUserByEmail(email);
- }
- }
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- package com.epam.nl.apartmentbooking.dao.impl;
- import com.epam.nl.apartmentbooking.dao.IUserDao;
- import com.epam.nl.apartmentbooking.domain.User;
- import com.epam.nl.apartmentbooking.domain.constant.UserRole;
- import com.epam.nl.apartmentbooking.domain.constant.UserSex;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.dao.EmptyResultDataAccessException;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.core.RowMapper;
- import org.springframework.stereotype.Repository;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- /**
- * Created by Nastassia_Laptsinska on 4/26/2017.
- */
- @Repository("userDao")
- public class UserDao implements IUserDao {
- @Autowired
- private JdbcTemplate jdbcTemplate;
- private static final String FIND_USER_BY_ID_Q =
- "SELECT * FROM USERS WHERE USR_ID_PK = ?";
- private static final String INSERT_USER_Q =
- "INSERT INTO USERS (USR_ROLE, USR_NAME, USR_SURNAME, USR_EMAIL, USR_PASSWORD, USR_LOGIN, USR_SEX, " +
- "USR_PERSONAL_INFO) VALUES (?,?,?,?,?,?,?,?)";
- private static final String UPDATE_USER_BY_USR_ID_Q =
- "UPDATE USERS SET USR_ROLE = ?, USR_NAME = ?, USR_SURNAME = ?, USR_EMAIL = ?, USR_PASSWORD = ?," +
- " USR_LOGIN = ?, USR_SEX = ?, USR_PERSONAL_INFO = ? WHERE USR_ID_PK = ?";
- private static final String REMOVE_USER_BY_EMAIL_LOGIN_Q =
- "DELETE FROM USERS WHERE (USR_EMAIL = ?) AND (USR_LOGIN = ?)";
- private static final String REMOVE_USER_BY_ID_Q =
- "DELETE FROM USERS WHERE USR_ID_PK = ?";
- private static final String FIND_USER_BY_EMAIL_Q =
- "SELECT * FROM USERS WHERE USR_EMAIL = ?";
- @Override
- public User findById(Long id) {
- User user;
- try {
- user = jdbcTemplate.queryForObject(FIND_USER_BY_ID_Q, new Object[]{id}, new UserMapper());
- } catch (EmptyResultDataAccessException e){
- return null;
- }
- return user;
- }
- @Override
- public boolean insert(User user) {
- System.err.println("Inserted");
- Object[] args = new Object[]{user.getUserRole().toString(), user.getName(), user.getSurname(), user.getEmail(),
- user.getPasswordHash(), user.getLogin(), user.getUserSex().toString(), user.getPersonalInfo()};
- jdbcTemplate.update(INSERT_USER_Q, args);
- return true;
- }
- @Override
- public boolean update(User user) {
- Object[] args = new Object[]{user.getUserRole().toString(), user.getName(), user.getSurname(), user.getEmail(),
- user.getPasswordHash(), user.getLogin(), user.getUserSex().toString(), user.getPersonalInfo(), user.getId()};
- jdbcTemplate.update(UPDATE_USER_BY_USR_ID_Q, args);
- return true;
- }
- @Override
- public boolean remove(User user) {
- Object[] args = new Object[]{user.getEmail(), user.getLogin()};
- jdbcTemplate.update(REMOVE_USER_BY_EMAIL_LOGIN_Q, args);
- return true;
- }
- @Override
- public boolean removeById(Long id) {
- jdbcTemplate.update(REMOVE_USER_BY_ID_Q, id);
- return true;
- }
- @Override
- public User getUserByEmail(String email) {
- System.err.println("Here by email");
- User user;
- try {
- user = jdbcTemplate.queryForObject(FIND_USER_BY_EMAIL_Q, new Object[]{email}, new UserMapper());
- } catch(EmptyResultDataAccessException e) {
- return null;
- }
- return user;
- }
- private static final class UserMapper implements RowMapper<User> {
- @Override
- public User mapRow(ResultSet rs, int rowNum) throws SQLException {
- User user = new User();
- user.setId(rs.getLong("usr_id_pk"));
- user.setUserRole(UserRole.valueOf(rs.getString("usr_role")));
- user.setName(rs.getString("usr_name"));
- user.setSurname(rs.getString("usr_surname"));
- user.setEmail(rs.getString("usr_email"));
- user.setPasswordHash(rs.getString("usr_password"));
- user.setLogin(rs.getString("usr_login"));
- user.setUserSex( UserSex.valueOf(rs.getString("usr_sex").toUpperCase()));
- user.setPersonalInfo(rs.getString("usr_personal_info"));
- return user;
- }
- }
- }
- /////////////////////////////////////////////////////////////////////////////////////////////////
- package com.epam.nl.apartmentbooking.config;
- import com.github.springtestdbunit.bean.DatabaseConfigBean;
- import com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean;
- import oracle.jdbc.pool.OracleDataSource;
- import org.apache.commons.dbcp2.BasicDataSource;
- import org.dbunit.ext.oracle.OracleDataTypeFactory;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.*;
- import org.springframework.core.env.Environment;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.datasource.DataSourceTransactionManager;
- import org.springframework.transaction.annotation.EnableTransactionManagement;
- import javax.sql.DataSource;
- import java.sql.SQLException;
- /**
- * Created by Nastassia_Laptsinska on 4/11/2017.
- */
- @Configuration
- @EnableTransactionManagement
- @ComponentScan({"com.epam.nl.apartmentbooking.domain", "com.epam.nl.apartmentbooking.dao",
- "com.epam.nl.apartmentbooking.service"})
- @PropertySources({ @PropertySource("classpath:testDatasource.properties") })
- public class TestConfig {
- private final Logger logger = LoggerFactory.getLogger(TestConfig.class);
- @Autowired
- private Environment env;
- @Bean
- public DataSource testDataSource() throws SQLException {
- OracleDataSource testDataSource = new OracleDataSource();
- testDataSource.setURL(env.getProperty("ds.test.url"));
- testDataSource.setUser(env.getProperty("ds.test.username"));
- testDataSource.setPassword(env.getProperty("ds.test.password"));
- return testDataSource;
- }
- @Autowired
- @Bean
- @DependsOn("testDataSource")
- public JdbcTemplate jdbcTemplate(DataSource dataSource){
- return new JdbcTemplate(dataSource);
- }
- @Bean(name = "transactionManager")
- public DataSourceTransactionManager getTransactionManager() throws SQLException {
- DataSourceTransactionManager txManager = new DataSourceTransactionManager();
- DataSource dataSource = this.testDataSource();
- txManager.setDataSource(dataSource);
- return txManager;
- }
- @Bean
- public DatabaseConfigBean dbUnitDatabaseConfig() {
- DatabaseConfigBean dbConfig = new DatabaseConfigBean();
- dbConfig.setDatatypeFactory(new OracleDataTypeFactory());
- return dbConfig;
- }
- @Bean
- @Autowired
- public DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection(DataSource testDataSource) {
- DatabaseDataSourceConnectionFactoryBean dbConnFactoryBean = new DatabaseDataSourceConnectionFactoryBean();
- dbConnFactoryBean.setDatabaseConfig(dbUnitDatabaseConfig());
- dbConnFactoryBean.setDataSource(testDataSource);
- dbConnFactoryBean.setSchema(env.getRequiredProperty("ds.test.schema"));
- return dbConnFactoryBean;
- }
- }
Add Comment
Please, Sign In to add comment