Commit Graph

560 Commits

Author SHA1 Message Date
Benjamin Fleischer
196216b250
Merge pull request #2212 from rails-api/remove_legacy_embeds
Remove legacy has_many_embed_ids test [ci skip]
2017-10-31 14:54:02 -05:00
Benjamin Fleischer
e3480345e3
Merge pull request #2211 from rails-api/polymorphic_relationships_require_serializer_instance
JSON:API relationship tests no longer show v0.10.5 regression
2017-10-31 13:49:18 -05:00
Joe Meredith
c6a14c9eac Fail if collection type cannot be inferred with json adapter (#2210) 2017-10-30 13:37:37 -04:00
Benjamin Fleischer
1fd324947f Remove legacy has_many_embed_ids test 2017-10-29 22:50:59 -05:00
Benjamin Fleischer
0fcb8a6cce Fix polymorphic belongs_to tests; passes on v0.10.5 2017-10-29 19:26:14 -05:00
Dennis Stumm
4d7c2457d7 Fix deserialization of polymorphic relationships (#2200)
* Classify the relationship type for polymorphic associations
2017-10-07 17:03:38 -05:00
Benjamin Fleischer
6a7d864605 Fix CI on 0-10-stable (#2181)
* Loosen pry, pry-byebug depencency

```
Resolving dependencies...
byebug-9.1.0 requires ruby version >= 2.2.0, which is
incompatible with the current version, ruby 2.1.10p492
```

* Adjust nokogiri version constraint for CI

Update appveyor Ruby to 2.3 to work around:

```
Gem::InstallError: nokogiri requires Ruby version < 2.5, >= 2.2.

An error occurred while installing nokogiri (1.8.0), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.8.0'` succeeds before bundling.
```

and not 2.4 since:

https://ci.appveyor.com/project/bf4/active-model-serializers/build/1.0.1052-fix_ci/job/0q3itabsnvnxr83u

```
nokogiri-1.6.8.1-x86-mingw32 requires ruby version < 2.4, which is incompatible with the current version, ruby 2.4.1p111
```

* Include rails gem in Gemfile

(For Rails5)

In Rails5, checking for Rails::Railtie is better

* Rails5 test env requires Rails.application.class.name

rails-42d09f6b49da/railties/lib/rails/application.rb

```ruby
def secret_key_base
  if Rails.env.test? || Rails.env.development?
  Digest::MD5.hexdigest self.class.name
```

* Reformat exclude matrix to be easier to read

* Simplify jruby-travis config per rails/rails

* Organize .travis.yml per rails/rails

* Allow JRuby failure on Rails 5+; try rails-5 db adapter branch

https://github.com/jruby/activerecord-jdbc-adapter/issues/708

```
uninitialized constant ActiveRecord::ConnectionAdapters::Column::Format
```

see https://travis-ci.org/rails-api/active_model_serializers/jobs/277112008
2017-09-19 05:27:02 -04:00
Alexandre de Oliveira
1e4d117b99 Merge pull request #2149 from mecampbellsoup/more-pagination-links-by-default
Always include self, first, last pagination links
2017-06-14 15:47:30 -03:00
mecampbellsoup
402883d84f Fix Travis lint offenses 2017-06-14 13:35:00 -04:00
mecampbellsoup
92e9a66e97 Amend tests to always include all pagination keys 2017-06-13 12:35:55 -04:00
mecampbellsoup
ff71ef26eb Amend pagination controller specs 2017-06-05 18:41:15 -04:00
mecampbellsoup
d8e983604b Clarify naming of expected response w/ pagination but empty data 2017-06-05 17:51:38 -04:00
mecampbellsoup
7387266c37 Always display self, first, last pagination links 2017-06-05 17:26:41 -04:00
Christian
a89e78c655 Allow referencing sideloaded include by key. (#2136)
* If a `key` is set on the reflection use the `key` instead of `name`.
This ensures that associations with a key set are still included.
2017-05-18 15:59:14 -05:00
Grey Baker
be7ee70376 Allow serialized ID to be overwritten for belongs-to relationships
If the `id` attribute for a class isn't taken directly from the object when
serializing it, it may be desirible for other classes that serialize a
relationship with that class to overwrite the relationship IDs they serialize.

For example, suppose we have:

```(ruby)
class Repo < Model
  attributes :id, :github_id, :name
  associations :configs
end

class Config < Model
  attributes :id
  belongs_to :repo
end

class RepoSerializer < ActiveModel::Serializer
  attributes :id, :name

  has_many :update_configs

  def id
    object.github_id
  end
end

class ConfigSerializer < ActiveModel::Serializer
  attributes :id
  belongs_to :repo
end
```

In the above example, serializing a list of `Repo`s will give the `github_id`
for each one, but serializing a `Config` will give the `id` for its parent repo.

Ideally AMS would inspect the `RepoSerializer` when serializing the `Config`,
and realise it can't just output the foreign key. Unfortunately, getting the
serialization class for the child repo currently requires loading the record
(via evaluating `lazy_assocation`), and loses the performance benefit of the
existing `belongs_to?` path. Instead, I've opted to use
`read_attribute_for_serialization` instead of `object.send` to fetch the
serialized foreign key. This allows the serialized relationship ID to be
overwritten using

```(ruby)
class ConfigSerializer < ActiveModel::Serializer
  ...

  def repo_id
    object.repo.github_id
  end
end
```
2017-05-13 15:22:18 +01:00
Benjamin Fleischer
73eae19b3d Return null resource object identifier for blank id
Also, fix test where attributes were included when id was ""

```
  1) Failure:
  ActionController::Serialization::AdapterSelectorTest#test_render_using_adapter_override
  [test/action_c$ntroller/adapter_selector_test.rb:53]:
  --- expected
  +++ actual
  @@ -1 +1 @@
  -"{\"data\":{\"id\":\"\",\"type\":\"profiles\",\"attributes\":{\"name\":\"Name 1\",\"description\":\"Description 1\"}}}"
  +"{\"data\":null}"
```
2017-04-30 23:28:08 -05:00
Manuel Thomassen
273b7e7f30 belongs_to causes unnecessary db hit 2017-04-30 18:11:37 -05:00
Benjamin Fleischer
876190440f Update reflection tests 2017-04-30 16:39:25 -05:00
Benjamin Fleischer
ff5ab21a45 Make Association totally lazy 2017-04-23 18:40:46 -05:00
Benjamin Fleischer
7697d9f5ec Refactor: introduce lazy association 2017-04-23 17:53:00 -05:00
Benjamin Fleischer
fad4ef1046 Refactor reflection building of association 2017-04-23 14:19:04 -05:00
Benjamin Fleischer
758e44e6e2 Style fixes 2017-04-22 22:10:43 -05:00
Benjamin Fleischer
c13354c4e8 Add test todos before I forget 2017-04-22 22:08:23 -05:00
Benjamin Fleischer
b4cef58e98 Correct tests since reflections changes 2017-04-22 22:08:20 -05:00
Benjamin Fleischer
810229656d Test Reflection value/include_data 2017-04-22 22:07:02 -05:00
Benjamin Fleischer
8440455002 Correct tests since reflections changes 2017-04-22 22:06:59 -05:00
Benjamin Fleischer
e07613b63f Assert mutating reflection is not thread-safe 2017-04-22 22:06:21 -05:00
Benjamin Fleischer
629aa8c7b1 Correct tests since reflections changes 2017-04-22 22:06:08 -05:00
Benjamin Fleischer
1ef7c7d35b Add reflection tests 2017-04-22 22:01:54 -05:00
Benjamin Fleischer
81a9fbd1c3 Merge pull request #2046 from leonelgalan/bug_filter_parameters
Fixes bug in Test::Schema when using filter_parameters
2017-02-16 11:55:23 -06:00
Leonel Galan
e7c79b1f49 Move Rails.application.config into configure block for test rails app. 2017-02-06 15:52:53 -05:00
Leonel Galan
7b9d71e99b Fixes bug in Test::Schema when using filter_parameters 2017-02-06 14:58:36 -05:00
Benjamin Fleischer
93ca27fe44 Merge 0-10-stable into master (to fix breaking change). (#2023)
* Merge pull request #1990 from mxie/mx-result-typo

Fix typos and capitalization in Relationship Links docs [ci skip]

* Merge pull request #1992 from ojiry/bump_ruby_versions

Run tests by Ruby 2.2.6 and 2.3.3

* Merge pull request #1994 from bf4/promote_architecture

Promote important architecture description that answers a lot of questions we get
Conflicts:
	docs/ARCHITECTURE.md

* Merge pull request #1999 from bf4/typos

Fix typos [ci skip]

* Merge pull request #2000 from berfarah/patch-1

Link to 0.10.3 tag instead of `master` branch

* Merge pull request #2007 from bf4/check_ci

Test was failing due to change in JSON exception message when parsing empty string

* Swap out KeyTransform for CaseTransform (#1993)

* delete KeyTransform, use CaseTransform

* added changelog

Conflicts:
	CHANGELOG.md

* Merge pull request #2005 from kofronpi/support-ruby-2.4

Update jsonapi runtime dependency to 0.1.1.beta6

* Bump to v0.10.4

* Merge pull request #2018 from rails-api/bump_version

Bump to v0.10.4 [ci skip]
Conflicts:
	CHANGELOG.md

* Merge pull request #2019 from bf4/fix_method_redefined_warning

Fix AMS warnings

* Merge pull request #2020 from bf4/silence_grape_warnings

Silence Grape warnings

* Merge pull request #2017 from bf4/remove_warnings

Fix mt6 assert_nil warnings

* Updated isolated tests to assert correct behavior. (#2010)

* Updated isolated tests to assert correct behavior.
* Added check to get unsafe params if rails version is great than 5

* Merge pull request #2012 from bf4/cleanup_isolated_jsonapi_renderer_tests_a_bit

Cleanup assertions in isolated jsonapi renderer tests a bit

* Add Model#attributes helper; make test attributes explicit

* Fix model attributes accessors

* Fix typos

* Randomize testing of compatibility layer against regressions

* Test bugfix

* Add CHANGELOG

* Merge pull request #1981 from groyoh/link_doc

Fix relationship links doc
Conflicts:
	CHANGELOG.md
2017-01-10 02:28:50 -06:00
Benjamin Fleischer
c52af54b4e Improve tests found by assert_nil 2017-01-06 23:17:43 -06:00
Benjamin Fleischer
4dfbe2747b Fix test bug found by assert_nil 2017-01-06 22:49:50 -06:00
Benjamin Fleischer
6acb4055c9 Fix MT6 assert_nil warnings 2017-01-06 22:06:23 -06:00
Benjamin Fleischer
98194cc0be Merge pull request #2020 from bf4/silence_grape_warnings
Silence Grape warnings
2017-01-06 23:05:45 -05:00
Benjamin Fleischer
b620c275e5 Silence Grape warnings 2017-01-06 17:18:08 -06:00
Benjamin Fleischer
40489fa8a2 Fix method redefined warning 2017-01-06 17:14:56 -06:00
Benjamin Fleischer
6cf84c11e0 Less strict exception matching 2016-12-24 21:29:46 -06:00
Benjamin Fleischer
4394f76b86 Cleanup assertions in isolated jsonapi renderer tests a bit 2016-12-24 21:28:15 -06:00
Ankit Shah
f246741cc5 Updated isolated tests to assert correct behavior. (#2010)
* Updated isolated tests to assert correct behavior.
* Added check to get unsafe params if rails version is great than 5
2016-12-24 20:34:07 -06:00
Benjamin Fleischer
c1fc0e4371 Handle different messages from different versions of JSON gem 2016-12-23 11:14:59 -06:00
Benjamin Fleischer
05430fb233 Fix typos
```
go get -u github.com/client9/misspell/cmd/misspell
misspell  -w -q -error -source=text {app,config,lib,test}/**/*
```

>   workers   = flag.Int("j", 0, "Number of workers, 0 = number of CPUs")
>   writeit   = flag.Bool("w", false, "Overwrite file with corrections (default is just to display)")
>   quietFlag = flag.Bool("q", false, "Do not emit misspelling output")
>   outFlag   = flag.String("o", "stdout", "output file or [stderr|stdout|]")
>   format    = flag.String("f", "", "'csv', 'sqlite3' or custom Golang template for output")
>   ignores   = flag.String("i", "", "ignore the following corrections, comma separated")
>   locale    = flag.String("locale", "", "Correct spellings using locale perferances for US or UK.  Default is to use a neutral variety of English.  Setting locale to US will correct the British spelling of 'colour' to 'color'")
>   mode      = flag.String("source", "auto", "Source mode: auto=guess, go=golang source, text=plain or markdown-like text")
>   debugFlag = flag.Bool("debug", false, "Debug matching, very slow")
>   exitError = flag.Bool("error", false, "Exit with 2 if misspelling found")
2016-12-11 23:41:23 -06:00
L. Preston Sego III
0422a1e772 Swap out KeyTransform for CaseTransform (#1993)
* delete KeyTransform, use CaseTransform

* added changelog
2016-12-07 10:49:38 -05:00
Benjamin Fleischer
f8ca912de8 Add failing test for AMS::Model accessor vs. attributes mutation 2016-12-04 19:33:39 -06:00
Benjamin Fleischer
80af763d2e Make test attributes explicit
- Organize test poros with associations and by serializer
- Freeze derived attributes/associations against mutation
- Cleanup PORO fixtures
2016-12-04 19:33:39 -06:00
Benjamin Fleischer
772b7999c5 Better AMS Model attributes interface 2016-11-21 09:14:26 -06:00
L. Preston Sego III
d31d741f43 Make serializer lookup configurable (#1757) 2016-11-16 18:38:40 +01:00
Yohan Robert
d0de53cbb2 Fix namespace lookup for collections and has_many (#1973) 2016-11-15 08:35:58 -05:00