package de.flower.rmt.ui.page.event.manager.notification;
import de.flower.common.util.Collections;
import de.flower.rmt.model.db.entity.Invitation;
import de.flower.rmt.model.db.entity.event.Event;
import de.flower.rmt.test.AbstractRMTWicketMockitoTests;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.tester.FormTester;
import org.testng.annotations.Test;
import javax.mail.internet.InternetAddress;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static org.testng.Assert.*;
/**
* @author flowerrrr
*/
public class SelectRecipientPanelTest extends AbstractRMTWicketMockitoTests {
@Test
public void testSubmitSelectedRecipients() {
final Set<InternetAddress> actualRecipients = new HashSet<InternetAddress>();
Event event = testData.newEvent();
InternetAddress[] ia1 = event.getInvitations().get(2).getInternetAddresses();
InternetAddress[] ia2 = event.getInvitations().get(4).getInternetAddresses();
Panel panel = new SelectRecipientPanel(Model.of(event), (IModel<List<Invitation>>) (Object) Model.ofList(event.getInvitations())) {
@Override
protected void onSubmit(final AjaxRequestTarget target, final List<InternetAddress[]> recipients) {
actualRecipients.addAll(Collections.flattenArray(recipients));
}
};
wicketTester.startComponentInPage(panel);
wicketTester.dumpComponentWithPage();
FormTester formTester = wicketTester.newFormTester("form");
formTester.select("group", 2);
formTester.select("group", 4);
wicketTester.clickLink("submitButton");
// order of selected choices is not guaranteed to be same as in html-markup
assertEquals(actualRecipients, new HashSet<InternetAddress>(Collections.flattenArray(Arrays.asList(ia1, ia2))));
}
}