Use provider for group sub resources

This commit is contained in:
René Pfeuffer
2018-06-22 08:33:45 +02:00
parent 5836688f30
commit 2daad8aab7
2 changed files with 27 additions and 23 deletions

View File

@@ -1,6 +1,7 @@
package sonia.scm.api.v2.resources;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.ws.rs.Path;
@Path(GroupRootResource.GROUPS_PATH_V2)
@@ -8,22 +9,23 @@ public class GroupRootResource {
public static final String GROUPS_PATH_V2 = "v2/groups/";
private final GroupCollectionResource groupCollectionResource;
private final GroupResource groupResource;
private final Provider<GroupCollectionResource> groupCollectionResource;
private final Provider<GroupResource> groupResource;
@Inject
public GroupRootResource(GroupCollectionResource groupCollectionResource, GroupResource groupResource) {
public GroupRootResource(Provider<GroupCollectionResource> groupCollectionResource,
Provider<GroupResource> groupResource) {
this.groupCollectionResource = groupCollectionResource;
this.groupResource = groupResource;
}
@Path("")
public GroupCollectionResource getGroupCollectionResource() {
return groupCollectionResource;
return groupCollectionResource.get();
}
@Path("{id}")
public GroupResource getGroupResource() {
return groupResource;
return groupResource.get();
}
}

View File

@@ -45,36 +45,33 @@ public class GroupRootResourceTest {
private Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();
@Mock
private GroupManager groupManager;
@Mock
private UriInfo uriInfo;
@Mock
private UriInfoStore uriInfoStore;
@InjectMocks
GroupDtoToGroupMapperImpl dtoToGroupMapper;
@InjectMocks
GroupToGroupDtoMapperImpl groupToDtoMapper;
@InjectMocks
GroupCollectionToDtoMapper groupCollectionToDtoMapper;
@Mock
private GroupManager groupManager;
@InjectMocks
private GroupDtoToGroupMapperImpl dtoToGroupMapper;
@InjectMocks
private GroupToGroupDtoMapperImpl groupToDtoMapper;
@InjectMocks
private GroupCollectionToDtoMapper groupCollectionToDtoMapper;
ArgumentCaptor<Group> groupCaptor = ArgumentCaptor.forClass(Group.class);
private ArgumentCaptor<Group> groupCaptor = ArgumentCaptor.forClass(Group.class);
@Before
public void prepareEnvironment() throws IOException, GroupException {
initMocks(this);
doNothing().when(groupManager).create(groupCaptor.capture());
Group group = new Group();
group.setName("admin");
group.setCreationDate(0L);
group.setMembers(Collections.singletonList("user"));
Group group = createDummyGroup();
when(groupManager.get("admin")).thenReturn(group);
GroupCollectionResource groupCollectionResource = new GroupCollectionResource(groupManager, dtoToGroupMapper, groupToDtoMapper, groupCollectionToDtoMapper);
GroupResource groupResource = new GroupResource(groupManager, groupToDtoMapper);
GroupRootResource groupRootResource = new GroupRootResource(groupCollectionResource, groupResource);
GroupRootResource groupRootResource = new GroupRootResource(MockProvider.of(groupCollectionResource), MockProvider.of(groupResource));
dispatcher.getRegistry().addSingletonResource(groupRootResource);
@@ -105,10 +102,7 @@ public class GroupRootResourceTest {
@Test
public void shouldGetGroup() throws URISyntaxException {
Group group = new Group();
group.setName("admin");
group.setCreationDate(0L);
group.setMembers(Collections.singletonList("user"));
Group group = createDummyGroup();
when(groupManager.get("admin")).thenReturn(group);
MockHttpRequest request = MockHttpRequest.get("/" + GroupRootResource.GROUPS_PATH_V2 + "admin");
@@ -142,4 +136,12 @@ public class GroupRootResourceTest {
assertEquals(2, createdGroup.getMembers().size());
assertEquals("user1", createdGroup.getMembers().get(0));
}
private Group createDummyGroup() {
Group group = new Group();
group.setName("admin");
group.setCreationDate(0L);
group.setMembers(Collections.singletonList("user"));
return group;
}
}