/
Chebarik
/
PackageManagement
Обзор
Документация
Войти
/
Chebarik
/
PackageManagement
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/test/java/com/packagemanagement/application/dto/PackageMapperTest.java
127 строк
4 KB
Николай Мехоношин
Implemented non functional requirements
14 апр 2026, 18:37
14 апр 2026, 18:37
2e86838
Код
Авторство
О чём код?
package com.packagemanagement.application.dto; import com.packagemanagement.domain.model.Package; import com.packagemanagement.domain.model.PackageFormat; import com.packagemanagement.domain.model.PackageVersion; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; import static org.junit.jupiter.api.Assertions.*; @DisplayName("PackageMapper") class PackageMapperTest { private PackageMapper mapper; @BeforeEach void setUp() { mapper = Mappers.getMapper(PackageMapper.class); } @Nested @DisplayName("toDto (Package)") class ToDtoPackage { @Test @DisplayName("should map all fields correctly") void shouldMapAllFields() { Package pkg = Package.create("test-package", "Test description", PackageFormat.NUGET); PackageDto dto = mapper.toDto(pkg); assertEquals(pkg.getId().getValue(), dto.id()); assertEquals("test-package", dto.name()); assertEquals("Test description", dto.description()); assertEquals("NUGET", dto.format()); assertNotNull(dto.createdAt()); assertNotNull(dto.updatedAt()); } @Test @DisplayName("should map versions") void shouldMapVersions() { Package pkg = Package.create("test-package", "Test", PackageFormat.NUGET); pkg.addVersion(PackageVersion.create("1.0.0", 1024L, "hash1")); pkg.addVersion(PackageVersion.create("2.0.0", 2048L, "hash2")); PackageDto dto = mapper.toDto(pkg); assertEquals(2, dto.versions().size()); assertEquals("1.0.0", dto.versions().get(0).versionNumber()); assertEquals("2.0.0", dto.versions().get(1).versionNumber()); } @Test @DisplayName("should set highest version") void shouldSetHighestVersion() { Package pkg = Package.create("test-package", "Test", PackageFormat.NUGET); pkg.addVersion(PackageVersion.create("1.0.0", 1024L, "hash1")); pkg.addVersion(PackageVersion.create("2.0.0", 2048L, "hash2")); PackageDto dto = mapper.toDto(pkg); assertEquals("2.0.0", dto.highestVersion()); } @Test @DisplayName("should handle package without versions") void shouldHandlePackageWithoutVersions() { Package pkg = Package.create("test-package", "Test", PackageFormat.MAVEN); PackageDto dto = mapper.toDto(pkg); assertTrue(dto.versions().isEmpty()); assertNull(dto.highestVersion()); } } @Nested @DisplayName("toDtoWithoutVersions") class ToDtoWithoutVersions { @Test @DisplayName("should map without version details") void shouldMapWithoutVersionDetails() { Package pkg = Package.create("test-package", "Test", PackageFormat.NUGET); pkg.addVersion(PackageVersion.create("1.0.0", 1024L, "hash")); PackageDto dto = mapper.toDtoWithoutVersions(pkg); assertTrue(dto.versions().isEmpty()); assertEquals("1.0.0", dto.highestVersion()); } } @Nested @DisplayName("toDto (PackageVersion)") class ToDtoVersion { @Test @DisplayName("should map version correctly") void shouldMapVersionCorrectly() { PackageVersion version = PackageVersion.create("1.0.0", 1024L, "abc123"); VersionDto dto = mapper.toDto(version); assertEquals(version.getId(), dto.id()); assertEquals("1.0.0", dto.versionNumber()); assertEquals(1024L, dto.size()); assertEquals("DRAFT", dto.status()); assertNotNull(dto.publishedDate()); } @Test @DisplayName("should map published version status") void shouldMapPublishedVersionStatus() { PackageVersion version = PackageVersion.create("1.0.0", 1024L, "abc123"); version.publish(); VersionDto dto = mapper.toDto(version); assertEquals("PUBLISHED", dto.status()); } } }