com.liferay.calendar.upgrade.v1_0_5.test.UpgradeCalendarResourceTest.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.calendar.upgrade.v1_0_5.test.UpgradeCalendarResourceTest.java

Source

/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package com.liferay.calendar.upgrade.v1_0_5.test;

import com.liferay.arquillian.extension.junit.bridge.junit.Arquillian;
import com.liferay.calendar.model.CalendarResource;
import com.liferay.calendar.service.CalendarResourceLocalServiceUtil;
import com.liferay.calendar.util.CalendarResourceUtil;
import com.liferay.portal.kernel.dao.jdbc.DataAccess;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.model.Role;
import com.liferay.portal.kernel.model.RoleConstants;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.service.RoleLocalServiceUtil;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.service.UserLocalServiceUtil;
import com.liferay.portal.kernel.test.rule.DeleteAfterTestRun;
import com.liferay.portal.kernel.test.util.GroupTestUtil;
import com.liferay.portal.kernel.upgrade.UpgradeProcess;
import com.liferay.portal.kernel.upgrade.UpgradeStep;
import com.liferay.portal.upgrade.registry.UpgradeStepRegistrator;
import com.liferay.registry.Registry;
import com.liferay.registry.RegistryUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * @author Adam Brandizzi
 */
@RunWith(Arquillian.class)
public class UpgradeCalendarResourceTest {

    @Before
    public void setUp() throws Exception {
        _group = GroupTestUtil.addGroup();

        setUpUpgradeCalendarResource();
    }

    @Test
    public void testUpgradeCalendarResourceUserId() throws Exception {
        CalendarResource calendarResource = getDefaultUserCalendarResource();

        long userId = calendarResource.getUserId();

        assertUserIsDefault(userId);

        _upgradeCalendarResource.upgrade();

        userId = getCalendarResourceUserId(calendarResource);

        assertUserIsAdministrator(userId);
    }

    protected void assertUserIsAdministrator(long userId) throws PortalException {

        User user = UserLocalServiceUtil.getUser(userId);

        Assert.assertFalse(user.isDefaultUser());

        Role administratorRole = RoleLocalServiceUtil.getRole(_group.getCompanyId(), RoleConstants.ADMINISTRATOR);

        Assert.assertTrue(RoleLocalServiceUtil.hasUserRole(user.getUserId(), administratorRole.getRoleId()));
    }

    protected void assertUserIsDefault(long userId) throws PortalException {
        User user = UserLocalServiceUtil.getUser(userId);

        Assert.assertTrue(user.isDefaultUser());
    }

    protected long getCalendarResourceUserId(CalendarResource calendarResource) throws SQLException {

        try (Connection con = DataAccess.getUpgradeOptimizedConnection()) {
            PreparedStatement ps = con
                    .prepareStatement("select userId from CalendarResource where " + "calendarResourceId = ?");

            ps.setLong(1, calendarResource.getCalendarResourceId());

            ResultSet rs = ps.executeQuery();

            rs.next();

            return rs.getLong(1);
        }
    }

    protected CalendarResource getDefaultUserCalendarResource() throws PortalException {

        ServiceContext serviceContext = new ServiceContext();

        CalendarResource calendarResource = CalendarResourceUtil.getGroupCalendarResource(_group.getGroupId(),
                serviceContext);

        long defaultUserId = UserLocalServiceUtil.getDefaultUserId(_group.getCompanyId());

        calendarResource.setUserId(defaultUserId);

        return CalendarResourceLocalServiceUtil.updateCalendarResource(calendarResource);
    }

    protected void setUpUpgradeCalendarResource() {
        Registry registry = RegistryUtil.getRegistry();

        UpgradeStepRegistrator upgradeStepRegistror = registry
                .getService("com.liferay.calendar.internal.upgrade.CalendarServiceUpgrade");

        upgradeStepRegistror.register(new UpgradeStepRegistrator.Registry() {

            @Override
            public void register(String bundleSymbolicName, String fromSchemaVersionString,
                    String toSchemaVersionString, UpgradeStep... upgradeSteps) {

                for (UpgradeStep upgradeStep : upgradeSteps) {
                    Class<?> clazz = upgradeStep.getClass();

                    String className = clazz.getName();

                    if (className.contains("UpgradeCalendarResource")) {
                        _upgradeCalendarResource = (UpgradeProcess) upgradeStep;
                    }
                }
            }

        });
    }

    @DeleteAfterTestRun
    private Group _group;

    private UpgradeProcess _upgradeCalendarResource;

}