pg_rails 7.5.2 → 7.5.3

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.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/pg_associable/app/helpers/pg_associable/helpers.rb +19 -2
  3. data/pg_associable/app/javascript/asociable_controller.tsx +1 -1
  4. data/pg_associable/spec/pg_associable/helpers_spec.rb +40 -2
  5. data/pg_engine/app/controllers/admin/user_accounts_controller.rb +5 -1
  6. data/pg_engine/app/controllers/concerns/pg_engine/resource.rb +1 -3
  7. data/pg_engine/app/controllers/pg_engine/base_controller.rb +4 -3
  8. data/pg_engine/app/controllers/users/account_switcher_controller.rb +2 -0
  9. data/pg_engine/app/controllers/users/accounts_controller.rb +35 -0
  10. data/pg_engine/app/helpers/pg_engine/flash_helper.rb +1 -2
  11. data/pg_engine/app/models/account.rb +5 -0
  12. data/pg_engine/app/models/pg_engine/base_record.rb +3 -1
  13. data/pg_engine/app/models/user.rb +12 -0
  14. data/pg_engine/app/models/user_account.rb +2 -2
  15. data/pg_engine/app/policies/account_policy.rb +4 -0
  16. data/pg_engine/app/views/admin/user_accounts/_form.html.slim +2 -2
  17. data/pg_engine/app/views/users/account_switcher/list.html.slim +18 -4
  18. data/pg_engine/app/views/users/accounts/show.html.slim +13 -0
  19. data/pg_engine/config/routes.rb +3 -0
  20. data/pg_engine/db/seeds.rb +13 -11
  21. data/pg_engine/spec/models/user_spec.rb +7 -0
  22. data/pg_engine/spec/requests/users/accounts_spec.rb +22 -0
  23. data/pg_engine/spec/requests/users/switcher_spec.rb +9 -1
  24. data/pg_engine/spec/system/tenants_spec.rb +1 -1
  25. data/pg_layout/app/views/pg_layout/_sidebar.html.erb +12 -5
  26. data/pg_rails/lib/version.rb +1 -1
  27. data/pg_scaffold/lib/generators/pg_rspec/scaffold/templates/controller_spec.rb +1 -0
  28. metadata +5 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cbc9c1b9067850c9f99c3a28d9252248c8657cacbd7cade188c50bced6d4559d
4
- data.tar.gz: 4a9b8e39d04fa9837a488262f679c93f946461140229d7da84c124ade30bd120
3
+ metadata.gz: b312261e863e04fcc457b8b773531325d1c69f9b4ef0ca1269b39853f737844a
4
+ data.tar.gz: 641bbe1b7b128e67ec7ffb874765dfeae35aac6dadf917fcbe4367b3c98939cb
5
5
  SHA512:
6
- metadata.gz: dec0fda9ea266e4a8b57d186f70bf3395bb4ee2220cbc302556048d600014c7fee086e6dbec2fbfa3189cfe381221b06966e2a5d0afd2fe5d2754044067aee6d
7
- data.tar.gz: a6dd1b4a963542a169fd2a3e67ef9003e4f37b0c549ddf59118f4b402f373c64708d92bca3a257342b75c9b83af74d39edbff162a4e91f9dcbd01bc98ebb5ddb
6
+ metadata.gz: 66f4093830e6a889cf66cfc39e6b0bfb015e93ad8e48c0e33a2c3292363f7511dbc1062b7b9993d0e0e2277ae49986c9eb0390572d63a2100a6057fb6b20e213
7
+ data.tar.gz: dc1b35305080b8bd01dbafeea7453bcf8f7bd85fe4609ee7657f18985402b86f755c170b39ce28b55e5c3939a2f5659f57e9ba3ee8336877ef8c18712fcf01be
@@ -3,7 +3,7 @@ module PgAssociable
3
3
  MAX_RESULTS = 8
4
4
 
5
5
  def pg_respond_abrir_modal
6
- src = @clase_modelo.new.decorate.new_object_url
6
+ src = clase_modelo.new.decorate.new_object_url
7
7
  content = ModalContentComponent.new(src:).render_in(view_context)
8
8
  modal = AsociableModalComponent.new(modal_id: params[:id]).with_content(content)
9
9
  render turbo_stream: turbo_stream.append_all('body', modal)
@@ -14,10 +14,27 @@ module PgAssociable
14
14
  resultados_prefix = 'resultados-inline'
15
15
  query = params[:query]
16
16
  timeout_id = params[:timeout_id]
17
- @collection = policy_scope(@clase_modelo).kept.query(query).limit(MAX_RESULTS)
17
+ @collection = search_in_scope(query)
18
18
  render turbo_stream:
19
19
  turbo_stream.update("#{resultados_prefix}-#{params[:id]}",
20
20
  partial:, locals: { collection: @collection, query:, timeout_id: })
21
21
  end
22
+
23
+ def search_in_scope(query)
24
+ scope = policy_scope(clase_modelo).kept
25
+
26
+ if clase_modelo.ransackable_attributes.include?('search')
27
+ scope.ransack(search_cont: query).result
28
+ else
29
+ Rails.logger.warn("WARNING: #{clase_modelo} should implement a 'search' ransacker")
30
+
31
+ if scope.respond_to?(:query)
32
+ Rails.logger.warn("DEPRECATED WARNING: #{clase_modelo}#query is deprecated in favor of 'search' ransacker")
33
+ scope.query(query)
34
+ else
35
+ scope.where(id: query)
36
+ end
37
+ end
38
+ end
22
39
  end
23
40
  end
@@ -66,7 +66,7 @@ export default class extends Controller {
66
66
  }
67
67
  const doSearchBounce = debounce((force) => {
68
68
  this.doSearch(force)
69
- }, 900)
69
+ }, 200)
70
70
 
71
71
  this.input.addEventListener('blur', () => {
72
72
  this.input.placeholder = this.originalPlaceholder
@@ -1,7 +1,27 @@
1
1
  require 'rails_helper'
2
2
 
3
3
  describe PgAssociable::Helpers do
4
- describe '#pg_respond_buscar' do
4
+ # DEPRECATED
5
+ describe '#pg_respond_buscar with query scope' do
6
+ let(:ctrl) do
7
+ Admin::CategoriaDeCosasController.new
8
+ end
9
+ let!(:categoria_de_cosa) { create :categoria_de_cosa }
10
+
11
+ before do
12
+ Current.user = create :user, :developer
13
+ allow(ctrl).to receive_messages(params: { id: 123, query: categoria_de_cosa.nombre })
14
+ allow(ctrl).to receive(:render)
15
+ end
16
+
17
+ it do
18
+ ctrl.pg_respond_buscar
19
+ categoria_de_cosas = ctrl.instance_variable_get(:@collection)
20
+ expect(categoria_de_cosas).to eq [categoria_de_cosa]
21
+ end
22
+ end
23
+
24
+ describe '#pg_respond_buscar with id' do
5
25
  let(:ctrl) do
6
26
  Admin::CosasController.new
7
27
  end
@@ -11,7 +31,6 @@ describe PgAssociable::Helpers do
11
31
  Current.user = create :user, :developer
12
32
  allow(ctrl).to receive_messages(params: { id: 123, query: cosa.id })
13
33
  allow(ctrl).to receive(:render)
14
- ctrl.instance_variable_set(:@clase_modelo, Cosa)
15
34
  end
16
35
 
17
36
  it do
@@ -20,4 +39,23 @@ describe PgAssociable::Helpers do
20
39
  expect(cosas).to eq [cosa]
21
40
  end
22
41
  end
42
+
43
+ describe '#pg_respond_buscar with ransack' do
44
+ let(:ctrl) do
45
+ Admin::AccountsController.new
46
+ end
47
+ let!(:account) { create :account }
48
+
49
+ before do
50
+ Current.user = create :user, :developer
51
+ allow(ctrl).to receive_messages(params: { id: 123, query: account.nombre })
52
+ allow(ctrl).to receive(:render)
53
+ end
54
+
55
+ it do
56
+ ctrl.pg_respond_buscar
57
+ accounts = ctrl.instance_variable_get(:@collection)
58
+ expect(accounts).to eq [account]
59
+ end
60
+ end
23
61
  end
@@ -15,7 +15,11 @@ module Admin
15
15
  private
16
16
 
17
17
  def atributos_permitidos
18
- %i[user_id account_id profiles]
18
+ [
19
+ :user_id,
20
+ :account_id,
21
+ { profiles: [] }
22
+ ]
19
23
  end
20
24
 
21
25
  def atributos_para_buscar
@@ -418,9 +418,7 @@ module PgEngine
418
418
  instancia_modelo.assign_attributes(modelo_params) if action_name.in? %w[update]
419
419
  end
420
420
 
421
- # FIXME: estaría bueno delegar directamente a pundit, pero habría que
422
- # arreglar tema policies
423
- Current.user&.developer? || authorize(instancia_modelo)
421
+ authorize(instancia_modelo)
424
422
 
425
423
  # TODO: problema en create y update cuando falla la validacion
426
424
  # Reproducir el error antes de arreglarlo
@@ -25,11 +25,12 @@ module PgEngine
25
25
  throw :warden, scope: :user, message: :invalid
26
26
  end
27
27
 
28
+ @current_tenant_set_by_domain_or_subdomain = true
28
29
  else
29
- account = if session['current_user_account'].present?
30
- UserAccount.where(id: session['current_user_account']).first&.account
31
- elsif Current.user.user_accounts.count == 1
30
+ account = if Current.user.user_accounts.count == 1
32
31
  Current.user.user_accounts.first.account
32
+ elsif session['current_user_account'].present?
33
+ UserAccount.where(id: session['current_user_account']).first&.account
33
34
  end
34
35
  set_current_tenant(account)
35
36
  end
@@ -7,6 +7,8 @@ module Users
7
7
  @no_main_frame = true
8
8
  end
9
9
 
10
+ layout 'pg_layout/centered'
11
+
10
12
  def list
11
13
  @user_accounts = Current.user.user_accounts
12
14
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ # generado con pg_rails
4
+
5
+ module Users
6
+ class AccountsController < UsersController
7
+ include PgEngine::Resource
8
+
9
+ self.clase_modelo = Account
10
+ add_breadcrumb 'Cuentas'
11
+ self.skip_default_breadcrumb = true
12
+
13
+ before_action(only: :index) { authorize Account }
14
+
15
+ before_action :set_instancia_modelo, only: %i[new create show edit update destroy]
16
+
17
+ # private
18
+
19
+ # def atributos_permitidos
20
+ # %i[plan nombre domain subdomain]
21
+ # end
22
+
23
+ # def atributos_para_buscar
24
+ # atributos_permitidos
25
+ # end
26
+
27
+ # def atributos_para_listar
28
+ # atributos_permitidos
29
+ # end
30
+
31
+ # def atributos_para_mostrar
32
+ # atributos_permitidos
33
+ # end
34
+ end
35
+ end
@@ -9,9 +9,8 @@ module PgEngine
9
9
  end
10
10
 
11
11
  def render_turbo_stream_title
12
- title = [breadcrumbs.last&.name, I18n.t('app_name')].compact.join(' - ')
12
+ title = [breadcrumbs.last&.name, ActsAsTenant.current_tenant, I18n.t('app_name')].compact.join(' - ')
13
13
  turbo_stream.update_all 'title', title
14
- # rubocop:enable Rails/SkipsModelValidations
15
14
  end
16
15
  end
17
16
  end
@@ -22,6 +22,7 @@
22
22
  class Account < ApplicationRecord
23
23
  audited
24
24
  include Discard::Model
25
+ include Hashid::Rails
25
26
 
26
27
  has_many :user_accounts
27
28
  has_many :users, through: :user_accounts
@@ -33,6 +34,10 @@ class Account < ApplicationRecord
33
34
 
34
35
  validates :plan, :nombre, presence: true
35
36
 
37
+ ransacker :search do |parent|
38
+ parent.table[:nombre]
39
+ end
40
+
36
41
  def to_s
37
42
  nombre
38
43
  end
@@ -19,7 +19,9 @@ module PgEngine
19
19
  attr_accessor :default_modal
20
20
  end
21
21
 
22
- scope :query, ->(param) { param.present? ? where(id: param) : all }
22
+ # ransacker :search do |parent|
23
+ # parent.table[:nombre]
24
+ # end
23
25
 
24
26
  def self.ransackable_associations(_auth_object = nil)
25
27
  authorizable_ransackable_associations
@@ -99,8 +99,20 @@ class User < ApplicationRecord
99
99
  # true
100
100
  # end
101
101
 
102
+ # DEPRECATED
102
103
  scope :query, ->(param) { where('email ILIKE ?', "%#{param}%") }
103
104
 
105
+ ransacker :search do |parent|
106
+ Arel::Nodes::InfixOperation.new(
107
+ '||',
108
+ Arel::Nodes::InfixOperation.new(
109
+ '||',
110
+ parent.table[:nombre], parent.table[:apellido]
111
+ ),
112
+ parent.table[:email]
113
+ )
114
+ end
115
+
104
116
  def to_s
105
117
  nombre_completo
106
118
  end
@@ -21,6 +21,7 @@
21
21
  # fk_rails_... (user_id => users.id)
22
22
  #
23
23
 
24
+ # FIXME: add column active?
24
25
  class UserAccount < ApplicationRecord
25
26
  audited
26
27
  include Hashid::Rails
@@ -33,7 +34,6 @@ class UserAccount < ApplicationRecord
33
34
 
34
35
  enumerize :profiles, in: {
35
36
  admin: 1,
36
- dueño: 2,
37
- invitado: 3
37
+ editor: 2
38
38
  }, multiple: true
39
39
  end
@@ -28,4 +28,8 @@ class AccountPolicy < ApplicationPolicy
28
28
  # def acceso_total?
29
29
  # user.developer?
30
30
  # end
31
+ def base_access_to_record?
32
+ ActsAsTenant.unscoped? ||
33
+ record.user_accounts.pluck(:user_id).include?(user.id)
34
+ end
31
35
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  div style="max-width: 22em"
4
4
  = pg_form_for(@user_account || object) do |f|
5
- = f.pg_associable :user
6
- = f.pg_associable :account
5
+ = f.pg_associable :user, preload: 10
6
+ = f.pg_associable :account, preload: 5
7
7
  = f.input :profiles
8
8
  .mt-2
9
9
  = f.button :submit
@@ -1,6 +1,20 @@
1
- h1 Switcher
1
+ h1 Cambiar a otra cuenta
2
2
 
3
- ul
3
+ - if @current_tenant_set_by_domain_or_subdomain
4
+ p Estás en el dominio de #{ActsAsTenant.current_tenant} (#{request.host})
5
+ p
6
+ | Para cambiar de cuenta vas a tener que iniciar sesión en el dominio
7
+ |< de Bien o de la cuenta específica a la que quieras cambiar
8
+
9
+ ul.m-auto.list-group style="max-width: 20em"
4
10
  - @user_accounts.each do |user_account|
5
- li = link_to user_account.account, users_account_switch_path(user_account),
6
- 'data-turbo-method': :post
11
+ li.list-group-item
12
+ - if @current_tenant_set_by_domain_or_subdomain
13
+ = user_account.account
14
+ - elsif user_account.account == ActsAsTenant.current_tenant
15
+ b
16
+ = user_account.account
17
+ | (Actual)
18
+ - else
19
+ = link_to user_account.account, users_account_switch_path(user_account),
20
+ 'data-turbo-method': :post
@@ -0,0 +1,13 @@
1
+ h1
2
+ |> Usuarios de la cuenta:
3
+ = @account
4
+
5
+ div style="max-width: 30em"
6
+ table.table.table-sm
7
+ tr
8
+ th Nombre
9
+ th Roles
10
+ - @account.user_accounts.each do |user_account|
11
+ tr
12
+ td = user_account.user
13
+ td = user_account.profiles.texts.join(', ')
@@ -28,6 +28,9 @@ Rails.application.routes.draw do
28
28
  get '', action: 'list', as: 'account_switcher'
29
29
  post ':user_account_id', action: 'switch', as: 'account_switch'
30
30
  end
31
+
32
+ pg_resource(:accounts, path: 'cuentas', only: [:show])
33
+ # get 'account', to: 'accounts#show'
31
34
  end
32
35
 
33
36
  get '/u', to: 'users#home', as: :users_root
@@ -1,15 +1,17 @@
1
- ActsAsTenant.without_tenant do
2
- DatabaseCleaner.clean_with(:truncation, except: %w(ar_internal_metadata))
1
+ DatabaseCleaner.clean_with(:truncation, except: %w(ar_internal_metadata))
3
2
 
4
3
 
5
- bien = FactoryBot.create :account, nombre: 'Bien', subdomain: 'bien'
6
- uno = FactoryBot.create :user, email: 'mrosso10@gmail.com', nombre: 'Martín', apellido: 'Rosso', password: 'admin123',
7
- confirmed_at: Time.now, developer: true, orphan: true
8
- bien.users << uno
4
+ bien = FactoryBot.create(:account, nombre: 'Bien', subdomain: 'bien')
5
+ rosso = FactoryBot.create(:user, email: 'mrosso10@gmail.com', nombre: 'Martín', apellido: 'Rosso', password: 'admin123',
6
+ confirmed_at: Time.now, developer: true, orphan: true)
9
7
 
10
- mal = FactoryBot.create :account, nombre: 'Mal', subdomain: 'mal'
11
- otro = FactoryBot.create :user, email: 'mal@gmail.com', nombre: 'Mal', apellido: 'Mal', password: 'admin123',
12
- confirmed_at: Time.now, developer: true, orphan: true
8
+ bien.user_accounts.create(user: rosso, profiles: [:admin])
13
9
 
14
- mal.users << otro
15
- end
10
+ racionalismo = FactoryBot.create(:account, nombre: 'Racionalismo', subdomain: 'racionalismo')
11
+ baruch = FactoryBot.create(:user, email: 'baruch@bien.com', nombre: 'Baruch', apellido: 'Spinoza', password: 'admin123',
12
+ confirmed_at: Time.now, orphan: true)
13
+ rené = FactoryBot.create(:user, email: 'rene@bien.com', nombre: 'René', apellido: 'Descartes', password: 'admin123',
14
+ confirmed_at: Time.now, orphan: true)
15
+
16
+ racionalismo.user_accounts.create(user: baruch, profiles: [:admin])
17
+ racionalismo.user_accounts.create(user: rené, profiles: [:editor])
@@ -56,4 +56,11 @@ RSpec.describe User do
56
56
  expect(user).not_to be_persisted
57
57
  end
58
58
  end
59
+
60
+ describe 'search ransacker' do
61
+ it 'searchs' do
62
+ results = described_class.ransack(search_cont: user.nombre).result.to_a
63
+ expect(results).to eq [user]
64
+ end
65
+ end
59
66
  end
@@ -0,0 +1,22 @@
1
+ require 'rails_helper'
2
+
3
+ describe 'Users::AccountsController' do
4
+ let(:account) { ActsAsTenant.current_tenant }
5
+ let(:user) { create :user }
6
+
7
+ before do
8
+ sign_in user
9
+ end
10
+
11
+ it 'shows the owned account' do
12
+ get "/u/cuentas/#{account.to_param}"
13
+ expect(response).to have_http_status(:ok)
14
+ end
15
+
16
+ it 'denies foreign account' do
17
+ other_account = create :account
18
+ get "/u/cuentas/#{other_account.to_param}"
19
+ expect(response).to have_http_status(:redirect)
20
+ expect(flash[:alert]).to eq 'Acceso no autorizado'
21
+ end
22
+ end
@@ -30,15 +30,23 @@ describe 'redirection' do
30
30
  let!(:other_account) { create :account }
31
31
  let!(:other_user_account) { logged_user.user_accounts.create(account: other_account) }
32
32
 
33
+ before do
34
+ third_account = create :account
35
+ logged_user.user_accounts.create(account: third_account)
36
+ end
37
+
33
38
  it 'redirects to switcher' do
34
39
  get '/u/cosas'
35
40
  expect(response).to redirect_to users_account_switcher_path
36
41
  follow_redirect!
37
- expect(response.body).to include 'Switcher'
42
+ expect(response.body).to include 'Cambiar a otra cuenta'
38
43
  post "/u/switcher/#{other_user_account.to_param}"
39
44
  expect(response).to redirect_to(root_path)
40
45
  follow_redirect!
46
+ get '/u/cosas'
47
+ expect(response).to have_http_status(:ok)
41
48
  expect(response.body).to include other_account.to_s
49
+ expect(response.body).to include 'No hay cosos que mostrar'
42
50
  other_user_account.destroy!
43
51
  get '/'
44
52
  expect(response).to redirect_to users_account_switcher_path
@@ -35,7 +35,7 @@ describe 'Tenants' do
35
35
  it 'shows the switcher' do
36
36
  visitar
37
37
 
38
- expect(page).to have_text 'Switcher'
38
+ expect(page).to have_text 'Cambiar a otra cuenta'
39
39
  end
40
40
 
41
41
  it 'switches to account' do
@@ -5,13 +5,20 @@
5
5
  </div>
6
6
  <% if user_signed_in? %>
7
7
  <span class="d-inline-block px-3 text-end text-light"><%= Current.user %></span>
8
- <%= link_to users_account_switcher_path do %>
9
- <% if Rails.env.development? %>
10
- <span class="d-block px-3 text-secondary">Tenant: <%= ActsAsTenant.current_tenant || 'Global' %></span>
8
+ <span class="d-block px-3 text-secondary">
9
+ <% if Current.user.user_accounts.count > 1 %>
10
+ <%= link_to ActsAsTenant.current_tenant, [:users, ActsAsTenant.current_tenant] if ActsAsTenant.current_tenant.present? %>
11
+ <%= link_to users_account_switcher_path do %>
12
+ <% if ActsAsTenant.current_tenant.present? %>
13
+ (Cambiar)
14
+ <% else %>
15
+ Elegir cuenta
16
+ <% end %>
17
+ <% end %>
11
18
  <% else %>
12
- <span class="d-block px-3 text-secondary"><%= ActsAsTenant.current_tenant %></span>
19
+ <%= link_to ActsAsTenant.current_tenant, [:users, ActsAsTenant.current_tenant] if ActsAsTenant.current_tenant.present? %>
13
20
  <% end %>
14
- <% end %>
21
+ </span>
15
22
  <hr>
16
23
  <% end %>
17
24
  <ul class="list-unstyled ps-0">
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PgRails
4
- VERSION = '7.5.2'
4
+ VERSION = '7.5.3'
5
5
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # FIXME: reemplazar por requests spec
3
4
  # generado con pg_rails
4
5
 
5
6
  require 'rails_helper'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.5.2
4
+ version: 7.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martín Rosso
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-11 00:00:00.000000000 Z
11
+ date: 2024-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -689,6 +689,7 @@ files:
689
689
  - pg_engine/app/controllers/public/mensaje_contactos_controller.rb
690
690
  - pg_engine/app/controllers/public/webhooks_controller.rb
691
691
  - pg_engine/app/controllers/users/account_switcher_controller.rb
692
+ - pg_engine/app/controllers/users/accounts_controller.rb
692
693
  - pg_engine/app/controllers/users/confirmations_controller.rb
693
694
  - pg_engine/app/controllers/users/date_jumper_controller.rb
694
695
  - pg_engine/app/controllers/users/notifications_controller.rb
@@ -777,6 +778,7 @@ files:
777
778
  - pg_engine/app/views/public/mensaje_contactos/_gracias.html.slim
778
779
  - pg_engine/app/views/public/mensaje_contactos/new.html.slim
779
780
  - pg_engine/app/views/users/account_switcher/list.html.slim
781
+ - pg_engine/app/views/users/accounts/show.html.slim
780
782
  - pg_engine/config/initializers/action_mailer.rb
781
783
  - pg_engine/config/initializers/active_admin.rb
782
784
  - pg_engine/config/initializers/acts_as_tenant.rb
@@ -876,6 +878,7 @@ files:
876
878
  - pg_engine/spec/pg_engine/pdf_preview_generator_spec.rb
877
879
  - pg_engine/spec/requests/admin/eventos_spec.rb
878
880
  - pg_engine/spec/requests/base_controller_requests_spec.rb
881
+ - pg_engine/spec/requests/users/accounts_spec.rb
879
882
  - pg_engine/spec/requests/users/base_controller_spec.rb
880
883
  - pg_engine/spec/requests/users/date_jumper_spec.rb
881
884
  - pg_engine/spec/requests/users/switcher_spec.rb