Return a null object from `AttributeSet#[]`
Move `attributes` to the `AttributeSet` object.
Add missing test cases for `attribute_method?`
Use with_parse_json_times helper in tests.
Avoid hardcoded magic number in test teardown.
Merge pull request #15857 from zuhao/refactor_activesupport_encoding_test

Avoid hardcoded magic number in test teardown.
Merge pull request #15856 from zuhao/refactor_activesupport_decoding_test

Use with_parse_json_times helper in tests.
Merge pull request #15850 from sgrif/sg-missing-tests

Add missing test cases for `attribute_method?`
Merge pull request #15849 from sgrif/sg-move-attributes

Move `attributes` to the `AttributeSet` object.
Merge pull request #15839 from sgrif/sg-attr-set-null

Return a null object from `AttributeSet#[]`
Create with_env helper for tests.
Merge pull request #15859 from zuhao/refactor_activesupport_caching_test

Create with_env helper for tests.
Encapsulate knowledge of type objects on `ActiveRecord::Result`

Attempting to reduce the number of places that care about the details of
how type casting occurs. We remove the type casting of the primary key
in `JoinDependecy`, rather than encapsulating it. It was originally
added for consistency with
https://github.com/rails/rails/commit/40898c8c19fa04442fc5f8fb5daf3a8bdb9a1e03#diff-06059df8d3dee3101718fb2c01151ad0R211,
but that conditional was later removed in
https://github.com/rails/rails/commit/d7ddaa530fd1b94e22d745cbaf2e8a5a34ee9734.

What is important is that the same row twice will have the same value
for the primary key, which it will.