Skip to content

Commit

Permalink
add test for VFS and selective sync
Browse files Browse the repository at this point in the history
  • Loading branch information
Salipa-Gurung committed Jan 10, 2024
1 parent f58fba8 commit c1f4353
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 11 deletions.
4 changes: 4 additions & 0 deletions test/gui/shared/scripts/helpers/FilesHelper.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,7 @@ def get_file_size_on_disk(resource_path):
raise Exception(
"'get_file_size_on_disk' function is only supported for Windows OS."
)


def get_file_size(resource_path):
return os.stat(resource_path).st_size
45 changes: 45 additions & 0 deletions test/gui/shared/scripts/pageObjects/SyncConnection.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import names
import squish
import object

from helpers.ConfigHelper import get_config

Expand All @@ -22,6 +23,12 @@ class SyncConnection:
"visible": 1,
"window": names.disable_virtual_file_support_QMessageBox,
}
SELECTIVE_SYNC_APPLY_BUTTON = {
"container": names.settings_stack_QStackedWidget,
"name": "selectiveSyncApply",
"type": "QPushButton",
"visible": 1,
}

@staticmethod
def openMenu():
Expand Down Expand Up @@ -62,3 +69,41 @@ def disableVFS():
@staticmethod
def hasMenuItem(item):
return squish.waitForObjectItem(SyncConnection.MENU, item)

@staticmethod
def menu_item_exists(menuItem):
obj = SyncConnection.MENU.copy()
obj.update({"type": "QAction", "text": menuItem})
return object.exists(obj)

@staticmethod
def choose_what_to_sync():
SyncConnection.openMenu()
SyncConnection.performAction("Choose what to sync")

@staticmethod
def unselect_folder_in_selective_sync(folder_name):
sync_folders = object.children(
squish.waitForObject(SyncConnection.FOLDER_SYNC_CONNECTION)
)
for sync_folder in sync_folders:
# TODO: allow selective sync in other sync folders as well
if hasattr(sync_folder, "text") and sync_folder.text == "Personal":
items = object.children(sync_folder)
for item in items:
if hasattr(item, "text") and item.text:
# remove item size suffix
# example: folder1 (13 B) => folder1
item_name = item.text.rsplit(" ", 2)[0]
if item_name == folder_name:
squish.mouseClick(
item,
9,
9,
squish.Qt.NoModifier,
squish.Qt.LeftButton,
)
break
squish.clickButton(
squish.waitForObject(SyncConnection.SELECTIVE_SYNC_APPLY_BUTTON)
)
17 changes: 16 additions & 1 deletion test/gui/shared/steps/sync_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
from pageObjects.Activity import Activity
from pageObjects.Settings import Settings

from helpers.SetupClientHelper import getResourcePath
from helpers.ConfigHelper import get_config, isWindows
from helpers.SyncHelper import (
waitForFileOrFolderToSync,
Expand Down Expand Up @@ -61,6 +60,16 @@ def step(context, item):
SyncConnection.hasMenuItem(item)


@Then('the "|any|" button should not be available')
def step(context, item):
SyncConnection.openMenu()
test.compare(
SyncConnection.menu_item_exists(item),
False,
f'Menu item "{item}" does not exist.',
)


@When("the user disables virtual file support")
def step(context):
SyncConnection.disableVFS()
Expand Down Expand Up @@ -200,3 +209,9 @@ def step(context, action):
if isWindows():
action = action.rstrip("s")
SyncConnectionWizard.enableOrDisableVfsSupport(action)


@When('user unselects a folder "|any|" in selective sync')
def step(context, folder_name):
SyncConnection.choose_what_to_sync()
SyncConnection.unselect_folder_in_selective_sync(folder_name)
4 changes: 2 additions & 2 deletions test/gui/shared/steps/vfs_context.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from helpers.FilesHelper import get_file_size_on_disk
from helpers.FilesHelper import get_file_size_on_disk, get_file_size


@Then('the placeholder of file "|any|" should exist on the file system')
Expand All @@ -14,7 +14,7 @@ def step(context, file_name):
def step(context, file_name):
resource_path = getResourcePath(file_name)
size_on_disk = get_file_size_on_disk(resource_path)
file_size = os.stat(resource_path).st_size
file_size = get_file_size(resource_path)
test.compare(
size_on_disk,
file_size,
Expand Down
20 changes: 12 additions & 8 deletions test/gui/tst_vfs/test.feature
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,24 @@ Feature: Enable/disable virtual file support
And user "Alice" has uploaded file with content "ownCloud" to "testFile.txt" in the server
And user "Alice" has created folder "folder1" in the server
And user "Alice" has uploaded file with content "some contents" to "folder1/lorem.txt" in the server
And user "Alice" has created folder "folder2" in the server
And user "Alice" has uploaded file with content "content" to "folder2/lorem.txt" in the server
And user "Alice" has set up a client with default settings
Then the placeholder of file "testFile.txt" should exist on the file system
And the placeholder of file "folder1/lorem.txt" should exist on the file system
And the placeholder of file "folder2/lorem.txt" should exist on the file system
And the "Choose what to sync" button should not be available
When the user disables virtual file support
Then the "Enable virtual file support..." button should be available
And the file "testFile.txt" should be downloaded
And the file "folder1/lorem.txt" should be downloaded
And the file "testFile.txt" should exist on the file system with the following content
"""
ownCloud
"""
And the file "folder1/lorem.txt" should exist on the file system with the following content
"""
some contents
"""
And the file "folder2/lorem.txt" should be downloaded
When user unselects a folder "folder1" in selective sync
And the user waits for the files to sync
Then the folder "folder1" should not exist on the file system
And the file "folder2/lorem.txt" should exist on the file system
When the user enables virtual file support
Then the "Disable virtual file support..." button should be available
And the placeholder of file "folder1/lorem.txt" should exist on the file system
And the file "testFile.txt" should be downloaded
And the file "folder2/lorem.txt" should be downloaded

0 comments on commit c1f4353

Please sign in to comment.