/**
* 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;
import com.eventsourcing.layout.Layout;
import lombok.SneakyThrows;
import lombok.Value;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
public class StandardCommandTest {
public static class SomeEvent extends StandardEvent {}
@Value
public static class SomeCommand extends StandardCommand<Void, Void> {
String a;
@Override public EventStream<Void> events() throws Exception {
return EventStream.of(new SomeEvent());
}
}
@Test
@SneakyThrows
public void layout() {
Layout<SomeCommand> layout = Layout.forClass(SomeCommand.class);
assertEquals(layout.getProperties().size(), 2);
assertNotNull(layout.getProperty("a"));
assertNotNull(layout.getProperty("timestamp"));
}
@Test
@SneakyThrows
public void passthrough() {
EventStream<Void> eventStream = new SomeCommand("a").events(null, null);
assertTrue(eventStream.getStream().anyMatch(e -> e instanceof SomeEvent));
}
}