-
Notifications
You must be signed in to change notification settings - Fork 79
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enhancement: Add More Spec Details to the UI #517
Enhancement: Add More Spec Details to the UI #517
Conversation
Is failing in Windows OS Refs springwolf#378
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Welcome to Springwolf. Thanks a lot for creating your first pull request. Please check out our contributors guide and feel free to join us on discord.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @aerfus
I like the code changes (incl ng template) and how the data is presented to the user.
A couple things/questions:
- To fix the formatting, you can run gradle spotlessaApply
- the AsyncAPI.json file is generated by Springwolf through the code. There should be a Size annotation for a class property or similar that will result in the minimum/maximum field in the spec.
- Same thing with the primitives, which you probably added for demo purposes. And then underlying issue being that the ui side has no test coverage. If you want to investigate how to add angular ui tests, you are very welcome. Otherwise, adding a single string Kafka consumer for the Kafka example would be sufficient from my side
- Since us maintainers also stumble upon the ignoreWhitespaces: Did you had trouble getting the tests running/passing?
Great work!
fc9aac7
to
f64ec39
Compare
Hi @timonback , As for the remarks:
|
Let me investigate angular ui tests. |
To visualize in UI Refs springwolf#378 test(kafka): add primitive types More data to demonstrate + type badges check
To reuse for primitive types Refs springwolf#378
No intuitive way to check whether the payload is an objects or a string Refs springwolf#378
Feature request Refs springwolf#378
Feature request. Only properties has info displayed Refs springwolf#378
Feature request. Refs springwolf#378
f64ec39
to
4a4a9da
Compare
@aerfus Can you check if there is a way to assert the schemas, while keeping a line ending? Does the ApiSystemTest in the example fail as well? If not, maybe the files json files in core have been checked in with the wrong line ending. |
Hi @timonback , I've made a little research. The problem occurs when we use Should I rewrite tests using Preview: Before public CustomPrettyPrinter() {
super._arrayIndenter = new DefaultIndenter();
super._objectFieldValueSeparatorWithSpaces = _separators.getObjectFieldValueSeparator() + " ";
} After public CustomPrettyPrinter() {
super._arrayIndenter = new DefaultIndenter();
super._objectFieldValueSeparatorWithSpaces = _separators.getObjectFieldValueSeparator() + " ";
super._objectIndenter = new DefaultIndenter().withLinefeed("\n");
super._arrayIndenter = new DefaultIndenter().withLinefeed("\n");
} Before new DefaultPrettyPrinter().withObjectIndenter(new DefaultIndenter(" ", DefaultIndenter.SYS_LF)); After new DefaultPrettyPrinter().withObjectIndenter(new DefaultIndenter(" ", "\n")); |
Hi @aerfus, |
This reverts commit 07a6b30.
@aerfus Let's do the following: I revert the commit that improves development under windows and we move that to a separate PR. I prefer the idea of Running Why merge now? |
* test: ignore line ending in generated specs assertions Is failing in Windows OS Refs #378 * refactor(kafka): add primitive payload, example of `minimum` value To visualize in UI Refs #378 test(kafka): add primitive types More data to demonstrate + type badges check * refactor(ui): add schema properties template To reuse for primitive types Refs #378 * feat(ui): add `type` badge to schema payload header No intuitive way to check whether the payload is an objects or a string Refs #378 * feat(ui): add minimum and maximum values to the spec`s model Feature request Refs #378 * feat(ui): display primitive type info Feature request. Only properties has info displayed Refs #378 * feat(ui): display minimum and maximum values Feature request. Refs #378 * Revert "test: ignore line ending in generated specs assertions" This reverts commit 07a6b30.
* test: ignore line ending in generated specs assertions Is failing in Windows OS Refs #378 * refactor(kafka): add primitive payload, example of `minimum` value To visualize in UI Refs #378 test(kafka): add primitive types More data to demonstrate + type badges check * refactor(ui): add schema properties template To reuse for primitive types Refs #378 * feat(ui): add `type` badge to schema payload header No intuitive way to check whether the payload is an objects or a string Refs #378 * feat(ui): add minimum and maximum values to the spec`s model Feature request Refs #378 * feat(ui): display primitive type info Feature request. Only properties has info displayed Refs #378 * feat(ui): display minimum and maximum values Feature request. Refs #378 * Revert "test: ignore line ending in generated specs assertions" This reverts commit 07a6b30.
* test: ignore line ending in generated specs assertions Is failing in Windows OS Refs #378 * refactor(kafka): add primitive payload, example of `minimum` value To visualize in UI Refs #378 test(kafka): add primitive types More data to demonstrate + type badges check * refactor(ui): add schema properties template To reuse for primitive types Refs #378 * feat(ui): add `type` badge to schema payload header No intuitive way to check whether the payload is an objects or a string Refs #378 * feat(ui): add minimum and maximum values to the spec`s model Feature request Refs #378 * feat(ui): display primitive type info Feature request. Only properties has info displayed Refs #378 * feat(ui): display minimum and maximum values Feature request. Refs #378 * Revert "test: ignore line ending in generated specs assertions" This reverts commit 07a6b30.
* test: ignore line ending in generated specs assertions Is failing in Windows OS Refs #378 * refactor(kafka): add primitive payload, example of `minimum` value To visualize in UI Refs #378 test(kafka): add primitive types More data to demonstrate + type badges check * refactor(ui): add schema properties template To reuse for primitive types Refs #378 * feat(ui): add `type` badge to schema payload header No intuitive way to check whether the payload is an objects or a string Refs #378 * feat(ui): add minimum and maximum values to the spec`s model Feature request Refs #378 * feat(ui): display primitive type info Feature request. Only properties has info displayed Refs #378 * feat(ui): display minimum and maximum values Feature request. Refs #378 * Revert "test: ignore line ending in generated specs assertions" This reverts commit 07a6b30.
* feat(ui): prepare springwolf for AsyncApi 3.0 (wip) feat(ui): remove testing code feat(ui): remove asyncApi 2.0 hint about publish/subscribe feat(ui): add parsing error boundary feat(ui): add license chip feat(ui): add notification.service.ts feat(ui): rename Channel to ChannelOperation also fix bindings feat(ui): update asyncapi mapper (wip) feat(ui): add todos feat(ui): update asyncapi models to v3 chore(ui): split model packages chore(ui): download asyncapi document only once refactor(ui): re-organize components chore(ui): use asyncapi v3 mock chore(ui): remove IE support chore(ui): move favicon.ico to assets * feat(asyncapi): update package description * feat(asyncapi): add todos * Enhancement: Add More Spec Details to the UI (#517) * test: ignore line ending in generated specs assertions Is failing in Windows OS Refs #378 * refactor(kafka): add primitive payload, example of `minimum` value To visualize in UI Refs #378 test(kafka): add primitive types More data to demonstrate + type badges check * refactor(ui): add schema properties template To reuse for primitive types Refs #378 * feat(ui): add `type` badge to schema payload header No intuitive way to check whether the payload is an objects or a string Refs #378 * feat(ui): add minimum and maximum values to the spec`s model Feature request Refs #378 * feat(ui): display primitive type info Feature request. Only properties has info displayed Refs #378 * feat(ui): display minimum and maximum values Feature request. Refs #378 * Revert "test: ignore line ending in generated specs assertions" This reverts commit 07a6b30. * feat: Replaced usage of jAsyncAPI by the new springwolf-asyncapi module (#523) * feat: Replaced usage of jAsyncAPI by the new springwolf-asyncapi module We migrate from jAsyncAPI, with support for AsyncAPI v2, to the new SpringWolf-AsyncAPI module, which supports AsyncAPI v3. This PR is only a first step. Plenty of tests are still not working and others are partially commented. Please take a look to the multiple FIXMEs in the code * Replaced Springwolf-Core Message related classes by their Springwolf-AsyncAPI equivalent. (#527) Fixes some FIXMEs and removes duplicated classes * AsyncAPI v3 Migration Fixes (#533) * fix: Multiple fixes related with Channel Messages Some of the tests are failing due to some AssertJ recursion issue. Help is welcome * fix: Minor properties fixes * fix: Fixes to AMQP Some fixes to the AMQP plugin and example (Still not finished) * fix: Minor properties fixes * fix: Migrated asyncapi.json examples to v3 * fix: Migration to AsyncAPI v3 As per https://www.asyncapi.com/docs/migration/migrating-to-v3 For a channel with multiple messages, you specify multiple key-value pairs. For a channel with just one message, you use a single key-value pair. That means that the use of 'oneOf' is removed. * fix: Improved support for Channel Messages Fixed different bugs and limitations with the publishing of Messages in a Channel with the AsyncAPI v3 spec * fix: Fixed Channel Merger When merging Channels, the messages were not merged. This is now fixed. * fix: Added basic support for Operations Still plenty of errors, but Operations are now appearing in the AsyncAPI v3 output. * fix: AsyncAPI module test * Feat/asyncapi v3 UI fixes (#539) * fix: Added missing comparison code Those missing annotations were causing some tests to fail * fix: AMQP operation binding As per documentation, 'deliveryMode' can only be 1 or 2. The default value 0 was incorrect * fix: Added Channel Ref to Operation * test: update asyncapi.json files based on current state in the branch Generate asyncapi.actual.json files by running in _springwolf_examples_ folder: `../gradlew test --tests "**.ApiIntegrationTest" --continue` * test(kafka): update asyncapi model * feat(ui): move asyncapi v3 changes --------- Co-authored-by: Carlos Tasada <ctasada@gmail.com> * fix: Fixed core tests (#540) * fix: Fixed core tests Fixed the failing tests after migrating to AsyncAPI v3 * fix: Fixed AMQP integration The AMQP was adding both 'exchange' & 'queue' keys, but it should only include the one related with the binding type. Also, deliveryMode can be ONLY 1 or 2, the default value 0 which was used in different places is wrong. * fix: Fixed AMQP integration The AMQP was adding both 'exchange' & 'queue' keys, but it should only include the one related with the binding type. Also, deliveryMode can be ONLY 1 or 2, the default value 0 which was used in different places is wrong. * Feat/message as component (#541) * feat: move messages to components * feat: add ChannelMessageReference allows to link from an operation to the message within a specific channel * chore: update asyncapi.json * feat(ui): update after message was moved to components * fix(ui): map operation binding correctly * feat(core): remove ChannelMessageReference * test(example): simplify creation of asyncapi.json files * test(asyncapi): change channel messages type back to Message * refactor(asyncapi): rename MessageReference static message Better indicate what the reference points to * chore: spotless * test: fix DefaultChannelsServiceIntegrationTest * test(kafka): remove duplicated primitite-topic consumer * feat(core): use AsyncApi 3.0 OperationAction * feat(ui): show contact info * chore: update dependency list * Different fixes in the asyncapi v3 spec examples (#543) * fix: Minor fix to core spec example The asyncapi test sample had a minor issue when validated with https://studio.asyncapi.com/ * fix: Minor fix to sns-plugin spec example The asyncapi test sample had a minor issue when validated with https://studio.asyncapi.com/ We need to properly configure those values, something that I will take care of in the next PR * fix: Minor fix to sqs-plugin spec example The asyncapi test sample had a minor issue when validated with https://studio.asyncapi.com/ We need to properly configure those values, something that I will take care of in the next PR * Fixed styles * fix: Fixed broken tests * fix: Added support to sqs-plugin to generate the minimum needed values To pass the SQS Binding AsyncAPI validation, we need to provide some required fields. This commit adds the minimum values needed. * fix: Added support to sns-plugin to generate the minimum needed values To pass the SNS Binding AsyncAPI validation, we need to provide some required fields. This commit adds the minimum values needed. * fix: Removed small batch of pending FIXMEs * fix: Removed small batch of pending FIXMEs * fix: Removed small batch of pending FIXMEs * fix: Fixed the cloudstream-plugin The cloudstream-plugin was not generating the operations section of the AsyncAPI spec. Now is fixed and validated. Multiple FIXMEs were fixed and removed too * fix: Removed unused methods * fix: Fixed CloudStream operation action typo * fix: Removed unneeded channelId field from ChannelObject * fix: Fixed some code analysis complains * fix: Fixed Operation messages bug Whe configuring annotations on the class level, the generated Operations didn't have the proper message references. This fixes the latest blocking FIXME * fix: Schema Properties The Schema Properties should support any kind of value, like booleans. Making the property accept `Object` seems a more flexible approach. * Feat/asyncapi 3: more fixes (#550) * chore: typo * fix: correct Listener=receive, Publisher=send operationAction * feat(kafka): handle kafka message binding key * chore: update example json * feat(core): all operation include the action in the id refactor: rename operationName to operationId * feat(cloud-stream): align asyncapi.json structure * feat(ui): show message when bindings are missing * chore: resolve open FIXME * chore: fix dependencies * Support exclusiveMinimum and exclusiveMaximum (#560) * feat(ui): add exclusiveMinimum and exclusiveMaximum values to the spec`s model Feature request Refs #378 * refactor(ui): reimplement range temple model For further extension Refs #378 * feat(ui): add support for exclusiveMinimum and exclusiveMaximum Feature request Refs #378 * refactor(ui): separate schema range as a component For further extensions and maintenance Refs #378 * test: add exclusiveMinimum to example Dto To test changes visually Refs #378 * chore: Split ChannelScanner and OperationScanner (#562) --------- Co-authored-by: Nikita Marunko <aerfus@yandex.ru> Co-authored-by: Carlos Tasada <ctasada@gmail.com>
Describe the feature request
Primitive types have no payload information displayed,
minimum and maximum values are absent in UI.
Additional information
A
type
badge is added to payload headerResolves #378