* Return a Result Object from AnnotationsReader::updateDefinition
This is so we can make a decision on whether or not a schema's type or
ref has been manually defined by a user via an `@OA\Schema` annotation
as something other than an object.
If it has been defined, this bundle should not read model properties any
further as it causes errors.
I put this in AnnotationReader as it seemed the most flexible in the
long run. It could have gone in `OpenApiAnnotationsReader`, but then any
additional things added to `updateDefinition` could be left out of the
decision down the road. This is also a convenient place to decide this
once for `ObjectModelDescriber` and `JMSModelDescriber`.
* Stop Model Describer if a Schema Type or Ref Has Been Defined
Via the result object added in the previous commit.
This lets user "short circuit" the model describers by manually defining
the schema type or ref on a plain PHP object or form. For example,
a collection class could be defined like this:
/**
* @OA\Schema(type="array", @OA\Items(ref=@Model(type=SomeEntity::class)))
*/
class SomeCollection implements \IteratorAggregate { }
Previously the model describer would error as it tries to merge the
`array` schema with the already defiend `object` schema. Now it will
prefer the array schema and skip reading all the properties of the
object.
* Add a Documentation Bit on Stopping Property Description
* Mark UpdateClassDefinitionResult as Internal
* Add support for php attributes
* Fix tests for php 8.1
* Simplify the annotations
* Revert the changes to the tests
* CS
* Test FOSRest parsing of attributes
* CS
* typo
* CS
* Test fetchArticle php 8.1 attributes
* Fix namespaces
Co-authored-by: Guilhem Niot <guilhem@gniot.fr>
* Apply `enum` from Choice Constraints to Items When Choice is Multiple
Otherwise JSON schema like this is generated:
```
"property": {
"type": "array",
"enum": ["one", "two", "three"],
"items": {
"type": "string"
}
}
```
With this change, however, this schema is generated:
```
"property": {
"type": "array",
"items": {
"type": "string",
"enum": ["one", "two", "three"]
}
}
```
A possible downside here is that the symfony constraint stuff happens
before types are figured out from PHPDoc. So it's _possible_ to end up
with something that won't validated. Take something like this:
```
/**
* @Assert\Choice(multiple=true, choices={"..."})
* @var string
*/
```
This would generate:
```
"property": {
"type": "string",
"items": {
"enum": ["..."]
}
}
```
* Fix CS
* cs
* more cs
* fix tests
Co-authored-by: Guilhem Niot <guilhem@gniot.fr>
* remove pattern added from the Expression Violation message.
This string confuses the API client showing a violation message instead of having a Regex. Any informatory message for the client should be placed in "description"
* fix tests
* fix typo
* Fix Declaration must be compatible error with tests
* Fix phpunit deprecation warnings for @expectedExceptions
* Add phpunit.bat for windows users, bump phpunit to version 7.5
* Initial pass for OA3 upgrade
* Fix Util Tests
* Fix first batch of Unit Tests. Up to Model
* Another batch of fixed tests
* Update annotations
* Convert Model & Property Describers
* Update tests, Fix RouteDescribers, FIx additional bugs
* Another batch of updates
* Another batch of fixed Functional Tests
* Fix FunctionalTest tests
* Fix Bazinga Tests
* FIx FOS Rest
* Fix JMS TEsts & describers
* Fix all Tests
* Fix few stuff from own CR
* CS Fixes
* CS Fixes 2
* CS Fixes 3
* CS Fixes 4
* Remove collection bug
* Updates after first CRs
* CS
* Drop support for SF3
* Update the docs
* Add an upgrade guide
* misc doc fixes
* Configurable media types
* Code Style Fixes
* Don't use ::$ref for @Response and @RequestBody
* Fix upgrading guide
* Fix OA case
Co-authored-by: Filip Benčo <filip.benco@websupport.sk>
Co-authored-by: Guilhem Niot <guilhem.niot@gmail.com>
Co-authored-by: Mantis Development <mantis@users.noreply.github.com>
* FIX#1428 Make sure FormInterfaceConfig has a 'documentation' option before getting it
FIX#1428
* adding SubmitType to Tests
* Update UserType.php
* Update UserType.php
* Update FunctionalTest.php
* Update FunctionalTest.php
* removed check to see how unit test handles this
* Add test back
* Cs
- Add minimum and maximum from the range annotation
- Add maximum from the LessThan and LessThanOrEqual annotation
FIX: remove the extra date-time format, which was not standard and not in sync with what symfony exposes
Swagger specifies that date-time should follow the RFC3339, and this is what symfony does as default.