Skip to content

Commit 231bcf8

Browse files
committed
SeriesService.add(): reduce a risk of having an orphaned file when exception occurs.
Addressed to #301
1 parent 9c173c1 commit 231bcf8

File tree

2 files changed

+39
-39
lines changed

2 files changed

+39
-39
lines changed

src/main/java/ru/mystamps/web/service/SeriesServiceImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,6 @@ public Integer add(AddSeriesDto dto, Integer userId, boolean userCanAddComments)
126126

127127
Integer id = seriesDao.add(series);
128128

129-
Integer imageId = imageService.save(dto.getImage());
130-
imageService.addToSeries(id, imageId);
131-
132129
Set<String> michelNumbers = CatalogUtils.parseCatalogNumbers(dto.getMichelNumbers());
133130
if (!michelNumbers.isEmpty()) {
134131
michelCatalogService.add(michelNumbers);
@@ -153,6 +150,9 @@ public Integer add(AddSeriesDto dto, Integer userId, boolean userCanAddComments)
153150
gibbonsCatalogService.addToSeries(id, gibbonsNumbers);
154151
}
155152

153+
Integer imageId = imageService.save(dto.getImage());
154+
imageService.addToSeries(id, imageId);
155+
156156
LOG.info("Series #{} has been created ({})", id, series);
157157

158158
return id;

src/test/groovy/ru/mystamps/web/service/SeriesServiceImplTest.groovy

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -379,42 +379,6 @@ class SeriesServiceImplTest extends Specification {
379379
actual == expected
380380
}
381381

382-
@SuppressWarnings(['ClosureAsLastMethodParameter', 'UnnecessaryReturnKeyword'])
383-
def "add() should pass image to image service"() {
384-
given:
385-
form.setImage(multipartFile)
386-
when:
387-
service.add(form, userId, false)
388-
then:
389-
1 * imageService.save({ MultipartFile passedFile ->
390-
assert passedFile == multipartFile
391-
return true
392-
}) >> ANY_IMAGE_ID
393-
}
394-
395-
@SuppressWarnings(['ClosureAsLastMethodParameter', 'UnnecessaryReturnKeyword'])
396-
def "add() should add image to the series"() {
397-
given:
398-
Integer expectedSeriesId = 123
399-
and:
400-
seriesDao.add(_ as AddSeriesDbDto) >> expectedSeriesId
401-
and:
402-
Integer expectedImageId = 456
403-
when:
404-
service.add(form, userId, false)
405-
then:
406-
// FIXME: why we can't use _ as MultipartFile here?
407-
imageService.save(_) >> expectedImageId
408-
and:
409-
1 * imageService.addToSeries({ Integer seriesId ->
410-
assert seriesId == expectedSeriesId
411-
return true
412-
}, { Integer imageId ->
413-
assert imageId == expectedImageId
414-
return true
415-
})
416-
}
417-
418382
@Unroll
419383
def "add() should not call services if michel numbers is '#numbers'"(String numbers) {
420384
given:
@@ -587,6 +551,42 @@ class SeriesServiceImplTest extends Specification {
587551
})
588552
}
589553

554+
@SuppressWarnings(['ClosureAsLastMethodParameter', 'UnnecessaryReturnKeyword'])
555+
def "add() should pass image to image service"() {
556+
given:
557+
form.setImage(multipartFile)
558+
when:
559+
service.add(form, userId, false)
560+
then:
561+
1 * imageService.save({ MultipartFile passedFile ->
562+
assert passedFile == multipartFile
563+
return true
564+
}) >> ANY_IMAGE_ID
565+
}
566+
567+
@SuppressWarnings(['ClosureAsLastMethodParameter', 'UnnecessaryReturnKeyword'])
568+
def "add() should add image to the series"() {
569+
given:
570+
Integer expectedSeriesId = 123
571+
and:
572+
seriesDao.add(_ as AddSeriesDbDto) >> expectedSeriesId
573+
and:
574+
Integer expectedImageId = 456
575+
when:
576+
service.add(form, userId, false)
577+
then:
578+
// FIXME: why we can't use _ as MultipartFile here?
579+
imageService.save(_) >> expectedImageId
580+
and:
581+
1 * imageService.addToSeries({ Integer seriesId ->
582+
assert seriesId == expectedSeriesId
583+
return true
584+
}, { Integer imageId ->
585+
assert imageId == expectedImageId
586+
return true
587+
})
588+
}
589+
590590
//
591591
// Tests for addImageToSeries()
592592
//

0 commit comments

Comments
 (0)