* Added a convention test to detect a model constructor exposing all properties
* add ctors to classes where they are missing
* rename ctor parameters that dont match properties
* add missing parameters to existing ctors
* add specific PunchCard ctor to allow mocking, and update test to resolve call ambiguity
* Added base class properties to the convention test
Added member exclusion attribute
* Updated newly offending classes
2 excludes and 2 ctors
* rename exclusion attribute to be a bit shorter
* Cross target Octokit.Tests against netcoreapp1.0 and net452
* Add net45-specific references
This fixes a build error after adding the net452 target:
error CS0656: Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create'
* Add SimpleJson conditional compilation symbols for net45
* Disable AppDomain when running tests
Thanks to Dominick and Patrik: https://twitter.com/leastprivilege/status/893376624233762816
* Use nameof operator instead of magic strings
* Remove conditional compilation symbols as they are not used in the conventions tests project
* Enable cross targetting in the conventions tests project
* Run tests against netcoreapp1.0 only when not on Windows
* Going too fast bites you
* 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
* bugfix - PUT should have a payload for Mark as Read (#1579)
* bugfix - PUT should have a payload for Mark as Read
* also fix the Observable client test
* add integration tests for MarkRead methods
* Fixup MarkReadForRepository methods to specify a body in the PUT request
* Fix unit tests for regular and observable client
* helps if the new files are included in the test project :)
* Cloning ApiInfo object should work when some fields are null (#1580)
* Adjust ApiInfo.Clone() to work even if some elements (eg ETag) are null
* Remove c# 6 language feature and do it the old school way
* Add a test for cloning ApiInfo when some fields are null
* The 3 lists can never be null anyway so remove some un-needed statements
* Add test for null RateLimit
* Remove Rx-Main dependency from samples
This resolves#1592 - LINQPad doesn't understand how to restore this unlisted package and it's not actually needed in the samples.
* Adding RemovedFromProject and other missing EventInfoState types. (#1591)
* Adding missing review types to event info.
* Fixing whitespace.
* Reword `BaseRefChanged` comment
* Adding missing event types.
* Change response models 'Url' properties from `Uri` to `string` (#1585)
* Add convention test to ensure 'Url' properties are of type string
Closes#1582
* Change 'Url' properties from Uri to string
Global Find/Replace FTW!
* fix compilation errors in the integration tests project
* Extend 'Url' properties type check to request models
* Stick to convention tests naming convention
* Remove unused using directives in models
Changing from `Uri` to `string` means the `using System;`
directive was not needed anymore in some files
* Update exception message wording
* empty commit to trigger a new build - hopefully Travis passes
* add convention test to ensure request models have Uri 'Url' properties
* make request models 'Url' properties Uri
fix typo in convention test name
* revert some request models 'Url' properties as `string`
see https://github.com/octokit/octokit.net/pull/1585#issuecomment-297186728
* Change test so that all model types must have 'Url' properties of type string
- Filter test input to only get types which have 'Url' properties
- Merge response and request model types tests into one
- Unparameterize the exception since we only check for the string type now
* Fix string.Format tokens
If this PR doesn't get rebased, it'll be my wall of shame FOREVER!
* and then it's even more embarrassing when the commit message says rebased but you really meant squashed
* Remove exclusion of `Release` from request models
2 model classes were missing one - technically not needed for these 2 classes due to their api calls being basic data types that then get populated into these objects, but it's easiest to just add them to these 2 classes so the test can pass on all response models