Skip to content

Instantly share code, notes, and snippets.

@tdharris
Last active August 29, 2015 14:22
Show Gist options
  • Save tdharris/b2db56d8029337ed4a19 to your computer and use it in GitHub Desktop.
Save tdharris/b2db56d8029337ed4a19 to your computer and use it in GitHub Desktop.
package sf.test.telephony.us.transfers.warm;
import static org.junit.Assert.assertTrue;
import java.util.Collection;
import java.util.Set;
import obj.LeadData;
import org.echarts.test.sip.CATException;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.After;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import sf.test.TestBase;
import sf.actions.ClickToCall;
import sf.actions.Lead;
import util.SFUtils;
import util.SeleniumManager;
import util.SipPhone;
import util.SystemProperties;
import util.Utils;
@RunWith(Parameterized.class)
public class WarmTransferToEmployeeRejectAgentConnectedC2C extends TestBase
{
private ClickToCall c2c1;
private ClickToCall c2c2;
private SeleniumManager sm2 = null;
private static SipPhone agent1;
private static SipPhone agent2;
private static SipPhone client;
private static Lead lead = null;
private static LeadData leadData;
@FindBy(id = "topName")
private WebElement leadFirstName;
public WarmTransferToEmployeeRejectAgentConnectedC2C(String _data)
{
try
{
JSONObject json = new JSONObject(_data);
testCase = json.getJSONArray("testCase");
agent1 = new SipPhone();
agent2 = new SipPhone();
client = new SipPhone();
// Create lead
leadData = new LeadData(true);
lead = new Lead(sm, leadData);
leadData.setPhone(client.getPhoneNumber());
leadData.setMobilePhone(""); // Otherwise takes time looking for mobile phone field
lead.add();
} catch (JSONException e)
{
e.printStackTrace();
}
}
@Parameters
public static Collection<String[]> data()
{
return TestBase.data("ui_" + WarmTransferToEmployeeRejectAgentConnectedC2C.class.getSimpleName() + ".json", "ui_" + WarmTransferToEmployeeRejectAgentConnectedC2C.class.getSimpleName(), "/");
}
@After
public void tearDown()
{
agent1.release();
agent2.release();
client.release();
agent1.quit();
if (lead != null)
lead.delete();
if (sm2 != null)
sm2.stop();
}
@Test
public void testWarmTransferToEmployeeRejectAgentConnectedC2C()
{
// Setup Agent 1, create lead, dial client
c2c1 = new ClickToCall(sm)
.openSettings()
.setStationPhoneNumber(agent1.getPhoneNumber())
.disconnectAgentLeg()
.save();
c2c1 = lead.dialFromList();
agent1.waitForIncomingCall();
client.waitForIncomingCall();
// Setup Agent 2: connect agent leg, store window handles
sm2 = new SeleniumManager();
sm2.start();
SFUtils.login(sm2, SystemProperties.getSf2_username(), SystemProperties.getSf2_password());
c2c2 = new ClickToCall(sm2);
c2c2
.openSettings()
.setStationPhoneNumber(agent2.getPhoneNumber())
.disconnectAgentLeg()
.save()
.connectToDialer();
agent2.waitForIncomingCall();
c2c2.setAgentStatus("Ready for Inbound"); // For lead record pop
Set<String> windowsBefore = sm2.getWebDriver().getWindowHandles();
// Agent 1 (sm): Transfer to Agent 2 (sm2)
c2c1
.transfer()
.warmTransfer()
.transferToEmployee()
.setEmployee(SFUtils.getCurrentEmployee(sm2).toString())
.transfer();
agent2.waitForIncomingCall();
// Expect Agent 2 (sm2): Lead record to be popped
// Verify popped window
String recordPop = sm2.waitForPopup(windowsBefore, 5); // Switch to newly opened window
Assert.assertFalse("Lead record was not popped for Agent 2.", recordPop.isEmpty());
sm2.getWebDriver().switchTo().window(recordPop);
// Verify lead record
WebElement leadName = sm2.getWebDriver().findElement(By.className("pageDescription"));
String name = leadName.getText().trim();
Assert.assertTrue("The name found: " + name + " was incorrect.", lead.getData().getName().equalsIgnoreCase(name));
// Agent 2: Reject the transfer
try
{
// Expect transfer message prompt to accept or ignore
// Note: Unable to verify the correct message was played.
Utils.wait(5); // Wait for the message to play
agent2.getSipAgent().sendDTMF("2#");
} catch (CATException e)
{
e.printStackTrace();
}
// Expect an alert for Agent 1 indicating Agent 2's transfer rejection
SFUtils.waitForAlert(sm);
String message = driver.switchTo().alert().getText();
assertTrue("The wrong message was received: " + message, message.equalsIgnoreCase("Agent rejected incoming transfer."));
// Agent 1 still connected with client
assertTrue("Agent 1 can't hear the client.", agent1.hears(client));
assertTrue("Client can't hear the Agent 1.", client.hears(agent1));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment