Skip to content

Commit 9c173c1

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

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,10 @@ public void addImageToSeries(AddImageDto dto, Integer seriesId, Integer userId)
166166
Validate.isTrue(seriesId != null, "Series id must be non null");
167167
Validate.isTrue(userId != null, "User id must be non null");
168168

169+
seriesDao.markAsModified(seriesId, new Date(), userId);
170+
169171
Integer imageId = imageService.save(dto.getImage());
170172
imageService.addToSeries(seriesId, imageId);
171-
seriesDao.markAsModified(seriesId, new Date(), userId);
172173

173174
LOG.info(
174175
"Image #{} has been added to series #{} by user #{}",

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

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,26 @@ class SeriesServiceImplTest extends Specification {
612612
thrown IllegalArgumentException
613613
}
614614

615+
@SuppressWarnings(['ClosureAsLastMethodParameter', 'UnnecessaryReturnKeyword'])
616+
def "addImageToSeries() should mark series as modified"() {
617+
given:
618+
Integer expectedSeriesId = 123
619+
Integer expectedUserId = 321
620+
when:
621+
service.addImageToSeries(imageForm, expectedSeriesId, expectedUserId)
622+
then:
623+
1 * seriesDao.markAsModified({ Integer seriesId ->
624+
assert seriesId == expectedSeriesId
625+
return true
626+
}, { Date updatedAt ->
627+
assert DateUtils.roughlyEqual(updatedAt, new Date())
628+
return true
629+
}, { Integer userId ->
630+
assert userId == expectedUserId
631+
return true
632+
})
633+
}
634+
615635
@SuppressWarnings(['ClosureAsLastMethodParameter', 'UnnecessaryReturnKeyword'])
616636
def "addImageToSeries() should save image"() {
617637
given:
@@ -645,26 +665,6 @@ class SeriesServiceImplTest extends Specification {
645665
})
646666
}
647667

648-
@SuppressWarnings(['ClosureAsLastMethodParameter', 'UnnecessaryReturnKeyword'])
649-
def "addImageToSeries() should mark series as modified"() {
650-
given:
651-
Integer expectedSeriesId = 123
652-
Integer expectedUserId = 321
653-
when:
654-
service.addImageToSeries(imageForm, expectedSeriesId, expectedUserId)
655-
then:
656-
1 * seriesDao.markAsModified({ Integer seriesId ->
657-
assert seriesId == expectedSeriesId
658-
return true
659-
}, { Date updatedAt ->
660-
assert DateUtils.roughlyEqual(updatedAt, new Date())
661-
return true
662-
}, { Integer userId ->
663-
assert userId == expectedUserId
664-
return true
665-
})
666-
}
667-
668668
//
669669
// Tests for countAll()
670670
//

0 commit comments

Comments
 (0)