klastera 1.5.5.1 → 1.5.5.2
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 +4 -4
- data/MIT-LICENSE +0 -0
- data/README.rdoc +0 -0
- data/Rakefile +0 -0
- data/app/assets/javascripts/klastera/application.js +0 -0
- data/app/assets/javascripts/klastera/clusters.js +0 -0
- data/app/assets/stylesheets/klastera/clusters.scss +0 -0
- data/app/controllers/klastera/application_controller.rb +0 -0
- data/app/controllers/klastera/clusters_controller.rb +0 -0
- data/app/helpers/klastera/application_helper.rb +0 -0
- data/app/models/klastera/cluster.rb +0 -0
- data/app/models/klastera/cluster_entity.rb +0 -0
- data/app/models/klastera/cluster_filter.rb +0 -0
- data/app/models/klastera/cluster_user.rb +0 -0
- data/app/models/klastera/concerns/cluster.rb +0 -0
- data/app/models/klastera/concerns/cluster_entity.rb +0 -0
- data/app/models/klastera/concerns/cluster_filter.rb +0 -0
- data/app/models/klastera/concerns/cluster_user.rb +0 -0
- data/app/models/klastera/concerns/clusterizable.rb +5 -1
- data/app/models/klastera/concerns/organization.rb +0 -0
- data/app/models/klastera/concerns/transfer.rb +0 -0
- data/app/models/klastera/concerns/user.rb +0 -0
- data/app/models/klastera/transfer.rb +0 -0
- data/app/views/klastera/clusters/_filter.html.erb +0 -0
- data/app/views/klastera/clusters/_form.html.erb +0 -0
- data/app/views/klastera/clusters/_form_transfer.html.erb +0 -0
- data/app/views/klastera/clusters/_table.html.erb +0 -0
- data/app/views/klastera/clusters/create.js.erb +0 -0
- data/app/views/klastera/clusters/destroy.js.erb +0 -0
- data/app/views/klastera/clusters/edit.html.erb +0 -0
- data/app/views/klastera/clusters/index.html.erb +0 -0
- data/app/views/klastera/clusters/new.html.erb +0 -0
- data/app/views/klastera/clusters/transfer.html.erb +0 -0
- data/app/views/klastera/clusters/update.js.erb +0 -0
- data/app/views/layouts/klastera/_cluster_entity_fields.html.erb +0 -0
- data/app/views/layouts/klastera/_cluster_filter.html.erb +0 -0
- data/app/views/layouts/klastera/_cluster_role.html.erb +0 -0
- data/app/views/layouts/klastera/_cluster_selector.html.erb +0 -0
- data/app/views/layouts/klastera/_cluster_user_fields.html.erb +0 -0
- data/app/views/layouts/klastera/_nested_cluster_entity.html.erb +0 -0
- data/app/views/layouts/klastera/_nested_cluster_user.html.erb +0 -0
- data/app/views/layouts/klastera/_options.html.erb +0 -0
- data/config/locales/es.yml +0 -0
- data/config/routes.rb +0 -0
- data/db/migrate/20200324203929_create_klastera_clusters.rb +0 -0
- data/db/migrate/20200326111219_add_cluster_options_to_organizations.rb +0 -0
- data/db/migrate/20200330010551_create_klastera_cluster_users.rb +0 -0
- data/db/migrate/20200330221601_add_order_field_to_clusters.rb +0 -0
- data/db/migrate/20200518142609_create_klastera_cluster_entities.rb +0 -0
- data/db/migrate/20200908180057_add_cluster_config_to_organization.rb +0 -0
- data/db/migrate/20220602222332_add_unique_index_to_cluster_entities.rb +0 -0
- data/lib/klastera/engine.rb +0 -0
- data/lib/klastera/version.rb +1 -1
- data/lib/klastera.rb +0 -0
- data/lib/tasks/klastera_tasks.rake +0 -0
- data/test/controllers/klastera/clusters_controller_test.rb +0 -0
- data/test/fixtures/klastera/cluster_users.yml +0 -0
- data/test/fixtures/klastera/clusters.yml +0 -0
- data/test/integration/navigation_test.rb +0 -0
- data/test/klastera_test.rb +0 -0
- data/test/models/klastera/cluster_test.rb +0 -0
- data/test/models/klastera/cluster_user_test.rb +0 -0
- data/test/models/klastera/clusterizable_nested_attributes_test.rb +43 -0
- data/test/test_helper.rb +0 -0
- metadata +10 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7f593dccae852483eb2b18e8254ee94c1e44804bcb59780cd26a8987ef383443
|
|
4
|
+
data.tar.gz: f28976b48568045dfe38b3feb2915de5e87b079279b0a31e481f48741fdbd0a0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a2b1d549df310a5bf569316f5e9de36f66c9be7b5d052108d85aa1345f6d05527a536494ca39ea37e2f19f663e8973dd5d62a107ea101168f63d5a2ace6566b4
|
|
7
|
+
data.tar.gz: 1353ffb7147a62d4e35cf28a0ccafa2e976460e96db0dc566cc48ed1db0e16e2ea315d65fcd8b12c2642cea76f53e3a2b2a8c10d48000f08efb93f72f4f9c749
|
data/MIT-LICENSE
CHANGED
|
File without changes
|
data/README.rdoc
CHANGED
|
File without changes
|
data/Rakefile
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -7,7 +7,11 @@ module Klastera::Concerns::Clusterizable
|
|
|
7
7
|
belongs_to :cluster
|
|
8
8
|
|
|
9
9
|
has_many :cluster_entities, as: :entity, class_name: "Klastera::ClusterEntity"
|
|
10
|
-
|
|
10
|
+
# reject_if exige cluster_id presente. Con :all_blank, una fila EXISTENTE (con id) cuyo select
|
|
11
|
+
# se deja en blanco (include_blank del formulario) no se descarta y se guarda con cluster_id=NULL:
|
|
12
|
+
# queda un cluster_entity huérfano, invisible en el formulario, que cuenta en las validaciones y
|
|
13
|
+
# bloquea el guardado. Para quitar una zona existente se usa _destroy, no vaciar el select.
|
|
14
|
+
accepts_nested_attributes_for :cluster_entities, reject_if: ->(attrs) { attrs[:cluster_id].blank? }, allow_destroy: true
|
|
11
15
|
|
|
12
16
|
validates :cluster_id, presence: true, if: -> { cluster_id.present? && organization.present? && organization.required_suborganization_mode? }
|
|
13
17
|
validate :at_least_one_cluster_entity, if: -> { organization.present? && organization.required_suborganization_mode? }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/config/locales/es.yml
CHANGED
|
File without changes
|
data/config/routes.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/lib/klastera/engine.rb
CHANGED
|
File without changes
|
data/lib/klastera/version.rb
CHANGED
data/lib/klastera.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/test/klastera_test.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
# Estos tests no corren dentro de este repo: no existe test/dummy y usan modelos de Llegando
|
|
4
|
+
# (Profile, Organization, ::Cluster). Para correrlos hay que copiarlos a llegando-neo con la gema
|
|
5
|
+
# apuntando a esta rama.
|
|
6
|
+
#
|
|
7
|
+
# El test que prueba el fix es "no vacia el cluster_id de una fila existente": con :all_blank
|
|
8
|
+
# falla (la fila queda con cluster_id NULL). Los otros dos pasan igual en main y protegen que
|
|
9
|
+
# el cambio no rompa el descarte de filas nuevas vacias ni agregar/destruir zonas.
|
|
10
|
+
module Klastera
|
|
11
|
+
class ClusterizableNestedAttributesTest < ActiveSupport::TestCase
|
|
12
|
+
def build_entity_with_cluster
|
|
13
|
+
entity = Profile.create!(organization: Organization.first, nid: SecureRandom.hex(4))
|
|
14
|
+
cluster = ::Cluster.create!(organization: entity.organization, name: "c-#{SecureRandom.hex(2)}")
|
|
15
|
+
ce = Klastera::ClusterEntity.create!(entity: entity, cluster_id: cluster.id)
|
|
16
|
+
[entity.reload, ce, cluster]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
test "descarta una fila nueva con cluster_id vacio" do
|
|
20
|
+
entity, = build_entity_with_cluster
|
|
21
|
+
entity.assign_attributes(cluster_entities_attributes: { "0" => { "cluster_id" => "", "_destroy" => "false" } })
|
|
22
|
+
assert_equal 1, entity.cluster_entities.size
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test "no vacia el cluster_id de una fila existente" do
|
|
26
|
+
entity, ce, cluster = build_entity_with_cluster
|
|
27
|
+
entity.assign_attributes(cluster_entities_attributes: { "0" => { "id" => ce.id, "cluster_id" => "", "_destroy" => "false" } })
|
|
28
|
+
entity.save!
|
|
29
|
+
assert_equal cluster.id, ce.reload.cluster_id
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test "sigue permitiendo agregar y destruir zonas" do
|
|
33
|
+
entity, ce, = build_entity_with_cluster
|
|
34
|
+
otro = ::Cluster.create!(organization: entity.organization, name: "otro")
|
|
35
|
+
entity.assign_attributes(cluster_entities_attributes: {
|
|
36
|
+
"0" => { "id" => ce.id, "_destroy" => "1" },
|
|
37
|
+
"1" => { "cluster_id" => otro.id.to_s, "_destroy" => "false" }
|
|
38
|
+
})
|
|
39
|
+
assert entity.cluster_entities.any?(&:marked_for_destruction?)
|
|
40
|
+
assert entity.cluster_entities.any? { |c| c.new_record? && c.cluster_id == otro.id }
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
data/test/test_helper.rb
CHANGED
|
File without changes
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: klastera
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.5.5.
|
|
4
|
+
version: 1.5.5.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Gino Barahona
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-11-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -108,6 +108,7 @@ files:
|
|
|
108
108
|
- test/klastera_test.rb
|
|
109
109
|
- test/models/klastera/cluster_test.rb
|
|
110
110
|
- test/models/klastera/cluster_user_test.rb
|
|
111
|
+
- test/models/klastera/clusterizable_nested_attributes_test.rb
|
|
111
112
|
- test/test_helper.rb
|
|
112
113
|
homepage: https://github.com/ginosx/klastera
|
|
113
114
|
licenses:
|
|
@@ -128,16 +129,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
128
129
|
- !ruby/object:Gem::Version
|
|
129
130
|
version: '0'
|
|
130
131
|
requirements: []
|
|
131
|
-
rubygems_version: 3.
|
|
132
|
+
rubygems_version: 3.1.6
|
|
132
133
|
signing_key:
|
|
133
134
|
specification_version: 4
|
|
134
135
|
summary: Clusterization Engine
|
|
135
136
|
test_files:
|
|
136
|
-
- test/controllers/klastera/clusters_controller_test.rb
|
|
137
|
-
- test/fixtures/klastera/cluster_users.yml
|
|
138
|
-
- test/fixtures/klastera/clusters.yml
|
|
139
137
|
- test/integration/navigation_test.rb
|
|
140
|
-
- test/
|
|
141
|
-
- test/models/klastera/cluster_test.rb
|
|
138
|
+
- test/models/klastera/clusterizable_nested_attributes_test.rb
|
|
142
139
|
- test/models/klastera/cluster_user_test.rb
|
|
140
|
+
- test/models/klastera/cluster_test.rb
|
|
141
|
+
- test/klastera_test.rb
|
|
142
|
+
- test/fixtures/klastera/clusters.yml
|
|
143
|
+
- test/fixtures/klastera/cluster_users.yml
|
|
143
144
|
- test/test_helper.rb
|
|
145
|
+
- test/controllers/klastera/clusters_controller_test.rb
|