getMockBuilder(DefinitionParameter::class) ->disableOriginalConstructor() ->getMock(); $param->method('getName')->willReturn('foo'); $trait = $this->getMockForTrait('\OCA\Files_External\Lib\FrontendDefinitionTrait'); $trait->setText('test'); $trait->addParameters([$param]); $trait->addCustomJs('foo/bar.js'); $trait->addCustomJs('bar/foo.js'); $json = $trait->jsonSerializeDefinition(); $this->assertEquals('test', $json['name']); $this->assertContains('foo/bar.js', $json['custom']); $this->assertContains('bar/foo.js', $json['custom']); $configuration = $json['configuration']; $this->assertArrayHasKey('foo', $configuration); } public function validateStorageProvider() { return [ [true, ['foo' => true, 'bar' => true, 'baz' => true]], [false, ['foo' => true, 'bar' => false]] ]; } /** * @dataProvider validateStorageProvider */ public function testValidateStorage($expectedSuccess, $params): void { $backendParams = []; foreach ($params as $name => $valid) { $param = $this->getMockBuilder(DefinitionParameter::class) ->disableOriginalConstructor() ->getMock(); $param->method('getName') ->willReturn($name); $param->method('isOptional') ->willReturn(false); $param->expects($this->once()) ->method('validateValue') ->willReturn($valid); $backendParams[] = $param; } $storageConfig = $this->getMockBuilder(StorageConfig::class) ->disableOriginalConstructor() ->getMock(); $storageConfig->expects($this->any()) ->method('getBackendOption') ->willReturn(null); $storageConfig->expects($this->any()) ->method('setBackendOption'); $trait = $this->getMockForTrait('\OCA\Files_External\Lib\FrontendDefinitionTrait'); $trait->setText('test'); $trait->addParameters($backendParams); $this->assertEquals($expectedSuccess, $trait->validateStorageDefinition($storageConfig)); } public function testValidateStorageSet(): void { $param = $this->getMockBuilder(DefinitionParameter::class) ->disableOriginalConstructor() ->getMock(); $param->method('getName') ->willReturn('param'); $param->expects($this->once()) ->method('validateValue') ->willReturnCallback(function (&$value) { $value = 'foobar'; return true; }); $storageConfig = $this->getMockBuilder(StorageConfig::class) ->disableOriginalConstructor() ->getMock(); $storageConfig->expects($this->once()) ->method('getBackendOption') ->with('param') ->willReturn('barfoo'); $storageConfig->expects($this->once()) ->method('setBackendOption') ->with('param', 'foobar'); $trait = $this->getMockForTrait('\OCA\Files_External\Lib\FrontendDefinitionTrait'); $trait->setText('test'); $trait->addParameter($param); $this->assertEquals(true, $trait->validateStorageDefinition($storageConfig)); } }