aboutsummaryrefslogtreecommitdiffstats
path: root/spec/helpers
diff options
context:
space:
mode:
authorZog2017-12-15 17:54:31 +0100
committerZog2017-12-19 17:02:37 +0100
commit926c0a338e86c7f0e1f651ba507e8120fb26ad17 (patch)
treecec322275e5c74b208bc15ddfdc698805db88f4e /spec/helpers
parent2736ff5e010586266176a9a0fb0ac8dc6e227f63 (diff)
downloadchouette-core-926c0a338e86c7f0e1f651ba507e8120fb26ad17.tar.bz2
Refs: #5291@1h; Update TableBuilderHelper
Update TableBuilderHelper to allow the `selectable` param to be a lambda, thus allowing us to have row-based granularity.
Diffstat (limited to 'spec/helpers')
-rw-r--r--spec/helpers/table_builder_helper_spec.rb81
1 files changed, 81 insertions, 0 deletions
diff --git a/spec/helpers/table_builder_helper_spec.rb b/spec/helpers/table_builder_helper_spec.rb
index 3b3504c60..83b746d4b 100644
--- a/spec/helpers/table_builder_helper_spec.rb
+++ b/spec/helpers/table_builder_helper_spec.rb
@@ -381,5 +381,86 @@ describe TableBuilderHelper, type: :helper do
expect(beautified_html).to eq(expected.chomp)
end
+
+ context "on a single row" do
+ let(:referential){ build_stubbed :referential }
+ let(:other_referential){ build_stubbed :referential }
+ let(:user_context){
+ UserContext.new(
+ build_stubbed(
+ :user,
+ organisation: referential.organisation,
+ permissions: [
+ 'referentials.create',
+ 'referentials.update',
+ 'referentials.destroy',
+ ]
+ ),
+ referential: referential
+ )
+ }
+ let(:columns){
+ [
+ TableBuilderHelper::Column.new(
+ key: :name,
+ attribute: 'name'
+ ),
+ ]
+ }
+ let(:item){ referential.decorate }
+ let(:other_item){ other_referential.decorate }
+ let(:selectable){ false }
+ let(:links){ [:show] }
+ let(:overhead){ [] }
+ let(:model_name){ "referential" }
+ let(:other_tr){ helper.send(:tr, other_item, columns, selectable, links, overhead, model_name) }
+ let(:items){ [item, other_item] }
+
+ before(:each){
+ allow(helper).to receive(:current_user).and_return(user_context)
+ }
+
+ context "with all rows non-selectable" do
+ let(:selectable){ false }
+ it "sets all rows as non selectable" do
+ items.each do |i|
+ tr = helper.send(:tr, i, columns, selectable, links, overhead, model_name)
+ klass = "#{TableBuilderHelper.item_row_class_name([referential])}-#{i.id}"
+ selector = "tr.#{klass} [type=checkbox]"
+ expect(tr).to_not have_selector selector
+ end
+ end
+ end
+
+ context "with all rows selectable" do
+ let(:selectable){ true }
+ it "adds a checkbox in all rows" do
+ items.each do |i|
+ tr = helper.send(:tr, i, columns, selectable, links, overhead, model_name)
+ klass = "#{TableBuilderHelper.item_row_class_name([referential])}-#{i.id}"
+ selector = "tr.#{klass} [type=checkbox]"
+ expect(tr).to have_selector selector
+ end
+ end
+ end
+
+ context "with THIS row non selectable" do
+ let(:selectable){ ->(i){ i.id != item.id } }
+ it "adds a checkbox in all rows" do
+ items.each do |i|
+ tr = helper.send(:tr, i, columns, selectable, links, overhead, model_name)
+ klass = "#{TableBuilderHelper.item_row_class_name([referential])}-#{i.id}"
+ selector = "tr.#{klass} [type=checkbox]"
+ expect(tr).to have_selector selector
+ end
+ end
+ it "disables this rows checkbox" do
+ tr = helper.send(:tr, item, columns, selectable, links, overhead, model_name)
+ klass = "#{TableBuilderHelper.item_row_class_name([referential])}-#{item.id}"
+ selector = "tr.#{klass} [type=checkbox][disabled]"
+ expect(tr).to have_selector selector
+ end
+ end
+ end
end
end