Package org.fao.geonet.repository

Source Code of org.fao.geonet.repository.GeonetRepositoryTest

package org.fao.geonet.repository;

import org.fao.geonet.domain.Metadata;
import org.fao.geonet.domain.MetadataSourceInfo_;
import org.fao.geonet.domain.Metadata_;
import org.fao.geonet.repository.statistic.PathSpec;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.jpa.domain.Specifications;
import org.springframework.orm.jpa.JpaObjectRetrievalFailureException;

import javax.annotation.Nullable;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Root;
import java.util.concurrent.atomic.AtomicInteger;

import static junit.framework.Assert.assertNull;
import static org.fao.geonet.repository.specification.MetadataSpecs.hasMetadataId;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.springframework.data.jpa.domain.Specifications.where;

/**
* Test class for GeonetRepository.
* <p/>
* User: jeichar
* Date: 9/5/13
* Time: 11:44 AM
*/
public class GeonetRepositoryTest extends AbstractSpringDataTest {

    @Autowired
    MetadataRepository _repo;

    @Test(expected = JpaObjectRetrievalFailureException.class)
    public void testUpdateMetadataBadId() throws Exception {
        _repo.update(123123325, new Updater<Metadata>() {
            @Nullable
            @Override
            public void apply(@Nullable Metadata input) {
                // do nothing
            }
        });
    }

    @Test
    public void testUpdateMetadataReturnSameMd() throws Exception {
        Metadata md = _repo.save(MetadataRepositoryTest.newMetadata(_inc));

        final String updatedUUID1 = "Updated uuid";
        md = _repo.update(md.getId(), new Updater<Metadata>() {
            @Nullable
            @Override
            public void apply(@Nullable Metadata input) {
                input.setUuid(updatedUUID1);
            }
        });

        assertEquals(updatedUUID1, md.getUuid());
        assertEquals(updatedUUID1, _repo.findOne(md.getId()).getUuid());
    }

    @Test
    public void testBatchUpdateAttributes() throws Exception {
        Metadata md = _repo.save(MetadataRepositoryTest.newMetadata(_inc));
        Metadata md2 = _repo.save(MetadataRepositoryTest.newMetadata(_inc));
        Metadata md3 = _repo.save(MetadataRepositoryTest.newMetadata(_inc));


        final Specifications<Metadata> spec = where(hasMetadataId(md2.getId())).or(hasMetadataId(md3.getId()));
        PathSpec<Metadata, String> dataPathSpec = new PathSpec<Metadata, String>() {
            @Override
            public Path<String> getPath(Root<Metadata> root) {
                return root.get(Metadata_.data);
            }
        };
        String newData = "Updated DataElem";

        PathSpec<Metadata, Integer> sourcePathSpec = new PathSpec<Metadata, Integer>() {
            @Override
            public Path<Integer> getPath(Root<Metadata> root) {
                return root.get(Metadata_.sourceInfo).get(MetadataSourceInfo_.groupOwner);
            }
        };
        Integer newGroupId = 12345678;

        final BatchUpdateQuery<Metadata> updateQuery = _repo.createBatchUpdateQuery(dataPathSpec, newData);
        updateQuery.add(sourcePathSpec, newGroupId);

        updateQuery.setSpecification(spec);

        int updated = updateQuery.execute();

        assertEquals(2, updated);
        Metadata reloadedMd1 = _repo.findOne(md.getId());
        assertEquals(md.getData(), reloadedMd1.getData());
        assertFalse(newGroupId == reloadedMd1.getSourceInfo().getGroupOwner());

        Metadata reloadedMd2 = _repo.findOne(md2.getId());
        assertEquals(newData, reloadedMd2.getData());
        assertEquals(newGroupId, reloadedMd2.getSourceInfo().getGroupOwner());

        Metadata reloadedMd3 = _repo.findOne(md3.getId());
        assertEquals(newData, reloadedMd3.getData());
        assertEquals(newGroupId, reloadedMd3.getSourceInfo().getGroupOwner());
    }

    @Test
    public void testDeleteAllSpec() throws Exception {
        Metadata md = _repo.save(MetadataRepositoryTest.newMetadata(_inc));
        Metadata md2 = _repo.save(MetadataRepositoryTest.newMetadata(_inc));
        Metadata md3 = _repo.save(MetadataRepositoryTest.newMetadata(_inc));


        final Specifications<Metadata> spec = where(hasMetadataId(md2.getId())).or(hasMetadataId(md3.getId()));

        final int deleted = _repo.deleteAll(spec);

        assertEquals(2, deleted);
        assertEquals(1, _repo.count());

        assertNotNull(_repo.findOne(md.getId()));
        assertNull(_repo.findOne(md2.getId()));
        assertNull(_repo.findOne(md3.getId()));

        assertEquals(md.getId(), _repo.findAll().get(0).getId());
    }
}
TOP

Related Classes of org.fao.geonet.repository.GeonetRepositoryTest

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.