Package in.partake.model.dao.access

Source Code of in.partake.model.dao.access.EventCommentAccessTest

package in.partake.model.dao.access;

import in.partake.app.PartakeApp;
import in.partake.app.PartakeTestApp;
import in.partake.base.PartakeException;
import in.partake.base.TimeUtil;
import in.partake.model.IPartakeDAOs;
import in.partake.model.access.DBAccess;
import in.partake.model.dao.DAOException;
import in.partake.model.dao.DataIterator;
import in.partake.model.dao.PartakeConnection;
import in.partake.model.dao.access.IEventCommentAccess;
import in.partake.model.dto.EventComment;
import in.partake.model.fixture.impl.EventCommentTestDataProvider;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

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

public class EventCommentAccessTest extends AbstractDaoTestCaseBase<IEventCommentAccess, EventComment, String> {
    private EventCommentTestDataProvider provider;

    @Before
    public void setup() throws Exception {
        super.setup(PartakeApp.getDBService().getDAOs().getCommentAccess());
        provider = PartakeTestApp.getTestService().getTestDataProviderSet().getCommentDataProvider();
    }

    @Override
    protected EventComment create(long pkNumber, String pkSalt, int objNumber) {
        return provider.create(pkNumber, pkSalt, objNumber);
    }

    @Test
    // TODO tell about order of the DataIterator's value.
    public void testToFindByEventId() throws Exception {
        new DBAccess<Void>() {
            @Override
            protected Void doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                String prefix = daos.getCommentAccess().getFreshId(con);

                String[][] ids = new String[10][10];

                for (int i = 0; i < 10; ++i) {
                    for (int j = 0; j < 10; ++j) {
                        ids[i][j] = UUID.randomUUID().toString();
                        EventComment original = new EventComment(ids[i][j], prefix + "eventId" + i, "userId", "comment content", false, TimeUtil.getCurrentDateTime());
                        daos.getCommentAccess().put(con, original);
                        TimeUtil.waitForTick();
                    }
                }

                for (int i = 0; i < 10; ++i) {
                    DataIterator<EventComment> it = daos.getCommentAccess().getCommentsByEvent(con, prefix + "eventId" + i);
                    try {
                        List<String> strs = new ArrayList<String>();
                        while (it.hasNext()) {
                            EventComment comment = it.next();
                            String id = comment.getId();
                            if (id == null) { continue; }
                            strs.add(id);
                        }
                        Assert.assertEquals(10, strs.size());

                        for (int j = 0; j < 10; ++j) {
                            Assert.assertEquals(ids[i][j], strs.get(j));
                        }
                    } finally {
                        it.close();
                    }
                }
                return null;
            }
        }.execute();
    }

    @Test(expected = UnsupportedOperationException.class)
    public void testToUpdateByIterator() throws Exception {
        new DBAccess<Void>() {
            @Override
            protected Void doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                String prefix = daos.getCommentAccess().getFreshId(con);

                String[] ids = new String[10];
                // create
                for (int i = 0; i < 10; ++i) {
                    ids[i] = UUID.randomUUID().toString();
                    EventComment original = new EventComment(ids[i], prefix + "eventId", "userId", "comment content", false, TimeUtil.getCurrentDateTime());
                    daos.getCommentAccess().put(con, original);
                }

                // update
                {
                    DataIterator<EventComment> it = daos.getCommentAccess().getCommentsByEvent(con, prefix + "eventId");
                    try {
                        while (it.hasNext()) {
                            EventComment comment = it.next();

                            EventComment updated = new EventComment(comment);
                            updated.setComment("New comment!");

                            it.update(updated);
                        }
                    } finally {
                        it.close();
                    }
                }
                // get them
                {
                    DataIterator<EventComment> it = daos.getCommentAccess().getCommentsByEvent(con, prefix + "eventId");
                    try {
                        while (it.hasNext()) {
                            EventComment comment = it.next();
                            Assert.assertEquals("New comment!", comment.getComment());
                        }
                    } finally {
                        it.close();
                    }
                }
                return null;
            }
        }.execute();
    }
}
TOP

Related Classes of in.partake.model.dao.access.EventCommentAccessTest

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.