diff options
| author | Zog | 2017-12-15 17:54:31 +0100 | 
|---|---|---|
| committer | Zog | 2017-12-19 17:02:37 +0100 | 
| commit | 926c0a338e86c7f0e1f651ba507e8120fb26ad17 (patch) | |
| tree | cec322275e5c74b208bc15ddfdc698805db88f4e /spec/helpers | |
| parent | 2736ff5e010586266176a9a0fb0ac8dc6e227f63 (diff) | |
| download | chouette-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.rb | 81 | 
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 | 
