* add deserializer tests for nullable enums, StringEnum and nullable StringEnum properties
* Fix deserializing nullable structs by using the underlying type when nullable
* StringEnum<T> should behave like an enum, returning default(T) when it is uninitialised/null/blank
* Don't allow null to be passed into StringEnum ctor - if it needs to be null then it should be declared as nullable
* fix expected json
* move logic to determine if property is a StringEnum<T> into helper function
* serializer needs to treat StringEnum<T> specially by serializing the enum value according to existing serializer strategy (parameter attributes and so on)
* remove fallback to default(T)
* add test to assert ctor throws exception when null passed in
* remove test for default(T) fallback behaviour
* Fix exception in serializer test - StringEnum property must be initialized otherwise an exception is thrown when attempting to serialize
* Dont allow empty strings either
* First Iteration Need to finish tests and docs
* Mostly Complete
* Fixing tests and adding review comments
* Added tests for reactive client
* Moved Reviews inside fo the Pull request client for better organization and began initial intigration testing
* Fixing bad recursive function breaking tests
* test fixes
* Add paging support to review comments call
* Fixing recursive function
* Addressing comments from PR
* fixing CI break
* Typo build break
* Fixing Convention Tests
* Adding correct nameof() usage in Ensure
* Small consitancy changes
* Trigger build
* Address PR Comments
* Fixup test naming
* Fix sub client ordering and incorrect URL
* Tidy up comments and remove StringEnum wrapper from Request models as it is only for Response models
* Rename GetReview to Get
* tweak debugger display
* Rework integration tests - implement the easy Get/GetAll ones first...
* Implement integration tests for Create method.
Move helpers to create PR/review into SetupHelper class
Fixed up review status enum to contain correct values
Tests for Approve/RequestChanges currently failing as a user cant approve/request changes on their own PR
* Implement secondary account settings for integration tests and a new [DualAccountTest] attribute for discovery when configured
Change integration test to create PR from the 2nd account, so the main test account is able to perform review actions on the PR
* Add integration tests for Delete, Dismiss and Submit methods
Fixed up API client implementation for delete (was looking for incorrect 201 http status)
Removed unnecessary await/async calls from client implementations that dont need to do anything with the result
* Attempting to add comments as part of a review revealed that we cant use the existing PullRequestReviewCommentCreate class as the API throws a validation error due to the CommitId field
These newer review APIs need a DraftPullRequestReviewComment (that doesnt have a commitId) instead
* add second test account user/password to configure-integration-tests script
* Added StringEnum<TEnum>
* Added tests
* Make sure the serializer can work with StringEnum
* Use StringEnum for EventInfo.Event
* Add convention test to assert that all Response models use StringEnum<> to wrap enum properties
* Add Stringnum<> to all response types failing convention test
* Handle StringEnum to Enum conversion when Issue response model populates IssueUpdate request model
* Fix unit test
* Refactor SimpleJsonSerializer to expose the DeserializeEnum strategy so it can be used in StringEnum class
* Need to expose/use SerializeEnum functionality too, so we use the correct string representation of enum values that have custom properties (eg ReactionType Plus1 to "+1")
* fix unit tests, since the string is now the "correct" upstream api value
* Add a couple of tests for the Enum serialize/deserialize when underscores, hyphens and custom property attributes are present
* Compare parsed values for equality
* add convention test to ensure enum members all have Parameter property set
* update test to cover implicit conversions too
* this test should work but fails at the moment due to magic hyphen removal in deserializer causing a one way trip from utf-8 to EncodingType.Utf8 with no way to get back
* (unsuccesfully) expand event info test to try to catch more cases of unknown event types
* fix broken integration test while im here
* Fixed build errors after .NET Core merge
* Value -> StringValue, ParsedValue -> Value
* Don't allow StringValue to be null
* Ignore enums not used in request/response models
* Added ParameterAttribute to almost all enum values
* Ignore Language enum
* Fix failing tests
* Fix milestone sort parameter and tests
* whitespace
* fix milestone unit tests
* Fix StringEnum.Equals ... This could've been embarrassing!
* Change SimpleJsonSerializer Enum handling to only use `[Parameter()]` attributes (no more magic removal of hyphen/underscores from strings)
* Tidy up this integration test while im here
* Only test request/response enums in convention test
* Keep skipping Language
* Remove unused method
* Remove excluded enum types
* Removed unnecessary ParameterAttributes
* Remove unused enum
* Add StringEnum test for string-comparison of two invalid values
* Bring back IssueCommentSort and use it in IssueCommentRequest
This reverts commit 38a4a291d1476ef8c992fe0f76956974b6f32a49.
* Use assembly instead of namespace for Octokit check
* Add failing test to reproduce the issue where only the first enum paramter/value was added to the cache
* Fix deserializer enum cache to include all enum members rather than only the first member encountered
* Use a static SimpleJsonSerializer in StringEnum
* Remove serializer instance in StringEnum
* Add some documentation on StringEnum<TEnum>
* Fix parameter value to resolve failing integration test