Merge pull request #7792 from nextcloud/stable12-7783-fix-empty-details-view-after-renaming-a-file
[stable12] Fix empty details view after renaming a file
This commit is contained in:
commit
2fa5466b6c
|
@ -2071,7 +2071,7 @@
|
|||
|
||||
function updateInList(fileInfo) {
|
||||
self.updateRow(tr, fileInfo);
|
||||
self._updateDetailsView(fileInfo, false);
|
||||
self._updateDetailsView(fileInfo.name, false);
|
||||
}
|
||||
|
||||
// TODO: too many nested blocks, move parts into functions
|
||||
|
|
|
@ -589,6 +589,12 @@ describe('OCA.Files.FileList tests', function() {
|
|||
beforeEach(function() {
|
||||
deferredRename = $.Deferred();
|
||||
renameStub = sinon.stub(filesClient, 'move').returns(deferredRename.promise());
|
||||
|
||||
for (var i = 0; i < testFiles.length; i++) {
|
||||
var file = testFiles[i];
|
||||
file.path = '/some/subdir';
|
||||
fileList.add(file, {silent: true});
|
||||
}
|
||||
});
|
||||
afterEach(function() {
|
||||
renameStub.restore();
|
||||
|
@ -596,9 +602,6 @@ describe('OCA.Files.FileList tests', function() {
|
|||
|
||||
function doCancelRename() {
|
||||
var $input;
|
||||
for (var i = 0; i < testFiles.length; i++) {
|
||||
fileList.add(testFiles[i]);
|
||||
}
|
||||
|
||||
// trigger rename prompt
|
||||
fileList.rename('One.txt');
|
||||
|
@ -613,12 +616,6 @@ describe('OCA.Files.FileList tests', function() {
|
|||
function doRename() {
|
||||
var $input;
|
||||
|
||||
for (var i = 0; i < testFiles.length; i++) {
|
||||
var file = testFiles[i];
|
||||
file.path = '/some/subdir';
|
||||
fileList.add(file, {silent: true});
|
||||
}
|
||||
|
||||
// trigger rename prompt
|
||||
fileList.rename('One.txt');
|
||||
$input = fileList.$fileList.find('input.filename');
|
||||
|
@ -654,6 +651,36 @@ describe('OCA.Files.FileList tests', function() {
|
|||
|
||||
expect(notificationStub.calledOnce).toEqual(true);
|
||||
});
|
||||
it('Shows renamed file details if rename ajax call suceeded', function() {
|
||||
fileList.showDetailsView('One.txt');
|
||||
|
||||
expect($('#app-sidebar').hasClass('disappear')).toEqual(false);
|
||||
expect(fileList._detailsView.getFileInfo().get('id')).toEqual(1);
|
||||
expect(fileList._detailsView.getFileInfo().get('name')).toEqual('One.txt');
|
||||
|
||||
doRename();
|
||||
|
||||
deferredRename.resolve(201);
|
||||
|
||||
expect($('#app-sidebar').hasClass('disappear')).toEqual(false);
|
||||
expect(fileList._detailsView.getFileInfo().get('id')).toEqual(1);
|
||||
expect(fileList._detailsView.getFileInfo().get('name')).toEqual('Tu_after_three.txt');
|
||||
});
|
||||
it('Shows again file details if rename ajax call failed', function() {
|
||||
fileList.showDetailsView('One.txt');
|
||||
|
||||
expect($('#app-sidebar').hasClass('disappear')).toEqual(false);
|
||||
expect(fileList._detailsView.getFileInfo().get('id')).toEqual(1);
|
||||
expect(fileList._detailsView.getFileInfo().get('name')).toEqual('One.txt');
|
||||
|
||||
doRename();
|
||||
|
||||
deferredRename.reject(403);
|
||||
|
||||
expect($('#app-sidebar').hasClass('disappear')).toEqual(false);
|
||||
expect(fileList._detailsView.getFileInfo().get('id')).toEqual(1);
|
||||
expect(fileList._detailsView.getFileInfo().get('name')).toEqual('One.txt');
|
||||
});
|
||||
it('Correctly updates file link after rename', function() {
|
||||
var $tr;
|
||||
doRename();
|
||||
|
@ -708,10 +735,6 @@ describe('OCA.Files.FileList tests', function() {
|
|||
it('Validates the file name', function() {
|
||||
var $input, $tr;
|
||||
|
||||
for (var i = 0; i < testFiles.length; i++) {
|
||||
fileList.add(testFiles[i], {silent: true});
|
||||
}
|
||||
|
||||
// trigger rename prompt
|
||||
fileList.rename('One.txt');
|
||||
$input = fileList.$fileList.find('input.filename');
|
||||
|
|
|
@ -23,6 +23,13 @@ Feature: app-files
|
|||
When I open the details view for "welcome.txt"
|
||||
Then I see that the details view for "All files" section is open
|
||||
|
||||
Scenario: rename a file with the details view open
|
||||
Given I am logged in
|
||||
And I open the details view for "welcome.txt"
|
||||
When I rename "welcome.txt" to "farewell.txt"
|
||||
Then I see that the file list contains a file named "farewell.txt"
|
||||
And I see that the file name shown in the details view is "farewell.txt"
|
||||
|
||||
Scenario: set a password to a shared link
|
||||
Given I am logged in
|
||||
And I share the link for "welcome.txt"
|
||||
|
|
|
@ -77,6 +77,15 @@ class FilesAppContext implements Context, ActorAwareInterface {
|
|||
describedAs("Current section details view in Files app");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Locator
|
||||
*/
|
||||
public static function fileNameInCurrentSectionDetailsView() {
|
||||
return Locator::forThe()->css(".fileName")->
|
||||
descendantOf(self::currentSectionDetailsView())->
|
||||
describedAs("File name in current section details view in Files app");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Locator
|
||||
*/
|
||||
|
@ -256,6 +265,14 @@ class FilesAppContext implements Context, ActorAwareInterface {
|
|||
describedAs("Main link for file $fileName in Files app");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Locator
|
||||
*/
|
||||
public static function renameInputForFile($fileName) {
|
||||
return Locator::forThe()->css("input.filename")->descendantOf(self::rowForFile($fileName))->
|
||||
describedAs("Rename input for file $fileName in Files app");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Locator
|
||||
*/
|
||||
|
@ -287,6 +304,13 @@ class FilesAppContext implements Context, ActorAwareInterface {
|
|||
return self::fileActionsMenuItemFor("Details");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Locator
|
||||
*/
|
||||
public static function renameMenuItem() {
|
||||
return self::fileActionsMenuItemFor("Rename");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Locator
|
||||
*/
|
||||
|
@ -326,6 +350,17 @@ class FilesAppContext implements Context, ActorAwareInterface {
|
|||
$this->actor->find(self::tabHeaderInCurrentSectionDetailsViewNamed($tabName), 10)->click();
|
||||
}
|
||||
|
||||
/**
|
||||
* @Given I rename :fileName1 to :fileName2
|
||||
*/
|
||||
public function iRenameTo($fileName1, $fileName2) {
|
||||
$this->actor->find(self::fileActionsMenuButtonForFile($fileName1), 10)->click();
|
||||
|
||||
$this->actor->find(self::renameMenuItem(), 2)->click();
|
||||
|
||||
$this->actor->find(self::renameInputForFile($fileName1), 10)->setValue($fileName2 . "\r");
|
||||
}
|
||||
|
||||
/**
|
||||
* @Given I mark :fileName as favorite
|
||||
*/
|
||||
|
@ -436,6 +471,13 @@ class FilesAppContext implements Context, ActorAwareInterface {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then I see that the file list contains a file named :fileName
|
||||
*/
|
||||
public function iSeeThatTheFileListContainsAFileNamed($fileName) {
|
||||
PHPUnit_Framework_Assert::assertNotNull($this->actor->find(self::rowForFile($fileName), 10));
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then I see that :fileName is marked as favorite
|
||||
*/
|
||||
|
@ -443,6 +485,14 @@ class FilesAppContext implements Context, ActorAwareInterface {
|
|||
PHPUnit_Framework_Assert::assertNotNull($this->actor->find(self::favoritedStateIconForFile($fileName), 10));
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then I see that the file name shown in the details view is :fileName
|
||||
*/
|
||||
public function iSeeThatTheFileNameShownInTheDetailsViewIs($fileName) {
|
||||
PHPUnit_Framework_Assert::assertEquals(
|
||||
$this->actor->find(self::fileNameInCurrentSectionDetailsView(), 10)->getText(), $fileName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Then I see that the input field for tags in the details view is shown
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue