* update models with updated permission enum
* add suppress message attribute
* update integration tests
* refactor: new and legacy update teams endpint
* refactor: add new delete team endpoint
* use TeamPermission on NewTeam
* use updated delete on team context dispose
* add permission enum for team response object
* refactor: remove legacy suffix from method names
* introduce permissions object on Team
* refactor: rename enum to TeamRepositoryPermission
* fix formatting
* change Permission to string to match api specs
* add TeamRepository
* add CheckTeamPermission endpoint support
* fix convention tests
* update comments on TeamRepository props
* add two new endpoints in TeamsClient
* refactor: rename ApiUrl for TeamPermission
* fix test
* implement methods for new endpoints
* add the integration tests
* fix spelling
* update comments
* refactor: rename method name
* fix: add end tag for remarks
* refactor: remove unused method param
* fix docstring comment
* the unit tests are in finally
* add docs for teams api
* split CheckTeamPermissions into two methods
* Update ObservableTeamsClientTests.cs based on review
Co-authored-by: Keegan Campbell <me@kfcampbell.com>
* add cref to legacy update and delete endpoints
* remove editorconfig file
* Update Octokit.Tests/Clients/TeamsClientTests.cs
Co-authored-by: Keegan Campbell <me@kfcampbell.com>
* remove unused line
* rename variable based on review
* rename prop to match constructor param
* add comment to explain TeamPermission enum values on update
Co-authored-by: notauserx <notauserx@users.noreply.github.com>
Co-authored-by: Keegan Campbell <me@kfcampbell.com>
* 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
* added support for DateTime serialized as FileTime
* changed non-iso timestamp deserialization from FromFileTime to FromUnixTime.
* updated a test to also test the new time stamp deserializer.
* moved all tests projects to a solution folder of their own.
* Fixed test and added a missing field to Account.
* Use original values in test.
* Moved UpdatedAt from Account to User.
* 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
* Add release notes and bump version to 0.24
* run "build FormatCode" to fix up whitespace/formatting issues
* Fix failing Ssh key tests due to "validation exception". This key must be in use on github (under another user, most likely from these tests failing). Changed to a new SSH key and tweaked tests to reduce chance of a key being created and not destroyed
* Assignee and Assignees cant both be specified on NewIssue. We missed this one in the PR. Marked Assignee as [Obsolete] and fixed tests to use Assignees
* Fix a couple of Reactions tests that were calling the wrong client methods
* Fix timeline tests - looks like the response class has changed shape a bit, it now has an Issue object in the payload and Id field isnt present (leaving Id field there in case other timeline events do use it)
* Fix some following tests that require the test user to follow more than 1 other user
* Unskip these Event tests now because apparently they work!
* add breaking changes notes
* Update ApiErrorMessageSafe to return null for empty and whitespace strings (#1540)
* return null if ApiError.Message is empty or whitespace
* Uncomment test, which now passes
* update release notes to include PR1540
* Add "Bot" AccountType, was causing a deserialization exception when running the integration test "SearchForExcludedLanguage" (#1541)
* Update to include PR1541
* add bullets to make release notes easier to read
* markup additional code mentions in notes
* Fix grammar
fields => field
It's bothered me that our response models are mutable. They really
shouldn't be. I made the properties have a protected setter instead of
private to provide flexibility for others who might be deriving from
these classes or testing them.
Fixes#650
Previously, SimpleJsonSerializer.MapClrMemberNameToJsonFieldName
special cased the name "Links" since while that was the name of the
property in the object model, in JSON "_links" was used instead.
It turns out that there was an additional problem, where GitReference
wants to expose as Repository, but the name in JSON responses is
"repo". Instead of simply adding another special case to
MapClrMemberNameToJsonFieldName, we update the implementation of the
serializer to allow [Parameter(Key = "some_name")] to denote what name
we'd like to use for the field in the JSON object when we serialize.