forked from eatvio/eatvio_app
feat(tests): tests coverage 67.2
This commit is contained in:
@@ -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);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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} символов');
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user