package org.atteo.moonshine.tests;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import static org.assertj.core.api.Assertions.assertThat;
import org.atteo.moonshine.tests.MoonshineConfiguration.Config;
import org.junit.Assert;
import org.junit.Test;
@MoonshineConfiguration(skipDefault = true, forEach = {
@Config(id = "A", fromString = ""
+ "<config>"
+ " <simple message='A'/>"
+ "</config>"),
@Config(id = "B", fromString = ""
+ "<config>"
+ " <simple message='B'/>"
+ "</config>")
})
public class ShouldExecuteForEachConfigTest extends MoonshineTest {
@Inject
@Named("message")
private String message;
@Inject
@EnabledConfigs
private List<String> enabledConfigs;
@Test
public void shouldBeOneOfTwoMessages() throws IOException {
// when
if (!message.equals("A") && !message.equals("B")) {
Assert.fail("'A' or 'B' expected");
}
Files.write(Paths.get("target/ShouldExecuteForEachConfig.txt"),
message.getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND, StandardOpenOption.CREATE);
// then
assertThat(enabledConfigs).isNotNull().isNotEmpty();
// additional assertion in pom.xml
}
}