Skip to content

Commit

Permalink
Merge 71c6ec8 into cb6aeb9
Browse files Browse the repository at this point in the history
  • Loading branch information
cjcolvar committed Feb 5, 2014
2 parents cb6aeb9 + 71c6ec8 commit 5ff0c3d
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 41 deletions.
22 changes: 22 additions & 0 deletions app/views/catalog/_facet_group.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<% # main container for facets/limits menu -%>
<% if has_facet_values? facet_field_names(groupname) %>
<div id="facets<%= "-#{groupname}" unless groupname.nil? %>" class="facets sidenav">
<div class="top-panel-heading panel-heading">
<button type="button" class="facets-toggle" data-toggle="collapse" data-target="#facet-panel<%= "-#{groupname}" unless groupname.nil? %>-collapse">
<span class="sr-only">Toggle facets</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<h4>
<%= groupname.blank? ? t('blacklight.search.facets.title') : t("blacklight.search.facets-#{groupname}.title") %>
</h4>
</div>
<div id="facet-panel<%= "-#{groupname}" unless groupname.nil? %>-collapse" class="collapse panel-group">
<%= render_facet_partials facet_field_names(groupname) %>
</div>
</div>
<% end %>
25 changes: 3 additions & 22 deletions app/views/catalog/_facets.html.erb
Original file line number Diff line number Diff line change
@@ -1,22 +1,3 @@
<% # main container for facets/limits menu -%>
<% if has_facet_values? %>
<div id="facets" class="facets sidenav">
<div class="top-panel-heading panel-heading">
<button type="button" class="facets-toggle" data-toggle="collapse" data-target="#facet-panel-collapse">
<span class="sr-only">Toggle facets</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<h4>
<%= t('blacklight.search.facets.title') %>
</h4>
</div>
<div id="facet-panel-collapse" class="collapse panel-group">
<%= render_facet_partials %>
</div>
</div>
<% end %>
<% facet_group_names.each do |groupname| %>
<%= render partial: "facet_group", locals: {groupname: groupname} %>
<% end %>
8 changes: 6 additions & 2 deletions lib/blacklight/facet.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,12 @@ def facets_from_request(fields = facet_field_names)
fields.map { |solr_field| facet_by_field_name(solr_field) }.compact
end

def facet_field_names
blacklight_config.facet_fields.keys
def facet_field_names group=nil
blacklight_config.facet_fields.select {|facet,opts| group == opts[:group]}.keys
end

def facet_group_names
blacklight_config.facet_fields.map {|facet,opts| opts[:group]}.uniq
end

def facet_configuration_for_field(field)
Expand Down
67 changes: 50 additions & 17 deletions spec/views/catalog/_facets.html.erb_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,34 +5,67 @@
@mock_config = Blacklight::Configuration.new
view.stub(:blacklight_config => @mock_config)
end
it "should not have a header if no facets are displayed" do
view.stub(:render_facet_partials => '')
render
expect(rendered).to_not have_selector('h4')
end

it "should have a header" do
describe "facet groups" do
describe "default facet group" do
it "should not have a header if no facets are displayed" do
view.stub(:render_facet_partials => '')
render
expect(rendered).to_not have_selector('h4')
end

@mock_field_1 = double(:field => 'facet_field_1',
:label => 'label')
@mock_display_facet_1 = double(:name => 'facet_field_1', :items => [Blacklight::SolrResponse::Facets::FacetItem.new(:value => 'Value', :hits => 1234)])
view.stub(:facet_field_names => [:facet_field_1],
it "should have a header" do

@mock_field_1 = double(:field => 'facet_field_1',
:label => 'label', :group => nil)
@mock_display_facet_1 = double(:name => 'facet_field_1', :items => [Blacklight::SolrResponse::Facets::FacetItem.new(:value => 'Value', :hits => 1234)])
view.stub(:facet_group_names => [nil], :facet_field_names => [:facet_field_1],
:facet_limit_for => 10 )

@response = double()
@response.stub(:facet_by_field_name).with(:facet_field_1) { @mock_display_facet_1 }
@response = double()
@response.stub(:facet_by_field_name).with(:facet_field_1) { @mock_display_facet_1 }

view.stub(:render_facet_partials => '')
render
expect(rendered).to have_selector('h4')
end
end

view.stub(:render_facet_partials => '')
render
expect(rendered).to have_selector('h4')
describe "named facet group" do
it "should not have a header if no facets are displayed" do
view.stub(:render_facet_partials => '')
render
expect(rendered).to_not have_selector('h4')
expect(rendered).to_not have_selector('#facets-group_1')
end

it "should have a header" do

@mock_field_1 = double(:field => 'facet_field_1',
:label => 'label', :group => 'group_1')
@mock_display_facet_1 = double(:name => 'facet_field_1', :items => [Blacklight::SolrResponse::Facets::FacetItem.new(:value => 'Value', :hits => 1234)])
view.stub(:facet_group_names => [nil, 'group_1'],
:facet_limit_for => 10 )
view.stub(:facet_field_names).with('group_1').and_return([:facet_field_1])

@response = double()
@response.stub(:facet_by_field_name).with(:facet_field_1) { @mock_display_facet_1 }

view.stub(:render_facet_partials => '')
render
expect(rendered).to have_selector('h4')
expect(rendered).to have_selector('#facets-group_1')
end

end
end

describe "facet display" do
before do
@mock_field_1 = double(:field => 'facet_field_1',
:label => 'label')
:label => 'label', :group => nil)
@mock_display_facet_1 = double(:name => 'facet_field_1', :items => [Blacklight::SolrResponse::Facets::FacetItem.new(:value => 'Value', :hits => 1234)])
view.stub(:facet_field_names => [:facet_field_1],
view.stub(:facet_group_names => [nil], :facet_field_names => [:facet_field_1],
:facet_limit_for => 10 )

@response = double()
Expand Down

0 comments on commit 5ff0c3d

Please sign in to comment.