Skip to content

Commit

Permalink
Add test for delete filter
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Aug 15, 2018
1 parent 66227ab commit 447751f
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
Expand Down Expand Up @@ -47,33 +48,31 @@ public class MetadataFiltersController {

private static final Supplier<HttpClientErrorException> HTTP_404_CLIENT_ERROR_EXCEPTION = () -> new HttpClientErrorException(NOT_FOUND);

@ExceptionHandler
public ResponseEntity<?> notFoundHandler(HttpClientErrorException ex) {
if(ex.getStatusCode() == NOT_FOUND) {
return ResponseEntity.notFound().build();
}
throw ex;
}

@GetMapping("/Filters")
@Transactional(readOnly = true)
public ResponseEntity<?> getAll(@PathVariable String metadataResolverId) {
MetadataResolver resolver = repository.findByResourceId(metadataResolverId);
if(resolver == null) {
return ResponseEntity.notFound().build();
}
MetadataResolver resolver = findResolverOrThrowHttp404(metadataResolverId);
return ResponseEntity.ok(resolver.getMetadataFilters());
}

@GetMapping("/Filters/{resourceId}")
@Transactional(readOnly = true)
public ResponseEntity<?> getOne(@PathVariable String metadataResolverId, @PathVariable String resourceId) {
MetadataResolver resolver = repository.findByResourceId(metadataResolverId);
if(resolver == null) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(resolver.getMetadataFilters().stream()
.filter(f -> f.getResourceId().equals(resourceId))
.collect(Collectors.toList()).get(0));
MetadataResolver resolver = findResolverOrThrowHttp404(metadataResolverId);
return ResponseEntity.ok(findFilterOrThrowHttp404(resolver, resourceId));
}

@PostMapping("/Filters")
public ResponseEntity<?> create(@PathVariable String metadataResolverId, @RequestBody MetadataFilter createdFilter) {
MetadataResolver metadataResolver = repository.findByResourceId(metadataResolverId);
if(metadataResolver == null) {
return ResponseEntity.notFound().build();
}
MetadataResolver metadataResolver = findResolverOrThrowHttp404(metadataResolverId);
metadataResolver.getMetadataFilters().add(createdFilter);
MetadataResolver persistedMr = repository.save(metadataResolver);

Expand All @@ -85,7 +84,6 @@ public ResponseEntity<?> create(@PathVariable String metadataResolverId, @Reques
return ResponseEntity
.created(getResourceUriFor(persistedMr, createdFilter.getResourceId()))
.body(persistedFilter);

}

@PutMapping("/Filters/{resourceId}")
Expand All @@ -97,10 +95,7 @@ public ResponseEntity<?> update(@PathVariable String metadataResolverId,
return ResponseEntity.notFound().build();
}

MetadataResolver metadataResolver = repository.findByResourceId(metadataResolverId);
if(metadataResolver == null) {
return ResponseEntity.notFound().build();
}
MetadataResolver metadataResolver = findResolverOrThrowHttp404(metadataResolverId);

// check to make sure that the relationship exists
if (!metadataResolver.getMetadataFilters().contains(filterTobeUpdated)) {
Expand Down Expand Up @@ -155,6 +150,13 @@ private MetadataResolver findResolverOrThrowHttp404(String resolverResourceId) {
return resolver;
}

private MetadataFilter findFilterOrThrowHttp404(MetadataResolver resolver, String filterResourceId) {
return resolver.getMetadataFilters().stream()
.filter(f -> f.getResourceId().equals(filterResourceId))
.findFirst()
.orElseThrow(HTTP_404_CLIENT_ERROR_EXCEPTION);
}

private MetadataFilter newlyPersistedFilter(Stream<MetadataFilter> filters, final String filterResourceId) {
MetadataFilter persistedFilter = filters
.filter(f -> f.getResourceId().equals(filterResourceId))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,29 @@ class MetadataFiltersControllerIntegrationTests extends Specification {
updatedResultFromPUT.statusCode.value() == 200
}

def "DELETE Filter"() {
given: 'MetadataResolver with attached filter is available in data store'
def resolver = generator.buildRandomMetadataResolverOfType('FileBacked')
resolver.metadataFilters << generator.entityAttributesFilter()
def filterResourceId = resolver.metadataFilters[0].resourceId
def resolverResourceId = resolver.resourceId
metadataResolverRepository.save(resolver)


when: 'GET request is made with resource Id matching the existing filter'
def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String)

then:
result.statusCode.value() == 200

and: 'DELETE call is made and then GET call is made for the just deleted resource'
restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filterResourceId")
def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String)

then: 'The deleted resource is gone'
GETResultAfterDelete.statusCode.value() == 404
}

private HttpEntity<String> createRequestHttpEntityFor(Closure jsonBodySupplier) {
new HttpEntity<String>(jsonBodySupplier(), ['Content-Type': 'application/json'] as HttpHeaders)
}
Expand Down

0 comments on commit 447751f

Please sign in to comment.