feat(tests): tests coverage 67.2

This commit is contained in:
misha
2026-01-19 12:32:11 +03:00
parent 13ccf56df0
commit 44ede73ceb
20 changed files with 5084 additions and 409 deletions

View File

@@ -53,5 +53,205 @@ void main() {
expect(image.contains('assets/') || image.contains(ImageConstant.imagePath), isTrue);
}
});
test('personal cabinet images are defined', () {
expect(ImageConstant.imgEdit, isNotEmpty);
expect(ImageConstant.imgStatistic, isNotEmpty);
expect(ImageConstant.imgStatisticGray200, isNotEmpty);
expect(ImageConstant.imgMegaphone, isNotEmpty);
});
test('common ellipse images are defined', () {
expect(ImageConstant.imgEllipse1, isNotEmpty);
expect(ImageConstant.imgEllipse2, isNotEmpty);
expect(ImageConstant.imgEllipse3, isNotEmpty);
expect(ImageConstant.imgEllipse11, isNotEmpty);
expect(ImageConstant.imgEllipse125x25, isNotEmpty);
expect(ImageConstant.imgEllipse132x32, isNotEmpty);
expect(ImageConstant.imgEllipse134x34, isNotEmpty);
expect(ImageConstant.imgEllipse142x42, isNotEmpty);
});
test('common UI images are defined', () {
expect(ImageConstant.imgGrid, isNotEmpty);
expect(ImageConstant.imgSearch, isNotEmpty);
expect(ImageConstant.imgArea1, isNotEmpty);
expect(ImageConstant.imgLine1, isNotEmpty);
expect(ImageConstant.imgLine2, isNotEmpty);
expect(ImageConstant.imgLine3, isNotEmpty);
expect(ImageConstant.imgEye, isNotEmpty);
expect(ImageConstant.imgFavoriteWhiteA700, isNotEmpty);
expect(ImageConstant.img, isNotEmpty);
});
test('navigation images are defined', () {
expect(ImageConstant.imgDiary, isNotEmpty);
expect(ImageConstant.imgFeed, isNotEmpty);
expect(ImageConstant.imgChat, isNotEmpty);
expect(ImageConstant.imgLogo, isNotEmpty);
expect(ImageConstant.imgBell, isNotEmpty);
expect(ImageConstant.imgSettings, isNotEmpty);
expect(ImageConstant.imgRecipes, isNotEmpty);
expect(ImageConstant.imgDiets, isNotEmpty);
expect(ImageConstant.imgPlans, isNotEmpty);
expect(ImageConstant.imgFinance, isNotEmpty);
expect(ImageConstant.imgSupport, isNotEmpty);
expect(ImageConstant.imgMic, isNotEmpty);
expect(ImageConstant.imgSend, isNotEmpty);
expect(ImageConstant.imgAttach, isNotEmpty);
expect(ImageConstant.imgExit, isNotEmpty);
});
test('navigation color variants are defined', () {
expect(ImageConstant.imgNavBlueGray400, isNotEmpty);
expect(ImageConstant.imgNavBlueGray40024x23, isNotEmpty);
expect(ImageConstant.imgNavPrimary, isNotEmpty);
expect(ImageConstant.imgNavBlueGray40024x25, isNotEmpty);
});
test('icon images are defined', () {
expect(ImageConstant.imgIconMoreHorizontal, isNotEmpty);
expect(ImageConstant.imgIconMessageSquare, isNotEmpty);
expect(ImageConstant.imgIconHeart, isNotEmpty);
expect(ImageConstant.imgIconShare2, isNotEmpty);
});
test('new icons from 21 08 2024 are defined', () {
expect(ImageConstant.icnBell, isNotEmpty);
expect(ImageConstant.icnCcal, isNotEmpty);
expect(ImageConstant.icnChat, isNotEmpty);
expect(ImageConstant.icnClock, isNotEmpty);
expect(ImageConstant.icnComment, isNotEmpty);
expect(ImageConstant.icnConsultation, isNotEmpty);
expect(ImageConstant.icnCopy, isNotEmpty);
expect(ImageConstant.icnDiary, isNotEmpty);
expect(ImageConstant.icnDietCarbs, isNotEmpty);
expect(ImageConstant.icnDietLight, isNotEmpty);
expect(ImageConstant.icnExit, isNotEmpty);
expect(ImageConstant.icnEye, isNotEmpty);
expect(ImageConstant.icnFaceHappy, isNotEmpty);
expect(ImageConstant.icnFaceSad, isNotEmpty);
expect(ImageConstant.icnFavoritePosts, isNotEmpty);
expect(ImageConstant.icnFavoriteRecipes, isNotEmpty);
expect(ImageConstant.icnFeed, isNotEmpty);
expect(ImageConstant.icnFinance, isNotEmpty);
expect(ImageConstant.icnGlossary, isNotEmpty);
expect(ImageConstant.icnGym, isNotEmpty);
expect(ImageConstant.icnLikeFilled, isNotEmpty);
expect(ImageConstant.icnLikePlus, isNotEmpty);
expect(ImageConstant.icnLike, isNotEmpty);
expect(ImageConstant.icnMeat, isNotEmpty);
expect(ImageConstant.icnPaste, isNotEmpty);
expect(ImageConstant.icnPlans, isNotEmpty);
expect(ImageConstant.icnPosts, isNotEmpty);
expect(ImageConstant.icnProfileSettings, isNotEmpty);
expect(ImageConstant.icnRating, isNotEmpty);
expect(ImageConstant.icnRecipes, isNotEmpty);
expect(ImageConstant.icnScale, isNotEmpty);
expect(ImageConstant.icnSend, isNotEmpty);
expect(ImageConstant.icnShare, isNotEmpty);
expect(ImageConstant.icnSpoonFork, isNotEmpty);
expect(ImageConstant.icnStepsGraph, isNotEmpty);
expect(ImageConstant.icnSteps, isNotEmpty);
expect(ImageConstant.icnSubscribers, isNotEmpty);
expect(ImageConstant.icnSupport, isNotEmpty);
expect(ImageConstant.icnDevTools, isNotEmpty);
expect(ImageConstant.icnVeggies, isNotEmpty);
});
test('all image constants use correct path format', () {
final allImageConstants = [
ImageConstant.imgEdit,
ImageConstant.imgStatistic,
ImageConstant.imgStatisticGray200,
ImageConstant.imgMegaphone,
ImageConstant.imgEllipse1,
ImageConstant.imgEllipse2,
ImageConstant.imgEllipse3,
ImageConstant.imgEllipse11,
ImageConstant.imgEllipse125x25,
ImageConstant.imgEllipse132x32,
ImageConstant.imgEllipse134x34,
ImageConstant.imgEllipse142x42,
ImageConstant.imgGrid,
ImageConstant.imgSearch,
ImageConstant.imgArea1,
ImageConstant.imgLine1,
ImageConstant.imgLine2,
ImageConstant.imgLine3,
ImageConstant.imgEye,
ImageConstant.imgFavoriteWhiteA700,
ImageConstant.img,
ImageConstant.imgDiary,
ImageConstant.imgFeed,
ImageConstant.imgChat,
ImageConstant.imgLogo,
ImageConstant.imgBell,
ImageConstant.imgSettings,
ImageConstant.imgRecipes,
ImageConstant.imgDiets,
ImageConstant.imgPlans,
ImageConstant.imgFinance,
ImageConstant.imgSupport,
ImageConstant.imgMic,
ImageConstant.imgSend,
ImageConstant.imgAttach,
ImageConstant.imgExit,
ImageConstant.imgNavBlueGray400,
ImageConstant.imgNavBlueGray40024x23,
ImageConstant.imgNavPrimary,
ImageConstant.imgNavBlueGray40024x25,
ImageConstant.imgIconMoreHorizontal,
ImageConstant.imgIconMessageSquare,
ImageConstant.imgIconHeart,
ImageConstant.imgIconShare2,
ImageConstant.imgRectangle14250x311,
ImageConstant.icnBell,
ImageConstant.icnCcal,
ImageConstant.icnChat,
ImageConstant.icnClock,
ImageConstant.icnComment,
ImageConstant.icnConsultation,
ImageConstant.icnCopy,
ImageConstant.icnDiary,
ImageConstant.icnDietCarbs,
ImageConstant.icnDietLight,
ImageConstant.icnExit,
ImageConstant.icnEye,
ImageConstant.icnFaceHappy,
ImageConstant.icnFaceSad,
ImageConstant.icnFavoritePosts,
ImageConstant.icnFavoriteRecipes,
ImageConstant.icnFeed,
ImageConstant.icnFinance,
ImageConstant.icnGlossary,
ImageConstant.icnGym,
ImageConstant.icnLikeFilled,
ImageConstant.icnLikePlus,
ImageConstant.icnLike,
ImageConstant.icnMeat,
ImageConstant.icnPaste,
ImageConstant.icnPlans,
ImageConstant.icnPosts,
ImageConstant.icnProfileSettings,
ImageConstant.icnRating,
ImageConstant.icnRecipes,
ImageConstant.icnScale,
ImageConstant.icnSend,
ImageConstant.icnShare,
ImageConstant.icnSpoonFork,
ImageConstant.icnStepsGraph,
ImageConstant.icnSteps,
ImageConstant.icnSubscribers,
ImageConstant.icnSupport,
ImageConstant.icnDevTools,
ImageConstant.icnVeggies,
];
for (final image in allImageConstants) {
expect(image, isNotEmpty);
expect(image.contains('assets/') || image.contains(ImageConstant.imagePath), isTrue);
}
});
});
}

View File

@@ -109,5 +109,88 @@ void main() {
expect(ValidationUtils.isValidUsername('user name'), isFalse);
});
});
group('getValidationErrorMessage', () {
test('returns error for null value', () {
expect(ValidationUtils.getValidationErrorMessage(null, ValidationType.email), 'Поле не может быть пустым');
expect(ValidationUtils.getValidationErrorMessage(null, ValidationType.phone), 'Поле не может быть пустым');
expect(ValidationUtils.getValidationErrorMessage(null, ValidationType.url), 'Поле не может быть пустым');
});
test('returns error for empty value', () {
expect(ValidationUtils.getValidationErrorMessage('', ValidationType.email), 'Поле не может быть пустым');
expect(ValidationUtils.getValidationErrorMessage('', ValidationType.password), 'Поле не может быть пустым');
expect(ValidationUtils.getValidationErrorMessage('', ValidationType.username), 'Поле не может быть пустым');
});
test('returns null for valid email', () {
expect(ValidationUtils.getValidationErrorMessage('test@example.com', ValidationType.email), isNull);
});
test('returns error for invalid email', () {
expect(ValidationUtils.getValidationErrorMessage('invalid', ValidationType.email), 'Введите корректный email');
});
test('returns null for valid phone', () {
expect(ValidationUtils.getValidationErrorMessage('+79991234567', ValidationType.phone), isNull);
});
test('returns error for invalid phone', () {
expect(ValidationUtils.getValidationErrorMessage('abc', ValidationType.phone), 'Введите корректный номер телефона');
});
test('returns null for valid URL', () {
expect(ValidationUtils.getValidationErrorMessage('https://example.com', ValidationType.url), isNull);
});
test('returns error for invalid URL', () {
expect(ValidationUtils.getValidationErrorMessage('not a url', ValidationType.url), 'Введите корректный URL');
});
test('returns null for valid password', () {
expect(ValidationUtils.getValidationErrorMessage('password123', ValidationType.password), isNull);
});
test('returns error for invalid password', () {
expect(ValidationUtils.getValidationErrorMessage('short', ValidationType.password), 'Пароль должен содержать минимум 8 символов, включая буквы и цифры');
});
test('returns null for valid username', () {
expect(ValidationUtils.getValidationErrorMessage('user123', ValidationType.username), isNull);
});
test('returns error for invalid username', () {
expect(ValidationUtils.getValidationErrorMessage('ab', ValidationType.username), 'Имя пользователя должно содержать от 3 до 20 символов (буквы, цифры, подчеркивания)');
});
test('returns null for valid title', () {
expect(ValidationUtils.getValidationErrorMessage('Valid Title', ValidationType.title), isNull);
});
test('returns error for invalid title', () {
expect(ValidationUtils.getValidationErrorMessage('', ValidationType.title), 'Поле не может быть пустым');
final longTitle = 'a' * (AppConstants.maxTitleLength + 1);
expect(ValidationUtils.getValidationErrorMessage(longTitle, ValidationType.title), 'Заголовок не может быть пустым и должен содержать не более ${AppConstants.maxTitleLength} символов');
});
test('returns null for valid description', () {
expect(ValidationUtils.getValidationErrorMessage('Valid description', ValidationType.description), isNull);
expect(ValidationUtils.getValidationErrorMessage('', ValidationType.description), 'Поле не может быть пустым');
});
test('returns error for invalid description', () {
final longDescription = 'a' * (AppConstants.maxDescriptionLength + 1);
expect(ValidationUtils.getValidationErrorMessage(longDescription, ValidationType.description), 'Описание не может содержать более ${AppConstants.maxDescriptionLength} символов');
});
test('returns null for valid text', () {
expect(ValidationUtils.getValidationErrorMessage('Valid text', ValidationType.text), isNull);
});
test('returns error for invalid text', () {
final longText = 'a' * (AppConstants.maxTextLength + 1);
expect(ValidationUtils.getValidationErrorMessage(longText, ValidationType.text), 'Текст не может содержать более ${AppConstants.maxTextLength} символов');
});
});
});
}