1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-20 14:54:15 +01:00

(feat) OpenAPI/users: filter by created_after

This commit is contained in:
Sylvain 2022-12-07 11:23:41 +01:00
parent 7659597e32
commit 9ac2655256
4 changed files with 23 additions and 0 deletions

View File

@ -4,6 +4,7 @@
- Accounting data is now built each night and saved in database
- OpenAPI endpoint to fetch accounting data
- Updated OpenAPI documentation
- OpenAPI users endpoint offer ability to filter by created_after
- Fix a bug: providing an array of attributes to filter OpenApi data, results in error
- Fix a bug: unable to manage stocks on new products
- Updated react-modal to 3.16.1

View File

@ -14,6 +14,7 @@ class OpenAPI::V1::UsersController < OpenAPI::V1::BaseController
@users = @users.where(email: email_param)
end
@users = @users.where(id: may_array(params[:user_id])) if params[:user_id].present?
@users = @users.where('created_at >= ?', DateTime.parse(params[:created_after])) if params[:created_after].present?
return if params[:page].blank?

View File

@ -17,6 +17,7 @@ class OpenAPI::V1::UsersDoc < OpenAPI::V1::BaseDoc
param_group :pagination
param :email, [String, Array], optional: true, desc: 'Filter users by *email* using strict matching.'
param :user_id, [Integer, Array], optional: true, desc: 'Filter users by *id* using strict matching.'
param :created_after, DateTime, optional: true, desc: 'Filter users to accounts created after the given date.'
example <<-USERS
# /open_api/v1/users?page=1&per_page=4
{

View File

@ -15,12 +15,17 @@ class OpenApi::UsersTest < ActionDispatch::IntegrationTest
assert_equal Mime[:json], response.content_type
users = json_response(response.body)
assert_equal User.count, users[:users].length
assert_not_nil(users[:users].detect { |u| u[:external_id] == 'J5821-4' })
end
test 'list all users with pagination' do
get '/open_api/v1/users?page=1&per_page=5', headers: open_api_headers(@token)
assert_response :success
assert_equal Mime[:json], response.content_type
users = json_response(response.body)
assert_equal 5, users[:users].length
end
test 'list all users filtering by IDs' do
@ -46,5 +51,20 @@ class OpenApi::UsersTest < ActionDispatch::IntegrationTest
test 'list all users filtering by email' do
get '/open_api/v1/users?email=jean.dupond@gmail.com', headers: open_api_headers(@token)
assert_response :success
assert_equal Mime[:json], response.content_type
users = json_response(response.body)
assert_equal 1, users[:users].count
assert_equal 'jean.dupond@gmail.com', users[:users].first[:email]
end
test 'list all users created after date' do
get '/open_api/v1/users?created_after=2018-01-01T00:00:00+01:00', headers: open_api_headers(@token)
assert_response :success
assert_equal Mime[:json], response.content_type
users = json_response(response.body)
assert users[:users].count.positive?
assert(users[:users].all? { |u| DateTime.parse(u[:created_at]) >= DateTime.parse('2018-01-01T00:00:00+01:00') })
end
end