From fba9f79bac8e49e017c9959f9a508f5435278f2f Mon Sep 17 00:00:00 2001
From: abdu <abdukiran@gmail.com>
Date: Wed, 2 Oct 2024 22:08:13 +0200
Subject: [PATCH] add integration test for createuser method
---
.../com/cloudcomputing/todo/dto/UserDTO.java | 2 +-
.../com/cloudcomputing/todo/entity/User.java | 2 +-
.../todo/mapper/UserMapper.java | 2 ++
.../todo/repository/UserRepository.java | 3 ++
.../todo/service/UserService.java | 29 ++++++++++++++++++-
.../todo/service/UserServiceTest.java | 28 ++++++++++++++++++
6 files changed, 63 insertions(+), 3 deletions(-)
create mode 100644 src/test/java/com/cloudcomputing/todo/service/UserServiceTest.java
diff --git a/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java b/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java
index 7d67424..0472e4d 100644
--- a/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java
+++ b/src/main/java/com/cloudcomputing/todo/dto/UserDTO.java
@@ -6,7 +6,7 @@ import lombok.Setter;
@Getter
@Setter
public class UserDTO {
- private Long userId;
+ private String userId;
private String userName;
private String password;
}
diff --git a/src/main/java/com/cloudcomputing/todo/entity/User.java b/src/main/java/com/cloudcomputing/todo/entity/User.java
index cc04a36..66026dd 100644
--- a/src/main/java/com/cloudcomputing/todo/entity/User.java
+++ b/src/main/java/com/cloudcomputing/todo/entity/User.java
@@ -10,7 +10,7 @@ import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "users")
public class User {
@Id
- private Long userId;
+ private String userId;
private String userName;
private String passwordHash;
}
diff --git a/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java b/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java
index f36a7d7..b20fda9 100644
--- a/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java
+++ b/src/main/java/com/cloudcomputing/todo/mapper/UserMapper.java
@@ -2,7 +2,9 @@ package com.cloudcomputing.todo.mapper;
import com.cloudcomputing.todo.dto.UserDTO;
import com.cloudcomputing.todo.entity.User;
+import org.springframework.stereotype.Component;
+@Component
public class UserMapper {
public UserDTO entityToDto(User user) {
UserDTO userDTO = new UserDTO();
diff --git a/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java b/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java
index 9646f9e..c3c6cf2 100644
--- a/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java
+++ b/src/main/java/com/cloudcomputing/todo/repository/UserRepository.java
@@ -4,4 +4,7 @@ import com.cloudcomputing.todo.entity.User;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface UserRepository extends MongoRepository<User, String> {
+ boolean existsByUserName(String userName);
+ boolean existsByUserId(String userId);
+ User findByUserName(String userName);
}
diff --git a/src/main/java/com/cloudcomputing/todo/service/UserService.java b/src/main/java/com/cloudcomputing/todo/service/UserService.java
index 4ea7476..7278021 100644
--- a/src/main/java/com/cloudcomputing/todo/service/UserService.java
+++ b/src/main/java/com/cloudcomputing/todo/service/UserService.java
@@ -1,2 +1,29 @@
-package com.cloudcomputing.todo.service;public class UserService {
+package com.cloudcomputing.todo.service;
+
+import com.cloudcomputing.todo.dto.UserDTO;
+import com.cloudcomputing.todo.entity.User;
+import com.cloudcomputing.todo.mapper.UserMapper;
+import com.cloudcomputing.todo.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserService {
+
+ @Autowired
+ private UserMapper userMapper;
+ @Autowired
+ private UserRepository userRepository;
+
+ public User createUser(UserDTO userDTO) {
+ User newUser;
+
+ if(userRepository.existsByUserId(userDTO.getUserId()) || userRepository.existsByUserName(userDTO.getUserName())){
+ newUser = userRepository.findByUserName(userDTO.getUserName());
+ } else {
+ newUser = userMapper.dtoToEntity(userDTO);
+ }
+
+ return userRepository.save(newUser);
+ }
}
diff --git a/src/test/java/com/cloudcomputing/todo/service/UserServiceTest.java b/src/test/java/com/cloudcomputing/todo/service/UserServiceTest.java
new file mode 100644
index 0000000..1935066
--- /dev/null
+++ b/src/test/java/com/cloudcomputing/todo/service/UserServiceTest.java
@@ -0,0 +1,28 @@
+package com.cloudcomputing.todo.service;
+
+import com.cloudcomputing.todo.dto.UserDTO;
+import com.cloudcomputing.todo.entity.User;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+@SpringBootTest
+public class UserServiceTest {
+
+ @Autowired
+ private UserService userService;
+
+ @Test
+ public void testCreateUser(){
+ UserDTO userToCreate = new UserDTO();
+ userToCreate.setUserName("abduTest");
+ userToCreate.setPassword("abduTestPassword");
+
+ User createdUser = userService.createUser(userToCreate);
+ assertNotNull(createdUser);
+ assertEquals(userToCreate.getUserName(), createdUser.getUserName());
+ }
+}
--
GitLab