wor-paginate 0.1.4 → 0.1.5a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ece2d8e06ba836333189b0db686523324723403a7b78e094d4d6d609247f501
4
- data.tar.gz: c649acf92be56898747bc758bfb6479ecb82894305fb13f16c28259c0e8b96ac
3
+ metadata.gz: a7bfb0360345a51c5eb2ab8ed52d90f3dc7032155830e37b48a83e09e049f1fd
4
+ data.tar.gz: f145fa8f27deb86310b600ff75b2623a620ea7445cfca7f387fabe2dcb000471
5
5
  SHA512:
6
- metadata.gz: 491c2345cc0add8083d0ef428d70194a180c12c3d4b3298da3c4fcb9cd662477b8bc8e2dc5285e4019bb6b1f7d71608d17ab942cc72f64d1910874741864522a
7
- data.tar.gz: 9a6bbee3a30cdee550cb309890fb822c325d77411251fa32aa41b6b9b0962cbf381a83b88d33f91b9f910c6bad5e9b8e3aefe767028a69191ffe16b546b60cb1
6
+ metadata.gz: 9cfa29bf30aacda22b8f2702018b078de0e1c1631aa5f51366bc69a9d5a2fe7fd74ec2514d44597357fc604912718205b756fe43e5cee68cb01f492659235fa9
7
+ data.tar.gz: 84576e26892ca4d718084e0d064323a0d46e73e209085409e8f77577f115aac38eb4fb491a05f50a7a95a531e55c0284a218946f0ae303e0151fd126c13e5ce8
data/.travis.yml CHANGED
@@ -1,20 +1,23 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.2
4
- - 2.3.3
5
- - 2.4.0
3
+ - 2.3.8
4
+ - 2.4.7
5
+ - 2.5.6
6
+ - 2.6.4
6
7
  - ruby-head
7
8
 
9
+ before_install:
10
+ - gem install bundler -v 2.0.1
11
+
8
12
  install:
9
- - gem install bundler
10
- - gem install danger --version '~> 5.0'
11
- - bundle install --retry=3
13
+ - bundle _2.0.1_ install --retry=3
12
14
  - bundle exec rake db:migrate RAILS_ENV=test -f spec/dummy/Rakefile
13
15
 
14
- before_script:
15
- - danger
16
-
17
16
  script:
18
17
  - bundle exec rubocop lib spec --format simple
19
18
  - bundle exec rspec
20
19
  - bundle exec codeclimate-test-reporter
20
+
21
+ matrix:
22
+ allow_failures:
23
+ - rvm : ruby-head
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  ## Change log
2
2
 
3
+ ### V0.1.5a
4
+ * [#62](https://github.com/Wolox/wor-paginate/pull/62): Add options in active model serializer - [@blacksam07](https://github.com/blacksam07).
5
+
6
+ ### V0.1.5
7
+ * [#59](https://github.com/Wolox/wor-paginate/pull/59): Add include option to serialize nested models - [@jcgrethe](https://github.com/jcgrethe).
8
+ * [#65](https://github.com/Wolox/wor-paginate/pull/65): Add scope on serializer - [@mtejedorwolox](https://github.com/mtejedorwolox).
9
+ * [#72](https://github.com/Wolox/wor-paginate/pull/72): Update readme and CI fix - [@mnmallea](https://github.com/mnmallea).
10
+
3
11
  ### V0.1.4
4
12
  * [#57](https://github.com/Wolox/wor-paginate/pull/57): Update rails max version - [@hdf1986](https://github.com/hdf1986).
5
13
 
data/Gemfile CHANGED
@@ -15,7 +15,7 @@ gemspec
15
15
 
16
16
  group :development, :test do
17
17
  gem 'active_model_serializers', '~> 0.10.0'
18
- gem 'bundler', '~> 1.13'
18
+ gem 'bundler', '~> 2.0.1'
19
19
  gem 'byebug', '~> 9.0'
20
20
  gem 'codeclimate-test-reporter', '~> 1.0.0'
21
21
  gem 'database_cleaner', '~> 1.6.0'
@@ -33,8 +33,3 @@ group :development, :test do
33
33
  gem 'webmock', '~> 3.0.0'
34
34
  gem 'will_paginate', '~> 3.1.0'
35
35
  end
36
-
37
- group :test do
38
- gem 'danger'
39
- gem 'danger-todoist'
40
- end
data/README.md CHANGED
@@ -1,9 +1,28 @@
1
- # Wor::Paginate
1
+ Wor::Paginate
2
+ =============
3
+
2
4
  [![Build Status](https://travis-ci.org/Wolox/wor-paginate.svg?branch=master)](https://travis-ci.org/Wolox/wor-paginate)
3
5
  [![Gem Version](https://badge.fury.io/rb/wor-paginate.svg)](https://badge.fury.io/rb/wor-paginate)
4
- [![Dependency Status](https://gemnasium.com/badges/github.com/Wolox/wor-paginate.svg)](https://gemnasium.com/github.com/Wolox/wor-paginate)
5
6
  [![Code Climate](https://codeclimate.com/github/Wolox/wor-paginate/badges/gpa.svg)](https://codeclimate.com/github/Wolox/wor-paginate)
6
- [![Test Coverage](https://codeclimate.com/github/Wolox/wor-paginate/badges/coverage.svg)](https://codeclimate.com/github/Wolox/wor-paginate/coverage)
7
+
8
+ # Table of contents
9
+ - [Description](#description)
10
+ - [Installation](#installation)
11
+ - [Usage](#usage)
12
+ - [Basic usage](#basic-usage)
13
+ - [Customizing output](#customizing-output)
14
+ - [Custom serializers](#custom-serializers)
15
+ - [Custom formatters](#custom-formatters)
16
+ - [Working with Kaminari or will_paginate](#working-with-kaminari-or-will_paginate)
17
+ - [Test helpers](#test-helpers)
18
+ - [Contributing](#contributing)
19
+ - [Releases](#releases)
20
+ - [About](#about)
21
+ - [License](#license)
22
+
23
+ -----------------------
24
+
25
+ ## Description
7
26
 
8
27
  Wor::Paginate is a gem for Rails that simplifies pagination, particularly for controller methods, while standardizing JSON output for APIs. It's meant to work both as a standalone pagination gem and as an extra layer over [Kaminari](https://github.com/kaminari/kaminari) and [will_paginate](https://github.com/mislav/will_paginate).
9
28
 
@@ -34,7 +53,7 @@ The basic use case is to paginate using default values. This is achieved by incl
34
53
  include Wor::Paginate
35
54
 
36
55
  def index
37
- render_paginated DummyModel
56
+ render_paginated DummyModel
38
57
  end
39
58
  end
40
59
  ```
@@ -57,7 +76,7 @@ The response to the index will then be:
57
76
  "name": "i",
58
77
  "something": 68
59
78
  },
60
- ...
79
+ // ...
61
80
  {
62
81
  "id": 25,
63
82
  "name": "2m",
@@ -85,6 +104,20 @@ render_paginated DummyModel, each_serializer: CustomDummyModelSerializer
85
104
  ```
86
105
  where the serializer is just an [`ActiveModel::Serializer`](https://github.com/rails-api/active_model_serializers).
87
106
 
107
+ #### Custom options
108
+ Using custom options in serializer, example method `current_user`
109
+ ```ruby
110
+ render_paginated DummyModel, each_serializer: CustomDummyModelSerializer, current_user: current_user
111
+ ```
112
+ In serializer
113
+ ```ruby
114
+ class CustomSerializer < ActiveModel::Serializer
115
+ def method
116
+ @instance_options[:current_user]
117
+ end
118
+ end
119
+ ```
120
+
88
121
  #### Custom formatters
89
122
  A formatter is an object that defines the output of the render_paginated method. In case the application needs a different format for a request, it can be passed to the `render_paginated` method using the `formatter` option:
90
123
  ```ruby
@@ -117,25 +150,31 @@ If either Kaminari or will_paginate are required in the project, Wor::Paginate w
117
150
  You can use the `be_paginated` matcher to test your endpoints. It also accepts the `with` chain method to receive a formatter.
118
151
 
119
152
  You only need to add this in your rails_helper.rb
153
+
120
154
  ```ruby
121
155
  # spec/rails_helper.rb
122
156
  require 'wor/paginate/rspec'
123
157
  ```
158
+
124
159
  And in your spec do
125
160
  ```ruby
126
161
  # spec/controllers/your_controller.rb
127
162
  describe YourController do
163
+ let(:response_body) do
164
+ ActiveSupport::JSON.decode(response.body) if response.present? && response.body.present?
165
+ end
166
+
128
167
  describe '#index' do
129
- it 'checks that the response keys matches with the default formatter' do
130
- get :index
131
- expect(response_body(response)).to be_paginated
132
- end
168
+ subject(:http_request) { get :index }
169
+
170
+ it { expect(response_body).to be_paginated }
133
171
  end
134
172
 
135
173
  describe '#index_with_custom_formatter' do
174
+ subject(:http_request) { get :index_custom_formatter }
175
+
136
176
  it 'checks that the response keys matches with the custom formatter' do
137
- get :index_custom_formatter
138
- expect(response_body(response)).to be_paginated.with(CustomFormatter)
177
+ expect(response_body).to be_paginated.with(CustomFormatter)
139
178
  end
140
179
  end
141
180
  end
@@ -149,12 +188,25 @@ end
149
188
  4. Run rubocop lint (`bundle exec rubocop -R --format simple`)
150
189
  5. Run rspec tests (`bundle exec rspec`)
151
190
  6. Push your branch (`git push origin my-new-feature`)
152
- 7. Create a new Pull Request
191
+ 7. Create a new Pull Request to `master` branch
192
+
193
+ ## Releases
194
+ 📢 [See what's changed in a recent version](https://github.com/Wolox/wor-paginate/releases)
153
195
 
154
196
  ## About ##
155
197
 
156
- This project is maintained by [Hugo Farji](https://github.com/hdf1986), [Ignacio Coluccio](https://github.com/icoluccio), and [Alan Halatian](https://github.com/alanhala). It was written by [Wolox](http://www.wolox.com.ar).
157
- ![Wolox](https://raw.githubusercontent.com/Wolox/press-kit/master/logos/logo_banner.png)
198
+ The current maintainers of this gem are :
199
+ * [Lucas Voboril](https://github.com/lucasVoboril)
200
+ * [Martín Mallea](https://github.com/mnmallea)
201
+
202
+ This project was developed by:
203
+ * [Hugo Farji](https://github.com/hdf1986)
204
+ * [Ignacio Coluccio](https://github.com/icoluccio)
205
+ * [Alan Halatian](https://github.com/alanhala)
206
+
207
+ At [Wolox](http://www.wolox.com.ar)
208
+
209
+ [![Wolox](https://raw.githubusercontent.com/Wolox/press-kit/master/logos/logo_banner.png)](http://www.wolox.com.ar)
158
210
 
159
211
  ## License
160
212
 
@@ -32,8 +32,9 @@ module Wor
32
32
  end
33
33
 
34
34
  def serialized_content
35
- return paginated_content.map { |item| serializer.new(item) } if serializer.present?
36
-
35
+ if serializer.present?
36
+ return paginated_content.map { |item| serializer.new(item, options) }
37
+ end
37
38
  if defined? ActiveModelSerializers::SerializableResource
38
39
  ActiveModelSerializers::SerializableResource.new(paginated_content).as_json
39
40
  else
@@ -12,6 +12,8 @@ module Wor
12
12
  ].freeze
13
13
 
14
14
  def render_paginated(content, options = {})
15
+ return render_paginate_with_include(content, options) if includes?(options)
16
+
15
17
  render json: paginate(content, options)
16
18
  end
17
19
 
@@ -21,6 +23,10 @@ module Wor
21
23
  formatter_class(options).new(adapter, options).format
22
24
  end
23
25
 
26
+ def render_paginate_with_include(content, options)
27
+ render json: paginate(content, options), include: options[:include]
28
+ end
29
+
24
30
  def formatter_class(options)
25
31
  options[:formatter].presence || Formatter
26
32
  end
@@ -42,6 +48,10 @@ module Wor
42
48
  params[Config.per_page_param].to_i unless params[Config.per_page_param].nil?
43
49
  end
44
50
 
51
+ def includes?(options)
52
+ !options[:include].nil?
53
+ end
54
+
45
55
  def limit(options)
46
56
  [
47
57
  Config.max_limit,
@@ -1,5 +1,5 @@
1
1
  module Wor
2
2
  module Paginate
3
- VERSION = '0.1.4'.freeze
3
+ VERSION = '0.1.5a'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,3 @@
1
+ ## Summary
2
+
3
+ [Change!] Describe your feature, problems you had, notes, improvements and others.
data/wor-paginate.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
8
8
  s.version = Wor::Paginate::VERSION
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.date = Date.today
11
- s.authors = ["hdf1986", "icoluccio", "alanhala"]
12
- s.email = ["hugo.farji@wolox.com.ar", "ignacio.coluccio@wolox.com.ar", "alan.halatian@wolox.com.ar"]
11
+ s.authors = ["icoluccio", "mnmallea", "holywyvern", "lucasVoboril"]
12
+ s.email = ["ignacio.coluccio@wolox.com.ar", "martin.mallea@wolox.com.ar", "ramiro.rojo@wolox.com.ar", "lucas.voboril@wolox.com.ar"]
13
13
  s.homepage = "https://github.com/Wolox/wor-paginate"
14
14
  s.summary = "Simplified pagination for Rails API controllers"
15
15
  s.description = "Wor::Paginate is a gem for Rails that simplifies pagination, particularly for controller methods, while standardizing JSON output for APIs. It's meant to work both as a standalone pagination gem and as an extra layer over Kaminari and will_paginate"
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wor-paginate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5a
5
5
  platform: ruby
6
6
  authors:
7
- - hdf1986
8
7
  - icoluccio
9
- - alanhala
8
+ - mnmallea
9
+ - holywyvern
10
+ - lucasVoboril
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2018-09-04 00:00:00.000000000 Z
14
+ date: 2019-09-13 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: railties
@@ -51,9 +52,10 @@ description: Wor::Paginate is a gem for Rails that simplifies pagination, partic
51
52
  work both as a standalone pagination gem and as an extra layer over Kaminari and
52
53
  will_paginate
53
54
  email:
54
- - hugo.farji@wolox.com.ar
55
55
  - ignacio.coluccio@wolox.com.ar
56
- - alan.halatian@wolox.com.ar
56
+ - martin.mallea@wolox.com.ar
57
+ - ramiro.rojo@wolox.com.ar
58
+ - lucas.voboril@wolox.com.ar
57
59
  executables: []
58
60
  extensions: []
59
61
  extra_rdoc_files: []
@@ -62,7 +64,6 @@ files:
62
64
  - ".rubocop.yml"
63
65
  - ".travis.yml"
64
66
  - CHANGELOG.md
65
- - Dangerfile
66
67
  - Gemfile
67
68
  - LICENSE.md
68
69
  - README.md
@@ -85,6 +86,7 @@ files:
85
86
  - lib/wor/paginate/paginate.rb
86
87
  - lib/wor/paginate/rspec.rb
87
88
  - lib/wor/paginate/version.rb
89
+ - pull_request_template.md
88
90
  - wor-paginate.gemspec
89
91
  homepage: https://github.com/Wolox/wor-paginate
90
92
  licenses:
@@ -101,12 +103,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
101
103
  version: '0'
102
104
  required_rubygems_version: !ruby/object:Gem::Requirement
103
105
  requirements:
104
- - - ">="
106
+ - - ">"
105
107
  - !ruby/object:Gem::Version
106
- version: '0'
108
+ version: 1.3.1
107
109
  requirements: []
108
- rubyforge_project:
109
- rubygems_version: 2.7.6
110
+ rubygems_version: 3.0.2
110
111
  signing_key:
111
112
  specification_version: 4
112
113
  summary: Simplified pagination for Rails API controllers
data/Dangerfile DELETED
@@ -1,69 +0,0 @@
1
- # Sometimes it's a README fix, or something like that - which isn't relevant for
2
- # including in a project's CHANGELOG for example
3
- declared_trivial = github.pr_title.include? "#trivial"
4
- gemfile_changed = git.deleted_files.include?('Gemfile')
5
- gemfile_lock_changed = git.deleted_files.include?('Gemfile.lock')
6
-
7
- # Make it more obvious that a PR is a work in progress and shouldn't be merged yet
8
- warn("PR is classed as Work in Progress") if github.pr_title.include? "[WIP]"
9
-
10
- # Warn when there is a big PR with more than 500 lines
11
- warn("Big PR. If it's possible try to reduce this into smaller PR's") if git.lines_of_code > 500
12
-
13
- # Warn when a PR is clased as work in progress
14
- warn "PR is classed as Work in Progress" if github.pr_title.include? "[WIP]"
15
-
16
- # Don't let testing shortcuts get into master by accident
17
- fail("fdescribe left in tests") if `grep -r fdescribe specs/ `.length > 1
18
- fail("fit left in tests") if `grep -r fit specs/ `.length > 1
19
-
20
- # Ensure there's a summary on the pull request description
21
- fail "Please provide a summary in the Pull Request description" if github.pr_body.length < 5
22
-
23
- # Ensures that the PR is mergeable
24
- can_merge = github.pr_json["mergeable"]
25
- fail("This PR cannot be merged yet. Please fix the conflicts with the base branch", sticky: false) unless can_merge
26
-
27
- # It fails when TODO's are present
28
- todoist.message = "Please fix all TODOS"
29
- todoist.fail_for_todos
30
-
31
- # Check for changes in the CHANGELOG.md if the pr isn't trivial
32
- unless declared_trivial
33
- [
34
- 'CHANGELOG.md'
35
- ].each do |file_who_needs_change|
36
- fail("#{file_who_needs_change} needs to be changed") unless git.modified_files.include?(file_who_needs_change)
37
- end
38
- end
39
- # Fails when an important file is deleted or renamed
40
- [
41
- 'wor-paginate-gemspec',
42
- 'README.md',
43
- 'CHANGELOG.md',
44
- '.gitignore',
45
- '.travis.yml',
46
- '.rubocop.yml'
47
- ].each do |protected_file|
48
- fail("#{protected_file} file shouldn't be deleted or renamed") if git.deleted_files.include?(protected_file) || git.renamed_files.include?(protected_file)
49
- end
50
-
51
- # Fails when a dangerous file is uploaded
52
- [
53
- '.ruby-version',
54
- 'Gemfile.lock',
55
- ].each do |protected_file|
56
- fail("#{protected_file} file shouldn't be added") if git.added_files.include?(protected_file)
57
- end
58
-
59
- # Removes placeholder line
60
- # Danger::Changelog.configure do |config|
61
- # config.placeholder_line = nil
62
- # end
63
-
64
- # Check that bundle install where ran
65
- # if gemfile_changed && !gemfile_lock_changed
66
- # message = 'Changes were made to Gemfile, but not to Gemfile.lock';
67
- # idea = 'Perhaps you need to run `bundle install`?';
68
- # warn(`${message} - <i>${idea}</i>`);
69
- # end