* Tests how the groups are merged.
*
* @see PersistenceManagerIF#mergeGroups
*/
public void testMergeChannels() {
ChannelGroupIF group1 = null;
ChannelGroupIF group2 = null;
ChannelIF channel1 = null;
ChannelIF channel2 = null;
ChannelIF channel3 = null;
try {
// Create 2 grops and 3 channels: 1 in first group and 2 in the second
group1 = manager.createGroup(tuids1);
group2 = manager.createGroup(tuids2);
channel1 = manager.createChannel(tuids1, url1);
channel2 = manager.createChannel(tuids2, url2);
channel3 = manager.createChannel(tuids3, url3);
final long group2Id = group2.getId();
// Add channels to groups
manager.addChannelToGroup(channel1, group1);
manager.addChannelToGroup(channel2, group2);
manager.addChannelToGroup(channel3, group2);
// Move channels from second to first
manager.mergeGroups(group1, group2);
// Check the lists of channels in groups
final Collection channels1 = group1.getAll();
assertNotNull(channels1);
assertEquals("Channels are incorrectly moved to first group.", 3, channels1.size());
assertTrue("Order of channels is incorrect.", channels1.contains(channel1));
assertTrue("Order of channels is incorrect.", channels1.contains(channel2));
assertTrue("Order of channels is incorrect.", channels1.contains(channel3));
assertEquals("ID of removed group is still in intialized state.", -1, group2.getId());
assertNull("Second group still can be found in storage.", findGroupById(group2Id));
} catch (PersistenceManagerException e) {
e.printStackTrace();
fail();
} finally {
// Delete groups and channels
try {
if (group1 != null) manager.deleteGroup(group1);
if (group2 != null && group2.getId() != -1) manager.deleteGroup(group2);
if (channel1 != null) manager.deleteChannel(channel1);
if (channel2 != null) manager.deleteChannel(channel2);
if (channel3 != null) manager.deleteChannel(channel3);
} catch (PersistenceManagerException e) {
// We can do nothing here.