Package com.sparc.knappsack.components.validators

Source Code of com.sparc.knappsack.components.validators.ApplicationValidatorTest

package com.sparc.knappsack.components.validators;

import com.sparc.knappsack.components.entities.Application;
import com.sparc.knappsack.components.entities.Group;
import com.sparc.knappsack.components.entities.Organization;
import com.sparc.knappsack.components.entities.User;
import com.sparc.knappsack.components.services.GroupService;
import com.sparc.knappsack.components.services.OrganizationService;
import com.sparc.knappsack.components.services.UserService;
import com.sparc.knappsack.enums.ApplicationType;
import com.sparc.knappsack.forms.ApplicationForm;
import com.sparc.knappsack.forms.ApplicationVersionForm;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Matchers;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.validation.Errors;
import org.springframework.web.multipart.MultipartFile;

import java.awt.image.BufferedImage;

import static junit.framework.Assert.*;
import static org.mockito.Mockito.*;

@RunWith(MockitoJUnitRunner.class)
public class ApplicationValidatorTest {

    @Mock
    private ImageValidator mockImageValidator;

    @Mock
    private UserService mockUserService;

    @Mock
    private OrganizationService mockOrganizationService;

    @Mock
    private GroupService mockGroupService;

    @Mock
    private ApplicationVersionValidator mockApplicationVersionValidator;

    @InjectMocks
    private ApplicationValidator validator = new ApplicationValidator();

    @Mock private MockMultipartFile mockMultipartFile;

    private Errors errors;
    private ApplicationForm applicationForm;
    private User user = mock(User.class);

    @Before
    public void setup() {
        applicationForm = new ApplicationForm();
        errors = new BeanPropertyBindingResult(applicationForm, "applicationForm");
    }

    @Test
    public void testValidatorSupportsClass() {
        assertTrue(validator.supports(applicationForm.getClass()));
    }

    @Test
    public void testValidatorNotSupportsClass() {
        assertFalse(validator.supports(String.class));
    }

    @Test
    public void testValid() {
        applicationForm.setApplicationType(ApplicationType.ANDROID);
        applicationForm.setCategoryId(1L);
        applicationForm.setDescription("test description");
        applicationForm.setName("name");
        applicationForm.setIcon(mockMultipartFile);
        BufferedImage mockBufferedImage = mock(BufferedImage.class);

        when(mockImageValidator.createBufferedImage(Matchers.any(MultipartFile.class))).thenReturn(mockBufferedImage);
        when(mockImageValidator.isValidImageSize(Matchers.any(MultipartFile.class), Matchers.anyLong())).thenReturn(true);
        when(mockImageValidator.isValidImageType(Matchers.any(MultipartFile.class))).thenReturn(true);
        when(mockImageValidator.isValidMinDimensions(Matchers.any(BufferedImage.class), Matchers.anyLong(), Matchers.anyLong())).thenReturn(true);
        when(mockImageValidator.isSquare(Matchers.any(BufferedImage.class))).thenReturn(true);
        when(mockUserService.getUserFromSecurityContext()).thenReturn(user);
        when(mockGroupService.get(anyLong())).thenReturn(new Group());
        doNothing().when(mockApplicationVersionValidator).validateVersionName(any(Errors.class), any(ApplicationVersionForm.class));
        doNothing().when(mockApplicationVersionValidator).validateRecentChanges(any(Errors.class), any(ApplicationVersionForm.class));
        doNothing().when(mockApplicationVersionValidator).validateOrganizationLimits(any(Errors.class), any(ApplicationVersionForm.class), any(Application.class), any(Organization.class));
        doNothing().when(mockApplicationVersionValidator).validateInstallFile(any(Errors.class), any(ApplicationVersionForm.class), any(ApplicationType.class));
        doNothing().when(mockApplicationVersionValidator).validateResign(any(ApplicationVersionForm.class), any(Group.class), any(ApplicationType.class), any(Errors.class));

        validator.validate(applicationForm, errors);

        assertFalse(errors.hasErrors());
    }

    @Test
    public void testAllFieldsInvalid() {
        when(mockUserService.getUserFromSecurityContext()).thenReturn(user);
        when(mockGroupService.get(anyLong())).thenReturn(null);
        doNothing().when(mockApplicationVersionValidator).validateVersionName(any(Errors.class), any(ApplicationVersionForm.class));
        doNothing().when(mockApplicationVersionValidator).validateRecentChanges(any(Errors.class), any(ApplicationVersionForm.class));
        doNothing().when(mockApplicationVersionValidator).validateOrganizationLimits(any(Errors.class), any(ApplicationVersionForm.class), any(Application.class), any(Organization.class));
        doNothing().when(mockApplicationVersionValidator).validateInstallFile(any(Errors.class), any(ApplicationVersionForm.class), any(ApplicationType.class));
        doNothing().when(mockApplicationVersionValidator).validateResign(any(ApplicationVersionForm.class), any(Group.class), any(ApplicationType.class), any(Errors.class));

        validator.validate(applicationForm, errors);

        assertTrue(errors.hasErrors());
        Assert.assertEquals(errors.getErrorCount(), 4);
        assertNotNull(errors.getFieldError("applicationType"));
        assertNotNull(errors.getFieldError("name"));
        assertNotNull(errors.getFieldError("description"));
        assertNotNull(errors.getFieldError("categoryId"));

        //Reset test
        setup();

        applicationForm.setName("");
        applicationForm.setDescription("");

        validator.validate(applicationForm, errors);

        assertTrue(errors.hasErrors());
        Assert.assertEquals(errors.getErrorCount(), 4);
        assertNotNull(errors.getFieldError("name"));
        assertNotNull(errors.getFieldError("description"));
        assertNotNull(errors.getFieldError("categoryId"));
        assertNotNull(errors.getFieldError("applicationType"));

    }

    @Test
    public void testInvalidIcon() {
        when(mockUserService.getUserFromSecurityContext()).thenReturn(user);
        when(mockGroupService.get(anyLong())).thenReturn(null);
        doNothing().when(mockApplicationVersionValidator).validateVersionName(any(Errors.class), any(ApplicationVersionForm.class));
        doNothing().when(mockApplicationVersionValidator).validateRecentChanges(any(Errors.class), any(ApplicationVersionForm.class));
        doNothing().when(mockApplicationVersionValidator).validateOrganizationLimits(any(Errors.class), any(ApplicationVersionForm.class), any(Application.class), any(Organization.class));
        doNothing().when(mockApplicationVersionValidator).validateInstallFile(any(Errors.class), any(ApplicationVersionForm.class), any(ApplicationType.class));
        doNothing().when(mockApplicationVersionValidator).validateResign(any(ApplicationVersionForm.class), any(Group.class), any(ApplicationType.class), any(Errors.class));

        applicationForm.setApplicationType(ApplicationType.ANDROID);
        applicationForm.setCategoryId(1L);
        applicationForm.setDescription("test description");
        applicationForm.setName("name");
        applicationForm.setIcon(mockMultipartFile);

        BufferedImage mockBufferedImage = mock(BufferedImage.class);

        when(mockImageValidator.createBufferedImage(Matchers.any(MultipartFile.class))).thenReturn(mockBufferedImage);
        when(mockImageValidator.isValidImageSize(Matchers.any(MultipartFile.class), Matchers.anyLong())).thenReturn(false);
        when(mockImageValidator.isValidImageType(Matchers.any(MultipartFile.class))).thenReturn(false);
        when(mockImageValidator.isValidMinDimensions(Matchers.any(BufferedImage.class), Matchers.anyLong(), Matchers.anyLong())).thenReturn(false);

        validator.validate(applicationForm, errors);

        assertTrue(errors.hasErrors());
        Assert.assertEquals(errors.getErrorCount(), 3);
        Assert.assertEquals(errors.getFieldErrorCount("icon"), 3);
    }

    @Test
    public void testInvalidScreenShot() {
        when(mockUserService.getUserFromSecurityContext()).thenReturn(user);
        when(mockGroupService.get(anyLong())).thenReturn(null);
        doNothing().when(mockApplicationVersionValidator).validateVersionName(any(Errors.class), any(ApplicationVersionForm.class));
        doNothing().when(mockApplicationVersionValidator).validateRecentChanges(any(Errors.class), any(ApplicationVersionForm.class));
        doNothing().when(mockApplicationVersionValidator).validateOrganizationLimits(any(Errors.class), any(ApplicationVersionForm.class), any(Application.class), any(Organization.class));
        doNothing().when(mockApplicationVersionValidator).validateInstallFile(any(Errors.class), any(ApplicationVersionForm.class), any(ApplicationType.class));
        doNothing().when(mockApplicationVersionValidator).validateResign(any(ApplicationVersionForm.class), any(Group.class), any(ApplicationType.class), any(Errors.class));

        MockMultipartFile screenShot1 = mock(MockMultipartFile.class);
        MockMultipartFile screenShot2 = mock(MockMultipartFile.class);
        MockMultipartFile screenShot3 = mock(MockMultipartFile.class);

        applicationForm.setApplicationType(ApplicationType.ANDROID);
        applicationForm.setCategoryId(1L);
        applicationForm.setDescription("test description");
        applicationForm.setName("name");
        applicationForm.getScreenshots().add(screenShot1);
        applicationForm.getScreenshots().add(screenShot2);
        applicationForm.getScreenshots().add(screenShot3);

        BufferedImage mockBufferedImage = mock(BufferedImage.class);

        when(mockImageValidator.createBufferedImage(Matchers.any(MultipartFile.class))).thenReturn(mockBufferedImage);
        when(mockImageValidator.isValidImageSize(screenShot1, 819200)).thenReturn(true);
        when(mockImageValidator.isValidImageType(screenShot1)).thenReturn(true);
        when(mockImageValidator.isValidImageSize(screenShot2, 819200)).thenReturn(false);
        when(mockImageValidator.isValidImageType(screenShot2)).thenReturn(false);
        when(mockImageValidator.isValidImageSize(screenShot3, 819200)).thenReturn(true);
        when(mockImageValidator.isValidImageType(screenShot3)).thenReturn(true);

        validator.validate(applicationForm, errors);

        assertTrue(errors.hasErrors());
        Assert.assertEquals(errors.getErrorCount(), 2);
        Assert.assertEquals(errors.getFieldErrorCount("screenshots[1]"), 2);
    }

}
TOP

Related Classes of com.sparc.knappsack.components.validators.ApplicationValidatorTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.