Skip to content

Commit

Permalink
#2 Add 'Lock archive metadata' Feature
Browse files Browse the repository at this point in the history
- Add: lockArchiveMetadata.feature
- Enhance: LibrariesSteps, LibraryPage
  • Loading branch information
helkv committed Jan 7, 2020
1 parent feef07d commit 659aafe
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 1 deletion.
33 changes: 33 additions & 0 deletions src/main/java/ui/pages/LibraryPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,37 @@ public void openMarkdownElement(String elementName) {
.equals("complete"));
}

public void lockElement(String elementName) {
WebElement elementLink = this.directoryViewDiv.findElement(By.linkText(elementName));
WebElement elementRow = elementLink.findElement(By.xpath(".//ancestor::tr"));

WebElement moreOptions = elementRow.findElement(By.className("more-op-icon"));
moreOptions.click();
WebElement lockFile = elementRow.findElement(By.className("lock-file"));
lockFile.click();

wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("file-locked-icon")));
}

public void unlockElement(String elementName) {
WebElement elementLink = this.directoryViewDiv.findElement(By.linkText(elementName));
WebElement elementRow = elementLink.findElement(By.xpath(".//ancestor::tr"));

WebElement moreOptions = elementRow.findElement(By.className("more-op-icon"));
// Selenium has problems hover/scroll element when clicking => Use JS to click
((JavascriptExecutor) driver).executeScript("arguments[0].click();", moreOptions);
WebElement unlockFile = elementRow.findElement(By.className("unlock-file"));
unlockFile.click();

wait.until(ExpectedConditions.invisibilityOfElementLocated(By.className("file-locked-icon")));
}

public boolean lockedIconVisible(String elementName) {
WebElement elementLink = this.directoryViewDiv.findElement(By.linkText(elementName));
WebElement elementRow = elementLink.findElement(By.xpath(".//ancestor::tr"));

List<WebElement> lockIcon = elementRow.findElements(By.className("file-locked-icon"));
return !lockIcon.isEmpty();
}

}
22 changes: 21 additions & 1 deletion src/test/java/stepdefinitions/LibrariesSteps.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,27 @@ public void openArchiveMetadata() {
libraryPage.openMarkdownElement("archive-metadata.md");
}

@After("@createNewLibrary or @openArchiveMetadata or @FillOutArchiveMetadata")
@When("Lock archive metadata file")
public void lockArchiveMetadataFile() {
libraryPage.lockElement("archive-metadata.md");
}

@Then("Archive metadata lock symbole is displayed")
public void archiveMetadataLockSymboleIsDisplayed() {
assertThat(libraryPage.lockedIconVisible("archive-metadata.md")).isTrue();
}

@When("Unlock archive metadata file")
public void unlockArchiveMetadataFile() {
libraryPage.unlockElement("archive-metadata.md");
}

@Then("Archive metadata lock symbole is not displayed")
public void archiveMetadataLockSymboleIsNotDisplayed() {
assertThat(libraryPage.lockedIconVisible("archive-metadata.md")).isFalse();
}

@After("@createNewLibrary or @openArchiveMetadata or @FillOutArchiveMetadata or @LockArchiveMetadata")
public void deleteLibrary() {
homePage.navigateTo();
homePage.openMyLibraries();
Expand Down
20 changes: 20 additions & 0 deletions src/test/resources/features/lockArchiveMetadata.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Feature: Lock Archive Metadata
Logged in user can lock the Archive Metadata file of a library.

@KP-19
@LockArchiveMetadata
Scenario: Lock archive metadata
Given Logged in as User
And Create new Library
And Open new Library
When Lock archive metadata file
Then Archive metadata lock symbole is displayed
When Unlock archive metadata file
Then Archive metadata lock symbole is not displayed
# @After LibrariesSteps.deleteLibrary()

#TODO: Archive metadata can be edited (by owner) while locked and after the lock

#TODO: Further test case: Extract the unlock in an extra test case

#TODO: Further test case: other user (with edit rights) can not edit file while locked

0 comments on commit 659aafe

Please sign in to comment.