tire-am_serializers 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 19507b2069ef8fe4d96ef988a4ff56a45b99024d
4
- data.tar.gz: b4064dbe20e841d18816b6881c2e2723780e47f6
3
+ metadata.gz: aaeb1f24b76db25a951875f4a20c456caba3861b
4
+ data.tar.gz: 9afd95fe25a4099a97217a2c0948e8fa0b7a5cd0
5
5
  SHA512:
6
- metadata.gz: b7fb13113679b491869b5a83dbacbae2cce894143ecff0f353ed8a35eb25f16b17f5f95fd9e6e221e8c7618e9b62367892d29a7f87ceb812fa87ed6bc0cb6c0a
7
- data.tar.gz: abf971f17cd8cc63dae8ab24c2770c451f5d855a5046c87f5e5aadc57d299a539c098dad05947286eed1f79fc30397a283df1ea98af2208cc4b7991a7c5b679b
6
+ metadata.gz: 0a39fc38d7b4d7df60aada0b33249b0d34e49f2c5452dde6934a18e623f899b8b41a1269c8dd5a98967e42a45aa8d5a5b91a472513a636360e923645d8118547
7
+ data.tar.gz: 6d45d3653e1c682f5b71d6d9ab741dfa729ede4b82be73d914b8f83147ee359d5b5315e5c106119d869a0b0ad2635517f189783f9cb85756cb19b6814d6af2ca
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Active Model Serializers + Tire
1
+ # Active Model Serializers + Tire (Beta)
2
2
 
3
3
  The easy way to add [Active Model Serializers](https://github.com/rails-api/active_model_serializers) to your [Tire](https://github.com/karmi/tire/) results.
4
4
 
@@ -11,14 +11,16 @@ gem 'tire-am_serializers'
11
11
 
12
12
  ## Usage
13
13
 
14
- Do nothing, it should works as expected:
14
+ Same as [Active Model Serializers](https://github.com/rails-api/active_model_serializers):
15
15
  ```ruby
16
- render json: User.search(...).results
16
+ render json: User.search(...)
17
17
  ```
18
18
 
19
+ There is only one thing, Rails will look for `TireUserSeralizer` by default. If class doesn't exist, it will try to find `UserSerailizer`. If no Serilaizers present for this model, it will use default behaviour of `to_json`.
20
+
19
21
  If you want to get old behaviour from Tire:
20
22
  ```ruby
21
- render json: Vacancy.search("*").map(&:tire_as_json)
23
+ render json: Vacancy.search("*").to_json
22
24
  ```
23
25
 
24
26
  ## Contributing
@@ -27,4 +29,4 @@ render json: Vacancy.search("*").map(&:tire_as_json)
27
29
  2. Create your feature branch (`git checkout -b my-new-feature`)
28
30
  3. Commit your changes (`git commit -am 'Add some feature'`)
29
31
  4. Push to the branch (`git push origin my-new-feature`)
30
- 5. Create new Pull Request
32
+ 5. Create new Pull Request
data/Rakefile CHANGED
@@ -1 +1,12 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ desc 'Run tests'
5
+ Rake::TestTask.new(:test) do |t|
6
+ t.libs << 'lib'
7
+ t.libs << 'test'
8
+ t.pattern = 'test/**/*_test.rb'
9
+ t.verbose = true
10
+ end
11
+
12
+ task :default => :test
@@ -0,0 +1,27 @@
1
+ module Tire
2
+ module ActiveModel
3
+ module SerializerSupport
4
+
5
+ extend ActiveSupport::Concern
6
+
7
+ if "".respond_to?(:safe_constantize)
8
+ def tire_active_model_serializer
9
+ "Tire#{self.class.name}Serializer".safe_constantize
10
+ end
11
+ else
12
+ def tire_active_model_serializer
13
+ begin
14
+ "Tire#{self.class.name}Serializer".constantize
15
+ rescue NameError => e
16
+ raise unless e.message =~ /uninitialized constant/
17
+ end
18
+ end
19
+ end
20
+
21
+ # Returns a model serializer for this object considering its namespace.
22
+ def active_model_serializer
23
+ self.tire_active_model_serializer || self.class.active_model_serializer
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,18 +1,6 @@
1
1
  require "tire/version"
2
- require "tire/active_model/serializer"
2
+ require "tire/active_model/serializer_support"
3
3
 
4
4
  Tire::Results::Collection.send(:include, ActiveModel::ArraySerializerSupport)
5
-
6
5
  Tire::Results::Item.send(:include, ActiveModel::SerializerSupport)
7
- Tire::Results::Item.send(:include, Tire::ActiveModel::Serializer)
8
-
9
- Tire::Results::Item.send(:alias_method, :tire_as_json, :as_json)
10
-
11
- Tire::Results::Item.send :define_method, :to_json do |options|
12
- tire_as_json.to_json(options)
13
- end
14
-
15
- Tire::Results::Item.send(:alias_method, :tire_to_json, :to_json)
16
-
17
- Tire::Results::Item.send(:alias_method, :to_json, :serializer_to_json)
18
- Tire::Results::Item.send(:alias_method, :as_json, :serializer_as_json)
6
+ Tire::Results::Item.send(:include, Tire::ActiveModel::SerializerSupport)
data/lib/tire/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Tire
2
2
  module AmSerializers
3
- VERSION = "0.0.2"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -0,0 +1,21 @@
1
+ require "rubygems"
2
+ require "bundler/setup"
3
+ require "test/unit"
4
+ require "tire"
5
+ require "active_model_serializers"
6
+
7
+ class Test::Unit::TestCase
8
+
9
+ def mock_response(body, code=200, headers={})
10
+ Tire::HTTP::Response.new(body, code, headers)
11
+ end
12
+
13
+ def fixtures_path
14
+ Pathname( File.expand_path( 'fixtures', File.dirname(__FILE__) ) )
15
+ end
16
+
17
+ def fixture_file(path)
18
+ File.read File.expand_path( path, fixtures_path )
19
+ end
20
+
21
+ end
@@ -0,0 +1,45 @@
1
+ require 'test_helper'
2
+
3
+ require 'tire/am_serializers'
4
+
5
+ class SomeClass
6
+ include ActiveModel::SerializerSupport
7
+ end
8
+
9
+ class SomeClassSerializer
10
+ end
11
+
12
+ class OtherClass
13
+ include ActiveModel::SerializerSupport
14
+ end
15
+
16
+ class TireOtherClassSerializer
17
+ end
18
+
19
+ class OtherClassSerializer
20
+ end
21
+
22
+
23
+ class TireSerializerSupportTest < ActiveModel::TestCase
24
+
25
+ test "active model serializer is nil if no serializer exists" do
26
+ assert_equal nil, Tire::Results::Item.new({"_type" => "RandomClass"}).active_model_serializer
27
+ end
28
+
29
+ test "active model serializer returned for item if serializer exists" do
30
+ class ::Rails; end
31
+ assert_equal SomeClassSerializer, Tire::Results::Item.new({"_type" => "SomeClass"}).active_model_serializer
32
+ Object.class_eval{remove_const :Rails}
33
+ end
34
+
35
+ test "active model serializer with tire prefix returned for item if serializer exists" do
36
+ class ::Rails; end
37
+ assert_equal TireOtherClassSerializer, Tire::Results::Item.new({"_type" => "OtherClass"}).active_model_serializer
38
+ Object.class_eval{remove_const :Rails}
39
+ end
40
+
41
+ test "active model serializer is ArraySerializer for Collection" do
42
+ assert_equal ActiveModel::ArraySerializer, Tire::Results::Collection.new({}).active_model_serializer
43
+ end
44
+
45
+ end
@@ -6,8 +6,8 @@ require 'tire/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "tire-am_serializers"
8
8
  spec.version = Tire::AmSerializers::VERSION
9
- spec.authors = ["Sergey Efremov", "Ilya Zayats"]
10
- spec.email = ["efremov.sergey@gmail.com", "somebody32@gmail.com"]
9
+ spec.authors = ["Sergey Efremov", "Ilya Zayats", "Vyacheslav Shebanov"]
10
+ spec.email = ["efremov.sergey@gmail.com", "somebody32@gmail.com", "terminal2010@gmail.com"]
11
11
  spec.description = %q{The easy way to add active model serializers to your tire results}
12
12
  spec.summary = %q{The easy way to add active model serializers to your tire results}
13
13
  spec.homepage = "https://github.com/ResumUP/tire_am_serializers/"
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
25
25
  spec.add_development_dependency "rake"
26
- end
26
+
27
+ end
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tire-am_serializers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Efremov
8
8
  - Ilya Zayats
9
+ - Vyacheslav Shebanov
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-03-13 00:00:00.000000000 Z
13
+ date: 2013-03-15 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: tire
@@ -71,6 +72,7 @@ description: The easy way to add active model serializers to your tire results
71
72
  email:
72
73
  - efremov.sergey@gmail.com
73
74
  - somebody32@gmail.com
75
+ - terminal2010@gmail.com
74
76
  executables: []
75
77
  extensions: []
76
78
  extra_rdoc_files: []
@@ -80,9 +82,11 @@ files:
80
82
  - LICENSE.txt
81
83
  - README.md
82
84
  - Rakefile
83
- - lib/tire/active_model/serializer.rb
85
+ - lib/tire/active_model/serializer_support.rb
84
86
  - lib/tire/am_serializers.rb
85
87
  - lib/tire/version.rb
88
+ - test/test_helper.rb
89
+ - test/tire_serializers_support_test.rb
86
90
  - tire-am_serializers.gemspec
87
91
  homepage: https://github.com/ResumUP/tire_am_serializers/
88
92
  licenses:
@@ -108,4 +112,6 @@ rubygems_version: 2.0.1
108
112
  signing_key:
109
113
  specification_version: 4
110
114
  summary: The easy way to add active model serializers to your tire results
111
- test_files: []
115
+ test_files:
116
+ - test/test_helper.rb
117
+ - test/tire_serializers_support_test.rb
@@ -1,29 +0,0 @@
1
- module Tire
2
- module ActiveModel
3
- module Serializer
4
-
5
- def serializer_to_json(options = {})
6
- serialization :to_json, options
7
- end
8
-
9
- def serializer_as_json(options = {})
10
- serialization :as_json, options
11
- end
12
-
13
- private
14
-
15
- def serializer_defined?
16
- !active_model_serializer.nil?
17
- end
18
-
19
- def serialization(method, options)
20
- if serializer_defined?
21
- active_model_serializer.new(self).send(method, options)
22
- else
23
- send("tire_#{method}", options)
24
- end
25
- end
26
-
27
- end
28
- end
29
- end