Last active
August 29, 2015 14:22
-
-
Save tdharris/b2db56d8029337ed4a19 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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