Skip to content

Commit 754f211

Browse files
committed
CollectionService.findSeriesWithPricesBySlug(): add unit tests.
Fix #890
1 parent 7e332d5 commit 754f211

File tree

4 files changed

+62
-1
lines changed

4 files changed

+62
-1
lines changed

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

-1
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ public List<SeriesInCollectionDto> findSeriesInCollection(Integer collectionId,
169169
return collectionDao.findSeriesByCollectionId(collectionId, lang);
170170
}
171171

172-
// @todo #884 CollectionService.findSeriesWithPricesBySlug(): add unit tests
173172
@Override
174173
@Transactional(readOnly = true)
175174
@PreAuthorize(HasAuthority.ADD_SERIES_PRICE_AND_COLLECTION_OWNER)

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

+29
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import ru.mystamps.web.dao.dto.AddCollectionDbDto
3131
import ru.mystamps.web.dao.dto.AddToCollectionDbDto
3232
import ru.mystamps.web.dao.dto.CollectionInfoDto
3333
import ru.mystamps.web.dao.dto.Currency
34+
import ru.mystamps.web.dao.dto.SeriesInCollectionWithPriceDto
3435
import ru.mystamps.web.tests.DateUtils
3536
import ru.mystamps.web.tests.Random
3637
import ru.mystamps.web.util.SlugUtils
@@ -390,6 +391,34 @@ class CollectionServiceImplTest extends Specification {
390391
1 * collectionDao.findSeriesByCollectionId(expectedCollectionId, expectedLang) >> []
391392
}
392393

394+
//
395+
// Tests for findSeriesWithPricesBySlug()
396+
//
397+
398+
def 'findSeriesWithPricesBySlug() should throw exception when collection slug is null'() {
399+
when:
400+
service.findSeriesWithPricesBySlug(null, Random.lang())
401+
then:
402+
IllegalArgumentException ex = thrown()
403+
ex.message == 'Collection slug must be non null'
404+
}
405+
406+
def 'findSeriesWithPricesBySlug() should invoke dao, pass argument and return result from dao'() {
407+
given:
408+
String expectedSlug = Random.collectionSlug()
409+
String expectedLang = Random.lang()
410+
and:
411+
List<SeriesInCollectionWithPriceDto> expectedResult = [
412+
TestObjects.createSeriesInCollectionWithPriceDto(),
413+
]
414+
when:
415+
List<SeriesInCollectionWithPriceDto> result = service.findSeriesWithPricesBySlug(expectedSlug, expectedLang)
416+
then:
417+
1 * collectionDao.findSeriesWithPricesBySlug(expectedSlug, expectedLang) >> expectedResult
418+
and:
419+
result == expectedResult
420+
}
421+
393422
//
394423
// Tests for findBySlug()
395424
//

src/test/java/ru/mystamps/web/service/TestObjects.java

+13
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,19 @@ public static CollectionInfoDto createCollectionInfoDto() {
160160
return new CollectionInfoDto(Random.id(), "test-user", "Test User");
161161
}
162162

163+
public static SeriesInCollectionWithPriceDto createSeriesInCollectionWithPriceDto() {
164+
return new SeriesInCollectionWithPriceDto(
165+
Random.id(),
166+
Random.issueYear(),
167+
Random.quantity(),
168+
Random.quantity(),
169+
Random.perforated(),
170+
Random.countryName(),
171+
Random.price(),
172+
Random.currency()
173+
);
174+
}
175+
163176
public static SuspiciousActivityDto createSuspiciousActivityDto() {
164177
return new SuspiciousActivityDto(
165178
TEST_ACTIVITY_TYPE,

src/test/java/ru/mystamps/web/tests/Random.java

+20
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import ru.mystamps.web.dao.dto.ImportRequestFullInfo;
4141
import ru.mystamps.web.dao.dto.SeriesInfoDto;
4242
import ru.mystamps.web.service.TestObjects;
43+
import ru.mystamps.web.util.SlugUtils;
4344
import ru.mystamps.web.validation.ValidationRules;
4445

4546
import static io.qala.datagen.RandomShortApi.bool;
@@ -90,6 +91,25 @@ public static BigDecimal price() {
9091
return new BigDecimal("17");
9192
}
9293

94+
public static String login() {
95+
String login = between(
96+
ValidationRules.LOGIN_MIN_LENGTH,
97+
ValidationRules.LOGIN_MAX_LENGTH
98+
)
99+
.with(multipleOf(" -_"))
100+
.alphanumeric();
101+
102+
if (StringUtils.containsAny(login, " ", "--", "__")) {
103+
return login();
104+
}
105+
106+
return login;
107+
}
108+
109+
public static String collectionSlug() {
110+
return SlugUtils.slugify(login());
111+
}
112+
93113
public static Currency currency() {
94114
return sample(Currency.values());
95115
}

0 commit comments

Comments
 (0)