package integration;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.WebDriverRunner.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeFalse;
public class FileUploadTest extends IntegrationTest {
@Before
public void openFileUploadForm() {
assumeFalse(isPhantomjs());
if (isIE()) {
closeWebDriver();
}
openFile("file_upload_form.html");
}
@Test
public void userCanUploadFileFromClasspath() {
File f1 = $("#cv").uploadFromClasspath("hello_world.txt");
File f2 = $("#avatar").uploadFromClasspath("firebug-1.11.4.xpi");
$("#submit").click();
$("h3").shouldHave(text("Uploaded 2 files"));
assertTrue(f1.exists());
assertTrue(f2.exists());
assertEquals("hello_world.txt", f1.getName());
assertEquals("firebug-1.11.4.xpi", f2.getName());
assertEquals(2, server.uploadedFiles.size());
assertTrue(server.uploadedFiles.get(0).getName().endsWith("hello_world.txt"));
assertTrue(server.uploadedFiles.get(1).getName().endsWith("firebug-1.11.4.xpi"));
assertEquals("Hello, WinRar!", server.uploadedFiles.get(0).getString());
}
@Test
public void userCanUploadFile() {
File file = $("#cv").uploadFile(new File("src/test/java/../resources/hello_world.txt"));
$("#submit").click();
$("h3").shouldHave(text("Uploaded 1 files"));
assertTrue(file.exists());
assertTrue(file.getPath().replace(File.separatorChar, '/').endsWith("src/test/resources/hello_world.txt"));
assertTrue(server.uploadedFiles.get(0).getName().endsWith("hello_world.txt"));
}
@Test
public void userCanUploadMultipleFilesFromClasspath() {
$("#multi-file-upload-form .file").uploadFromClasspath(
"hello_world.txt",
"jquery.min.js",
"jquery-ui.min.css",
"long_ajax_request.html",
"page_with_alerts.html",
"page_with_dynamic_select.html",
"page_with_frames.html",
"page_with_images.html",
"selenide-logo-big.png");
$("#multi-file-upload-form .submit").click();
$("h3").shouldHave(text("Uploaded 9 files"));
assertEquals(9, server.uploadedFiles.size());
assertTrue(server.uploadedFiles.get(0).getName().endsWith("hello_world.txt"));
assertTrue(server.uploadedFiles.get(1).getName().endsWith("jquery.min.js"));
assertTrue(server.uploadedFiles.get(2).getName().endsWith("jquery-ui.min.css"));
assertTrue(server.uploadedFiles.get(3).getName().endsWith("long_ajax_request.html"));
assertTrue(server.uploadedFiles.get(8).getName().endsWith("selenide-logo-big.png"));
assertTrue(server.uploadedFiles.get(0).getString().contains("Hello, WinRar!"));
assertTrue(server.uploadedFiles.get(1).getString().contains("jQuery JavaScript Library"));
assertTrue(server.uploadedFiles.get(2).getString().contains("jQuery UI"));
}
@Test
public void userCanUploadMultipleFiles() {
File file = $("#multi-file-upload-form .file").uploadFile(
new File("src/test/java/../resources/hello_world.txt"),
new File("src/test/resources/jquery.min.js"));
$("#multi-file-upload-form .submit").click();
$("h3").shouldHave(text("Uploaded 2 files"));
assertTrue(file.exists());
assertTrue(file.getPath().replace(File.separatorChar, '/').endsWith("src/test/resources/hello_world.txt"));
assertEquals(2, server.uploadedFiles.size());
assertTrue(server.uploadedFiles.get(0).getName().endsWith("hello_world.txt"));
assertTrue(server.uploadedFiles.get(1).getName().endsWith("jquery.min.js"));
assertTrue(server.uploadedFiles.get(0).getString().contains("Hello, WinRar!"));
assertTrue(server.uploadedFiles.get(1).getString().contains("jQuery JavaScript Library v1.8.3"));
}
}