Package org.eurekastreams.server.persistence

Source Code of org.eurekastreams.server.persistence.GadgetDefinitionMapperTest

/*
* Copyright (c) 2009-2010 Lockheed Martin Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.eurekastreams.server.persistence;

import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static junit.framework.Assert.assertTrue;

import java.util.Date;
import java.util.UUID;

import org.eurekastreams.server.domain.GadgetDefinition;
import org.eurekastreams.server.domain.GalleryItemCategory;
import org.eurekastreams.server.domain.PagedSet;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

/**
* This class is responsible for testing the gadget mapping in the domain model.
*
*/
public class GadgetDefinitionMapperTest extends DomainEntityMapperTest
{
    /**
     * Test instance of the Gadget Mapper that is wired up by Spring.
     */
    @Autowired
    private GadgetDefinitionMapper jpaGadgetDefinitionMapper;

    /**
     * Simple test to be sure that a gadget can be inserted correctly.
     */
    @Test
    public void testInsert()
    {
        String gadgetUrl = "http://www.example.com";
        String uuid = UUID.randomUUID().toString();
        GadgetDefinition testGadgetDefinition = new GadgetDefinition(gadgetUrl, uuid);
        testGadgetDefinition.setCategory(new GalleryItemCategory("somecategory"));
        jpaGadgetDefinitionMapper.insert(testGadgetDefinition);
        assertTrue(testGadgetDefinition.getId() > 0);
        assertEquals(uuid, testGadgetDefinition.getUUID());
    }

    /**
     * Test deleting a gadget def.
     */
    // public void testDelete()
    // {
    // final long gadgetDefId = 1831L;
    // GadgetDefinition gadgetDef = jpaGadgetDefinitionMapper.findById(gadgetDefId);
    // jpaGadgetDefinitionMapper.delete(gadgetDef);
    //
    // gadgetDef = jpaGadgetDefinitionMapper.findById(gadgetDefId);
    //
    // assertTrue("The gadget def was not deleted", gadgetDef == null);
    // }
    /**
     * Test to ensure that the dbunit dataset is correctly constructed.
     */
    @Test
    public void testDBUnitDataSet()
    {
        String gadgetUrl1 = "http://www.example.com/gadget1.xml";
        String gadgetUrl2 = "http://www.example.com/gadget2.xml";

        GadgetDefinition googleGadgetDefinition = jpaGadgetDefinitionMapper.findById(gadgetDefinitionId1);

        GadgetDefinition exampleGadgetDefinition = jpaGadgetDefinitionMapper.findById(gadgetDefinitionId2);

        assertEquals("DB Unit database not correct for gadget " + gadgetDefinitionId1, gadgetUrl1,
                googleGadgetDefinition.getUrl());

        assertEquals("DB Unit database not correct for Example gadget " + gadgetDefinitionId2, gadgetUrl2,
                exampleGadgetDefinition.getUrl());
    }

    /**
     * Tests findbyUUID.
     */
    @Test
    public void findByUUID()
    {
        // UUID of the Example Gadget Definition
        String uuid = "129d4fae-7dec-11d0-a765-00a0c91e6bf6";
        GadgetDefinition gadgetDef = jpaGadgetDefinitionMapper.findByUUID(uuid);
        final long defId = 1831L;
        assertEquals(defId, gadgetDef.getId());

    }

    /**
     * Tests the findSortedGadgetDefinitionsForCategory method.
     */
    @Test
    public void testFindGadgetDefinitionsForCategorySortedByPopularity()
    {
        // verify that it returns results.
        PagedSet<GadgetDefinition> results = jpaGadgetDefinitionMapper.findForCategorySortedByPopularity("News", 0, 1);

        assertEquals(2, results.getPagedSet().size());
        assertEquals(2, results.getPagedSet().size());
        int firstNumberOfUsers = results.getPagedSet().get(0).getNumberOfUsers();
        int secondNumberOfUsers = results.getPagedSet().get(1).getNumberOfUsers();

        assertTrue(firstNumberOfUsers > secondNumberOfUsers);
    }

    /**
     * Tests the findAll method.
     */
    @Test
    public void testFindAllGadgetDefinitions()
    {
        // verify that it returns results.
        PagedSet<GadgetDefinition> results = jpaGadgetDefinitionMapper.findAll(0, 1);

        assertEquals(2, results.getPagedSet().size());
        assertEquals(2, results.getPagedSet().size());
    }

    /**
     * Tests the findSortedGadgetDefinitionsForCategory method.
     */
    @Test
    public void testFindGadgetDefinitionsForCategorySortedByRecent()
    {
        // verify that it returns results.
        PagedSet<GadgetDefinition> results = jpaGadgetDefinitionMapper.findForCategorySortedByRecent("News", 0, 1);
        assertEquals(2, results.getPagedSet().size());
        Date firstDate = results.getPagedSet().get(0).getCreated();
        Date secondDate = results.getPagedSet().get(1).getCreated();

        assertTrue(firstDate.after(secondDate));
    }

    /**
     * Tests that the findSortedGadgetDefinitionsSortedByRecentForCategory method returns only gadget defs of the
     * specified category.
     */
    @Test
    public void testFindGadgetDefinitionsForCategorySortedByRecentReturnsRightCategory()
    {
        // verify that it returns results.
        PagedSet<GadgetDefinition> results = jpaGadgetDefinitionMapper.findForCategorySortedByRecent("News", 0, 1);
        assertEquals(2, results.getPagedSet().size());
        GalleryItemCategory firstCategory = results.getPagedSet().get(0).getCategory();
        GalleryItemCategory secondCategory = results.getPagedSet().get(1).getCategory();

        assertEquals(firstCategory.getName(), "News");
        assertEquals(secondCategory.getName(), "News");
    }

    /**
     * Tests that the findSortedGadgetDefinitionsSortedByPopularityForCategory method returns only gadget defs of the
     * specified category.
     */
    @Test
    public void testFindGadgetDefinitionsForCategorySortedByPopularityReturnsRightCategory()
    {
        // verify that it returns results.
        PagedSet<GadgetDefinition> results = jpaGadgetDefinitionMapper.findForCategorySortedByPopularity("Weather", 0,
                1);
        assertEquals(2, results.getPagedSet().size());
        GalleryItemCategory firstCategory = results.getPagedSet().get(0).getCategory();
        GalleryItemCategory secondCategory = results.getPagedSet().get(1).getCategory();

        assertEquals(firstCategory.getName(), "Weather");
        assertEquals(secondCategory.getName(), "Weather");
    }

    /**
     * Tests that the findSortedGadgetDefinitionsSortedByPopularityForCategory method returns gadget defs of any
     * category when category parameter is empty.
     */
    @Test
    public void testFindGadgetDefinitionsForCategorySortedByPopularityReturnsAll()
    {
        // verify that it returns results.
        PagedSet<GadgetDefinition> results = jpaGadgetDefinitionMapper.findSortedByPopularity(0, 3);
        assertEquals(4, results.getPagedSet().size());

        int firstNumberOfUsers = results.getPagedSet().get(0).getNumberOfUsers();
        int secondNumberOfUsers = results.getPagedSet().get(1).getNumberOfUsers();
        int thirdNumberOfUsers = results.getPagedSet().get(2).getNumberOfUsers();
        int forthNumberOfUsers = results.getPagedSet().get(3).getNumberOfUsers();

        assertTrue(firstNumberOfUsers > secondNumberOfUsers);
        assertTrue(secondNumberOfUsers > thirdNumberOfUsers);
        assertTrue(thirdNumberOfUsers > forthNumberOfUsers);
    }

    /**
     * Tests that the Refresh method updates the gadget user counts appropriately.
     */
    @Test
    public void testRefreshGadgetDefinitionUserCounts()
    {
        PagedSet<GadgetDefinition> results = jpaGadgetDefinitionMapper.findSortedByPopularity(0, 3);
        assertEquals("Size of result set is invalid", 4, results.getPagedSet().size());
        assertEquals("Most popular before refresh is not 4", 4, results.getPagedSet().get(0)
                .getNumberOfUsers());
        assertEquals("Most popular before refresh is not 3", 3, results.getPagedSet().get(1)
                .getNumberOfUsers());
        assertEquals("Most popular before refresh is not 2", 2, results.getPagedSet().get(2)
                .getNumberOfUsers());
        assertEquals("Most popular before refresh is not 1", 1, results.getPagedSet().get(3)
                .getNumberOfUsers());

        jpaGadgetDefinitionMapper.refreshGadgetDefinitionUserCounts();

        getEntityManager().clear();

        PagedSet<GadgetDefinition> refreshedResults = jpaGadgetDefinitionMapper.findSortedByPopularity(0, 3);
        assertEquals("Size of refreshed result set is invalid", 4, refreshedResults.getPagedSet().size());
        assertEquals("Most popular after refresh is not 4", 3, refreshedResults.getPagedSet().get(0)
                .getNumberOfUsers());
        assertEquals("Most popular after refresh is not 4", 2, refreshedResults.getPagedSet().get(1)
                .getNumberOfUsers());
        assertEquals("Most popular after refresh is not 1", 1, refreshedResults.getPagedSet().get(2)
                .getNumberOfUsers());
        assertEquals("Most popular after refresh is not 0", 0, refreshedResults.getPagedSet().get(3)
                .getNumberOfUsers());
    }

    /**
     * Tests that the findSortedGadgetDefinitionsSortedByPopularityForCategory method returns gadget defs of any
     * category when category parameter is empty.
     */
    @Test
    public void testFindGadgetDefinitionsForCategorySortedByRecentReturnsAll()
    {
        // verify that it returns results.
        PagedSet<GadgetDefinition> results = jpaGadgetDefinitionMapper.findSortedByRecent(0, 3);
        assertEquals(4, results.getPagedSet().size());
    }

    /**
     * Test the findOrCreate() method using a theme that is in the database.
     */
    @Test
    public void findByUrlWithExistingUrl()
    {
        GadgetDefinition gd = jpaGadgetDefinitionMapper.findByUrl("http://www.example.com/gadget1.xml");

        assertNotNull("Did not find the gadget def", gd);
    }

    /**
     * Test the findOrCreate() method using a theme that is in the database.
     */
    @Test
    public void findByUrlWithNonExistingUrl()
    {
        GadgetDefinition gd = jpaGadgetDefinitionMapper.findByUrl("http://www.nonexistentgadgetdef.com");

        assertEquals("found the theme , but it should not exist", null, gd);
    }
}
TOP

Related Classes of org.eurekastreams.server.persistence.GadgetDefinitionMapperTest

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.