Skip to content
Snippets Groups Projects
Commit 9f9e2d07 authored by srosse's avatar srosse
Browse files

Merge remote-tracking branch 'origin/OpenOLAT_14.0'

parents 780b0708 6a602ff1
No related branches found
No related tags found
No related merge requests found
Showing with 72 additions and 66 deletions
...@@ -70,6 +70,7 @@ public class VFSXStream { ...@@ -70,6 +70,7 @@ public class VFSXStream {
mystream.omitField(RevisionFileImpl.class, "file"); mystream.omitField(RevisionFileImpl.class, "file");
mystream.omitField(VFSMetadataImpl.class, "originFile"); mystream.omitField(VFSMetadataImpl.class, "originFile");
mystream.omitField(VFSMetadataImpl.class, "metaFile"); mystream.omitField(VFSMetadataImpl.class, "metaFile");
mystream.omitField(VFSMetadataImpl.class, "lockedByIdentKey");
mystream.aliasAttribute(VFSMetadataImpl.class, "cannotGenerateThumbnails", "cannotGenerateThumbnail"); mystream.aliasAttribute(VFSMetadataImpl.class, "cannotGenerateThumbnails", "cannotGenerateThumbnail");
mystream.aliasAttribute(VFSMetadataImpl.class, "author", "authorIdentKey"); mystream.aliasAttribute(VFSMetadataImpl.class, "author", "authorIdentKey");
mystream.aliasAttribute(VFSMetadataImpl.class, "licenseType", "licenseTypeKey"); mystream.aliasAttribute(VFSMetadataImpl.class, "licenseType", "licenseTypeKey");
......
...@@ -50,7 +50,19 @@ public class VFSXStreamTest extends OlatTestCase { ...@@ -50,7 +50,19 @@ public class VFSXStreamTest extends OlatTestCase {
log.error("", e); log.error("", e);
throw e; throw e;
} }
Assert.assertNotNull(versions);
}
@Test
public void readOldVersions_locked() throws IOException {
VersionsFileImpl versions = null;
try(InputStream in = VFSXStreamTest.class.getResourceAsStream("docx.versions.docx.xml")) {
versions = (VersionsFileImpl)VFSXStream.read(in);
} catch(IOException | OLATRuntimeException e) {
log.error("", e);
throw e;
}
Assert.assertNotNull(versions); Assert.assertNotNull(versions);
} }
......
<?xml version="1.0" encoding="UTF-8"?>
<versions>
<versioned>true</versioned>
<author>openolat</author>
<creator>openolat</creator>
<revisionNr>2</revisionNr>
<revisions>
<revision>
<author>openolat</author>
<name>17C.docx</name>
<uuid>2a97afdc-c069-4946-b056-3ebabbfc1342</uuid>
<lastModified>1558539284000</lastModified>
<revisionNr>1</revisionNr>
<filename>8f201ef7-996e-4ba5-aa39-6091e52d905e_17C.docx</filename>
<metadata class="metadata">
<uuid>7a34d2ee982845f4930ffa5524b140b8</uuid>
<authorIdentKey>455737485</authorIdentKey>
<lockedByIdentKey>455737485</lockedByIdentKey>
<comment></comment>
<lockedDate>2019-05-22 15:35:56.817 UTC</lockedDate>
<downloadCount>1</downloadCount>
<locked>true</locked>
<originFile>/this/bcroot/course/95832818319926/foldernodes/88120182050795/2. Lehrjahr/Probe-VA/Schlussprodukt/17C.docx</originFile>
<metaFile>/this/bcroot/.meta/course/95832818319926/foldernodes/88120182050795/2. Lehrjahr/Probe-VA/Schlussprodukt/17C.docx.xml</metaFile>
<cannotGenerateThumbnail>false</cannotGenerateThumbnail>
<thumbnails/>
</metadata>
</revision>
</revisions>
</versions>
\ No newline at end of file
...@@ -31,7 +31,6 @@ import org.jboss.arquillian.drone.api.annotation.Drone; ...@@ -31,7 +31,6 @@ import org.jboss.arquillian.drone.api.annotation.Drone;
import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource; import org.jboss.arquillian.test.api.ArquillianResource;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Assume;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.olat.selenium.page.LoginPage; import org.olat.selenium.page.LoginPage;
...@@ -62,7 +61,6 @@ import org.olat.test.JunitTestHelper; ...@@ -62,7 +61,6 @@ import org.olat.test.JunitTestHelper;
import org.olat.test.rest.UserRestClient; import org.olat.test.rest.UserRestClient;
import org.olat.user.restapi.UserVO; import org.olat.user.restapi.UserVO;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import com.dumbster.smtp.SmtpMessage; import com.dumbster.smtp.SmtpMessage;
...@@ -640,7 +638,6 @@ public class PortfolioV2Test extends Deployments { ...@@ -640,7 +638,6 @@ public class PortfolioV2Test extends Deployments {
@RunAsClient @RunAsClient
public void binderAssessment(@Drone @User WebDriver reiBrowser) public void binderAssessment(@Drone @User WebDriver reiBrowser)
throws IOException, URISyntaxException { throws IOException, URISyntaxException {
Assume.assumeFalse(reiBrowser instanceof FirefoxDriver);
UserVO author = new UserRestClient(deploymentUrl).createAuthor(); UserVO author = new UserRestClient(deploymentUrl).createAuthor();
UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("rei"); UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("rei");
......
...@@ -26,7 +26,6 @@ import org.olat.selenium.page.graphene.OOGraphene; ...@@ -26,7 +26,6 @@ import org.olat.selenium.page.graphene.OOGraphene;
import org.openqa.selenium.By; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
/** /**
* *
...@@ -54,10 +53,10 @@ public class ContactPage { ...@@ -54,10 +53,10 @@ public class ContactPage {
public ContactPage setContent(String subject, String body) { public ContactPage setContent(String subject, String body) {
By subjectBy = By.cssSelector("div.o_sel_contact_subject input[type='text']"); By subjectBy = By.cssSelector("div.o_sel_contact_subject input[type='text']");
OOGraphene.waitElement(subjectBy, browser); OOGraphene.waitElement(subjectBy, browser);
browser.findElement(subjectBy).sendKeys(subject); OOGraphene.waitTinymce(browser);
browser.findElement(subjectBy).sendKeys(subject);
String containerCssSelector = "div.o_sel_contact_body"; String containerCssSelector = "div.o_sel_contact_body";
OOGraphene.waitTinymce(browser);
OOGraphene.tinymce(body, containerCssSelector, browser); OOGraphene.tinymce(body, containerCssSelector, browser);
return this; return this;
} }
...@@ -65,13 +64,11 @@ public class ContactPage { ...@@ -65,13 +64,11 @@ public class ContactPage {
public ContactPage send() { public ContactPage send() {
By buttonsBy = By.xpath("//div[contains(@class,'o_sel_contact_buttons')]"); By buttonsBy = By.xpath("//div[contains(@class,'o_sel_contact_buttons')]");
OOGraphene.scrollTo(buttonsBy, browser); OOGraphene.scrollTo(buttonsBy, browser);
if(browser instanceof FirefoxDriver) {
OOGraphene.waitingALittleLonger();
}
By sendBy = By.cssSelector("fieldset.o_sel_contact_form button.btn-primary"); By sendBy = By.cssSelector("fieldset.o_sel_contact_form button.btn-primary");
browser.findElement(sendBy).click(); browser.findElement(sendBy).click();
By disabledBy = By.cssSelector("fieldset.o_sel_contact_form div.o_sel_contact_body div.o_disabled"); By disabledBy = By.cssSelector("fieldset.o_sel_contact_form div.o_sel_contact_body div.o_disabled");
OOGraphene.waitElementSlowly(disabledBy, 10, browser); OOGraphene.waitElement(disabledBy, browser);
OOGraphene.moveTop(browser); OOGraphene.moveTop(browser);
OOGraphene.waitAndCloseBlueMessageWindow(browser); OOGraphene.waitAndCloseBlueMessageWindow(browser);
......
...@@ -21,9 +21,7 @@ package org.olat.selenium.page.course; ...@@ -21,9 +21,7 @@ package org.olat.selenium.page.course;
import java.util.List; import java.util.List;
import org.apache.logging.log4j.Logger;
import org.junit.Assert; import org.junit.Assert;
import org.olat.core.logging.Tracing;
import org.olat.selenium.page.graphene.OOGraphene; import org.olat.selenium.page.graphene.OOGraphene;
import org.olat.user.restapi.UserVO; import org.olat.user.restapi.UserVO;
import org.openqa.selenium.By; import org.openqa.selenium.By;
...@@ -37,8 +35,7 @@ import org.openqa.selenium.WebElement; ...@@ -37,8 +35,7 @@ import org.openqa.selenium.WebElement;
* *
*/ */
public class AssessmentToolPage { public class AssessmentToolPage {
private static final Logger log = Tracing.createLoggerFor(AssessmentToolPage.class);
private final WebDriver browser; private final WebDriver browser;
public AssessmentToolPage(WebDriver browser) { public AssessmentToolPage(WebDriver browser) {
......
...@@ -73,13 +73,13 @@ public class CourseEditorPageFragment { ...@@ -73,13 +73,13 @@ public class CourseEditorPageFragment {
} }
public static CourseEditorPageFragment getEditor(WebDriver browser) { public static CourseEditorPageFragment getEditor(WebDriver browser) {
OOGraphene.waitElement(editorBy, 5, browser); OOGraphene.waitElement(editorBy, browser);
OOGraphene.closeBlueMessageWindow(browser); OOGraphene.closeBlueMessageWindow(browser);
return new CourseEditorPageFragment(browser); return new CourseEditorPageFragment(browser);
} }
public CourseEditorPageFragment assertOnEditor() { public CourseEditorPageFragment assertOnEditor() {
OOGraphene.waitElement(editorBy, 5, browser); OOGraphene.waitElement(editorBy, browser);
List<WebElement> editorEls = browser.findElements(editorBy); List<WebElement> editorEls = browser.findElements(editorBy);
Assert.assertFalse(editorEls.isEmpty()); Assert.assertFalse(editorEls.isEmpty());
Assert.assertTrue(editorEls.get(0).isDisplayed()); Assert.assertTrue(editorEls.get(0).isDisplayed());
...@@ -88,7 +88,7 @@ public class CourseEditorPageFragment { ...@@ -88,7 +88,7 @@ public class CourseEditorPageFragment {
public CourseEditorPageFragment assertOnWarning() { public CourseEditorPageFragment assertOnWarning() {
By warningBy = By.cssSelector("div.modal-dialog div.alert.alert-warning"); By warningBy = By.cssSelector("div.modal-dialog div.alert.alert-warning");
OOGraphene.waitElement(warningBy, 2, browser); OOGraphene.waitElement(warningBy, browser);
List<WebElement> warningEls = browser.findElements(warningBy); List<WebElement> warningEls = browser.findElements(warningBy);
Assert.assertFalse(warningEls.isEmpty()); Assert.assertFalse(warningEls.isEmpty());
OOGraphene.closeModalDialogWindow(browser); OOGraphene.closeModalDialogWindow(browser);
......
...@@ -21,7 +21,6 @@ package org.olat.selenium.page.repository; ...@@ -21,7 +21,6 @@ package org.olat.selenium.page.repository;
import java.util.List; import java.util.List;
import org.junit.Assert;
import org.olat.selenium.page.graphene.OOGraphene; import org.olat.selenium.page.graphene.OOGraphene;
import org.openqa.selenium.By; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
...@@ -43,12 +42,13 @@ public class ScormPage { ...@@ -43,12 +42,13 @@ public class ScormPage {
} }
public static ScormPage getScormPage(WebDriver browser) { public static ScormPage getScormPage(WebDriver browser) {
WebElement main = browser.findElement(By.id("o_main_wrapper")); By mainBy = By.id("o_main_wrapper");
Assert.assertTrue(main.isDisplayed()); OOGraphene.waitElement(mainBy, browser);
return new ScormPage(browser); return new ScormPage(browser);
} }
public ScormPage start() { public ScormPage start() {
assertOnStart();
By startBy = By.cssSelector("button.o_sel_start_scorm"); By startBy = By.cssSelector("button.o_sel_start_scorm");
browser.findElement(startBy).click(); browser.findElement(startBy).click();
OOGraphene.waitBusy(browser); OOGraphene.waitBusy(browser);
......
...@@ -70,18 +70,11 @@ public class EfficiencyStatementPage { ...@@ -70,18 +70,11 @@ public class EfficiencyStatementPage {
* @return * @return
*/ */
public EfficiencyStatementPage assertOnCertificateAndStatements(String courseTitle) { public EfficiencyStatementPage assertOnCertificateAndStatements(String courseTitle) {
WebElement rowToAssert = getStatementRow(courseTitle); if(courseTitle.length() > 25) {
boolean found = false; courseTitle = courseTitle.substring(0, 25);
for(int i=0; i<20; i++) {
By certificateDownloadBy = By.cssSelector("a i.o_icon.o_filetype_pdf");
List<WebElement> certificateDownloadEls = rowToAssert.findElements(certificateDownloadBy);
if(certificateDownloadEls.size() > 0) {
found = true;
break;
}
OOGraphene.waitingALittleLonger();
} }
Assert.assertTrue(found); By courseCertificateBy = By.xpath("//div[contains(@class,'o_sel_certificates_table')]//table//tr[td[contains(text(),'" + courseTitle + "')]]/td//a/i[contains(@class,'o_filetype_pdf')]");
OOGraphene.waitElementSlowly(courseCertificateBy, 30, browser);
return this; return this;
} }
...@@ -94,15 +87,12 @@ public class EfficiencyStatementPage { ...@@ -94,15 +87,12 @@ public class EfficiencyStatementPage {
* @return * @return
*/ */
public EfficiencyStatementPage assertOnStatement(String courseTitle, boolean passed) { public EfficiencyStatementPage assertOnStatement(String courseTitle, boolean passed) {
WebElement rowToAssert = getStatementRow(courseTitle); if(courseTitle.length() > 25) {
Assert.assertNotNull(rowToAssert); courseTitle = courseTitle.substring(0, 25);
if(passed) {
By passedBy = By.cssSelector(".o_state.o_passed");
browser.findElement(passedBy);
} else {
By failedBy = By.cssSelector(".o_state.o_failed");
browser.findElement(failedBy);
} }
String passedCss = passed ? "o_passed" : "o_failed";
By courseCertificateBy = By.xpath("//div[contains(@class,'o_sel_certificates_table')]//table//tr[td[contains(text(),'" + courseTitle + "')]]/td/span[contains(@class,'o_state')][contains(@class,'" + passedCss + "')]");
OOGraphene.waitElement(courseCertificateBy, browser);
return this; return this;
} }
...@@ -140,31 +130,14 @@ public class EfficiencyStatementPage { ...@@ -140,31 +130,14 @@ public class EfficiencyStatementPage {
* @return * @return
*/ */
public EfficiencyStatementPage selectStatement(String courseTitle) { public EfficiencyStatementPage selectStatement(String courseTitle) {
WebElement rowToAssert = getStatementRow(courseTitle); if(courseTitle.length() > 25) {
By courseCertificateBy = By.xpath("//td//a[contains(@href,'cmd.show')]"); courseTitle = courseTitle.substring(0, 25);
rowToAssert.findElement(courseCertificateBy).click();
OOGraphene.waitBusy(browser);
return this;
}
private WebElement getStatementRow(String courseTitle) {
By courseCertificateBy = By.xpath("//div[contains(@class,'o_sel_certificates_table')]//table//tr");
WebElement rowToAssert = null;
List<WebElement> rowsEl = browser.findElements(courseCertificateBy);
a_a:
for(WebElement rowEl:rowsEl) {
for(WebElement col:rowEl.findElements(By.tagName("td"))) {
String text = col.getText();
if(courseTitle.contains(text) || text.contains(courseTitle)) {
rowToAssert = rowEl;
break a_a;
}
}
} }
By courseCertificateBy = By.xpath("//div[contains(@class,'o_sel_certificates_table')]//table//tr[td[contains(text(),'" + courseTitle + "')]]/td//a[contains(@href,'cmd.show')]");
Assert.assertNotNull(rowToAssert); OOGraphene.waitElement(courseCertificateBy, browser);
return rowToAssert; browser.findElement(courseCertificateBy).click();
OOGraphene.waitBusy(browser);
return this;
} }
public EfficiencyStatementPage selectStatementSegment() { public EfficiencyStatementPage selectStatementSegment() {
...@@ -177,8 +150,7 @@ public class EfficiencyStatementPage { ...@@ -177,8 +150,7 @@ public class EfficiencyStatementPage {
public MediaPage addAsMediaInList(String courseTitle) { public MediaPage addAsMediaInList(String courseTitle) {
if(courseTitle.length() > 25) { if(courseTitle.length() > 25) {
courseTitle = courseTitle.substring(0, 25); courseTitle = courseTitle.substring(0, 25);
}// }
By collectBy = By.xpath("//div[contains(@class,'o_sel_certificates_table')]//table//tr[td[contains(text(),'" + courseTitle + "')]]/td/a[contains(@href,'cmd.MEDIA')]"); By collectBy = By.xpath("//div[contains(@class,'o_sel_certificates_table')]//table//tr[td[contains(text(),'" + courseTitle + "')]]/td/a[contains(@href,'cmd.MEDIA')]");
OOGraphene.waitElement(collectBy, browser); OOGraphene.waitElement(collectBy, browser);
OOGraphene.scrollTo(collectBy, browser); OOGraphene.scrollTo(collectBy, browser);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment