/**
* Copyright (c) 2016, All Contributors (see CONTRIBUTORS file)
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package com.eventsourcing.index;
import com.eventsourcing.*;
import com.eventsourcing.hlc.HybridTimestamp;
import com.eventsourcing.hlc.NTPServerTimeProvider;
import com.eventsourcing.inmem.MemoryIndexEngine;
import com.eventsourcing.inmem.MemoryJournal;
import com.eventsourcing.repository.StandardRepository;
import com.googlecode.cqengine.resultset.ResultSet;
import lombok.Builder;
import lombok.SneakyThrows;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
public class EntityQueryFactoryTest {
protected Repository repository;
@BeforeMethod
public void setUp() throws Exception {
repository = new StandardRepository();
repository.addCommandSetProvider(
new PackageCommandSetProvider(new Package[]{EntityQueryFactoryTest.class.getPackage()}));
repository.addEventSetProvider(
new PackageEventSetProvider(new Package[]{EntityQueryFactoryTest.class.getPackage()}));
repository.setJournal(new MemoryJournal());
NTPServerTimeProvider timeProvider = new NTPServerTimeProvider(new String[]{"localhost"});
repository.setPhysicalTimeProvider(timeProvider);
repository.setIndexEngine(new MemoryIndexEngine());
repository.setLockProvider(new LocalLockProvider());
repository.startAsync().awaitRunning();
}
@AfterMethod
public void tearDown() throws Exception {
repository.stopAsync().awaitTerminated();
}
public static class TestCommand extends StandardCommand<Void, Void> {
@Builder
public TestCommand(HybridTimestamp timestamp) {
super(timestamp);
}
}
@Test @SneakyThrows
public void all() {
ResultSet<EntityHandle<TestCommand>> resultSet = repository
.query(TestCommand.class, EntityQueryFactory.all(TestCommand.class));
assertTrue(resultSet.isEmpty());
repository.publish(TestCommand.builder().build()).get();
resultSet = repository.query(TestCommand.class, EntityQueryFactory.all(TestCommand.class));
assertTrue(resultSet.isNotEmpty());
assertEquals(resultSet.size(), 1);
}
}