diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupServiceTest.java index d6ab5af0029f352ecb7dee9055380513eb98251b..3136a7253e101843d8b0d3722a9ba2998fefc820 100644 --- a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupServiceTest.java +++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/group/GroupServiceTest.java @@ -9,6 +9,7 @@ import ntnu.idatt2016.v233.SmartMat.repository.ShoppingListRepository; import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeRepository; import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository; import ntnu.idatt2016.v233.SmartMat.repository.group.UserGroupAssoRepository; +import ntnu.idatt2016.v233.SmartMat.util.GroupUtil; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -18,8 +19,7 @@ import org.mockito.MockitoAnnotations; import java.util.List; import java.util.Optional; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; public class GroupServiceTest { @@ -60,7 +60,7 @@ public class GroupServiceTest { verify(groupRepository).findByGroupName(groupName); } - /** + @Test void testCreateGroup() { // Arrange @@ -76,11 +76,13 @@ public class GroupServiceTest { // Assert assertEquals(group, result); + assertNotNull(result.getLinkCode()); + verify(groupRepository).findByGroupName(groupName); verify(groupRepository).findAllLinkCode(); verify(groupRepository).save(group); } - */ + @Test void testAddFridgeToGroup() { @@ -138,4 +140,256 @@ public class GroupServiceTest { assertTrue(result); verify(userGroupAssoRepository).findById(userGroupAsso.getId()); } + + @Test + void openOrCloseGroup(){ + // Arrange + long groupId = 1L; + Group group = new Group(); + group.setGroupId(groupId); + group.setOpen(false); + when(groupRepository.findByGroupId(groupId)).thenReturn(Optional.of(group)); + when(groupRepository.save(group)).thenReturn(group); + + // Act + groupService.OpenOrCloseGroup(groupId); + + // Assert + assertTrue(group.getOpen()); + + + + groupService.OpenOrCloseGroup(groupId); + + // Assert + assertFalse(group.getOpen()); + verify(groupRepository, times(2)).findByGroupId(groupId); + verify(groupRepository, times(2)).save(group); + } + + @Test + void removeUserFromGroup(){ + Group group = new Group(); + group.setGroupId(1L); + group.setOpen(false); + + User user = User.builder() + .username("test") + .build(); + + UserGroupAsso userGroupAsso = UserGroupAsso.builder() + .user(user) + .group(group) + .id(UserGroupId.builder() + .groupId(group.getGroupId()) + .username(user.getUsername()) + .build()) + .build(); + + user.addGroup(userGroupAsso); + group.addUser(userGroupAsso); + + when(userGroupAssoRepository.findById(userGroupAsso.getId())).thenReturn(Optional.of(userGroupAsso)); + when(groupRepository.findByGroupId(group.getGroupId())).thenReturn(Optional.of(group)); + + + assertTrue(groupService.removeUserFromGroup(userGroupAsso)); + + verify(userGroupAssoRepository).delete(userGroupAsso); + + + } + + @Test + void setLevelByGroupId(){ + // Arrange + long groupId = 1L; + Group group = new Group(); + group.setGroupId(groupId); + group.setLevel(1); + group.setPoints(10); + when(groupRepository.findByGroupId(groupId)).thenReturn(Optional.of(group)); + when(groupRepository.save(group)).thenReturn(group); + + // Act + groupService.setLevelByGroupId(groupId, group.getPoints()); + + // Assert + assertEquals(0, group.getLevel()); + verify(groupRepository).findByGroupId(groupId); + verify(groupRepository).save(group); + } + + @Test + void getProgressOfLevel(){ + // Arrange + long groupId = 1L; + Group group = new Group(); + group.setGroupId(groupId); + group.setLevel(1); + group.setPoints(100); + when(groupRepository.findByGroupId(groupId)).thenReturn(Optional.of(group)); + + // Act + Optional<Integer> result = groupService.getProgressOfLevel(groupId); + + // Assert + assertTrue(result.isPresent()); + + assertEquals(GroupUtil.getProgressOfLevel(group.getPoints()), result.get()); + verify(groupRepository).findByGroupId(groupId); + } + + @Test + void getUserGroupAsso(){ + Group group = new Group(); + group.setGroupId(1L); + group.setOpen(false); + + User user = User.builder() + .username("test") + .build(); + + UserGroupAsso userGroupAsso = UserGroupAsso.builder() + .user(user) + .group(group) + .id(UserGroupId.builder() + .groupId(group.getGroupId()) + .username(user.getUsername()) + .build()) + .build(); + + user.addGroup(userGroupAsso); + group.addUser(userGroupAsso); + + + when(userGroupAssoRepository.findById(userGroupAsso.getId())).thenReturn(Optional.of(userGroupAsso)); + + Optional<UserGroupAsso> result = groupService.getUserGroupAsso(userGroupAsso.getId().getUsername(), + userGroupAsso.getId().getGroupId()); + + assertTrue(result.isPresent()); + + assertEquals(userGroupAsso, result.get()); + + verify(userGroupAssoRepository).findById(userGroupAsso.getId()); + + } + + @Test + void getUserGroupAssoAuthority(){ + Group group = new Group(); + group.setGroupId(1L); + group.setOpen(false); + + User user = User.builder() + .username("test") + .build(); + + UserGroupAsso userGroupAsso = UserGroupAsso.builder() + .user(user) + .group(group) + .groupAuthority("USER") + .id(UserGroupId.builder() + .groupId(group.getGroupId()) + .username(user.getUsername()) + .build()) + .build(); + + user.addGroup(userGroupAsso); + group.addUser(userGroupAsso); + + when(userGroupAssoRepository.findById(userGroupAsso.getId())).thenReturn(Optional.of(userGroupAsso)); + + String result = groupService.getUserGroupAssoAuthority(userGroupAsso.getId().getUsername(), + userGroupAsso.getId().getGroupId()); + + + assertEquals("USER", result); + + verify(userGroupAssoRepository).findById(userGroupAsso.getId()); + + } + + @Test + void getGroupById(){ + // Arrange + long groupId = 1L; + Group group = new Group(); + group.setGroupId(groupId); + when(groupRepository.findById(groupId)).thenReturn(Optional.of(group)); + + // Act + Optional<Group> result = groupService.getGroupById(groupId); + + // Assert + assertTrue(result.isPresent()); + assertEquals(group, result.get()); + verify(groupRepository).findById(groupId); + } + + @Test + void getGroupById_notFound(){ + // Arrange + long groupId = 1L; + Group group = new Group(); + group.setGroupId(groupId); + when(groupRepository.findById(groupId)).thenReturn(Optional.of(group)); + + // Act + Optional<Group> result = groupService.getGroupById(5L); + + // Assert + assertTrue(result.isEmpty()); + verify(groupRepository).findById(5L); + } + + @Test + void updateUserGroupAsso(){ + Group group = new Group(); + group.setGroupId(1L); + group.setOpen(false); + + User user = User.builder() + .username("test") + .build(); + + UserGroupAsso userGroupAsso = UserGroupAsso.builder() + .user(user) + .group(group) + .groupAuthority("USER") + .id(UserGroupId.builder() + .groupId(group.getGroupId()) + .username(user.getUsername()) + .build()) + .build(); + + user.addGroup(userGroupAsso); + group.addUser(userGroupAsso); + + when(userGroupAssoRepository.findById(userGroupAsso.getId())).thenReturn(Optional.of(userGroupAsso)); + when(userGroupAssoRepository.save(any(UserGroupAsso.class))).thenReturn(UserGroupAsso.builder() + .id(UserGroupId.builder() + .groupId(group.getGroupId()) + .username(user.getUsername()) + .build()) + .groupAuthority("ADMIN") + .group(group) + .user(user) + .build()); + + UserGroupAsso result = groupService.updateUserGroupAsso(UserGroupAsso.builder() + .id(UserGroupId.builder() + .groupId(group.getGroupId()) + .username(user.getUsername()) + .build()) + .groupAuthority("ADMIN") + .group(group) + .user(user) + .build()); + + + assertEquals("ADMIN", result.getGroupAuthority()); + verify(userGroupAssoRepository).save(any(UserGroupAsso.class)); + } }