package org.openstack.atlas.service.domain.services; import org.openstack.atlas.service.domain.entities.*; import org.openstack.atlas.service.domain.repository.GroupRepository; import org.openstack.atlas.service.domain.services.impl.GroupServiceImpl; import org.junit.Before; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import org.junit.Assert; import java.util.ArrayList; import java.util.List; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @RunWith(Enclosed.class) public class GroupServiceImplTest { public static class updateGroupDefaults { Integer accountId = 1234; GroupRepository groupRepository; GroupServiceImpl groupService; GroupRateLimit groupRateLimit1; GroupRateLimit groupRateLimit2; GroupRateLimit groupRateLimit3; List<GroupRateLimit> groupRateLimitList; @Before public void standUp() { groupRepository = mock(GroupRepository.class); groupService = new GroupServiceImpl(); groupService.setGroupRepository(groupRepository); } @Before public void setUpObjects() { groupRateLimit1 = new GroupRateLimit(); groupRateLimit2 = new GroupRateLimit(); groupRateLimit3 = new GroupRateLimit(); groupRateLimitList = new ArrayList<GroupRateLimit>(); groupRateLimit1.setDefault(true); groupRateLimit1.setId(1); groupRateLimit1.setDescription("description"); groupRateLimit1.setName("aName"); groupRateLimit3.setDefault(true); groupRateLimit3.setId(3); groupRateLimit3.setDescription("description"); groupRateLimit3.setName("aName"); groupRateLimitList.add(groupRateLimit1); groupRateLimitList.add(groupRateLimit3); } @Test public void shouldSetOthersNum1NonDefaultIfUserSetsAnotherDefault() { groupRateLimit2.setDefault(true); groupRateLimit2.setId(2); when(groupRepository.getAll()).thenReturn(groupRateLimitList); groupService.updateGroupDefaults(groupRateLimit2); Assert.assertFalse(groupRateLimit1.getDefault()); } @Test public void shouldSetOthersNum3NonDefaultIfUserSetsAnotherDefault() { groupRateLimit2.setDefault(true); groupRateLimit2.setId(2); when(groupRepository.getAll()).thenReturn(groupRateLimitList); groupService.updateGroupDefaults(groupRateLimit2); Assert.assertFalse(groupRateLimit3.getDefault()); } @Test public void shouldSetDefaultIfUserSetsAsDefault() { groupRateLimit2.setDefault(true); groupRateLimit2.setId(2); when(groupRepository.getAll()).thenReturn(groupRateLimitList); groupService.updateGroupDefaults(groupRateLimit2); Assert.assertTrue(groupRateLimit2.getDefault()); } } }