Skip to content

Commit 50e8097

Browse files
committed
Don't store invalid styles in the session. Faster cache
1 parent 62c54e0 commit 50e8097

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

app/controllers/citations_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ def fetch
1111
private
1212

1313
def set_citation_style
14-
session[:citation_style] = params[:style] if params[:style].present?
14+
session[:citation_style] = params[:style] if params[:style].present? && Seek::Citations.valid_style?(params[:style])
1515
end
1616
end

lib/seek/citations.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,7 @@ def self.style_pairs
2929
end
3030

3131
def self.valid_styles
32-
Rails.cache.fetch("citation-styles-set") do
33-
Set.new(style_pairs.map(&:last))
34-
end
32+
@valid_styles ||= Set.new(style_pairs.map(&:last))
3533
end
3634

3735
def self.doi_to_csl(doi)
@@ -56,10 +54,14 @@ def self.style_dictionary_path
5654
Rails.root.join('config/default_data/csl_styles.yml')
5755
end
5856

57+
def self.valid_style?(style)
58+
valid_styles.include?(style)
59+
end
60+
5961
private
6062

6163
def self.validate_style(style)
62-
raise Seek::Citations::InvalidStyleException unless valid_styles.include?(style)
64+
raise Seek::Citations::InvalidStyleException unless valid_style?(style)
6365
end
6466
end
6567
end

test/integration/citation_style_test.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ def setup
2323

2424
new_style = 'journal-of-infectious-diseases'
2525

26+
assert_nil session[:citation_style]
2627
get citation_path(@doi, style: new_style, format: :js), xhr: true
28+
assert_equal new_style, session[:citation_style]
2729

2830
get model_path(@model)
2931
assert_select '#citation' do
@@ -35,6 +37,12 @@ def setup
3537
end
3638
end
3739

40+
test 'does not remember style if invalid style chosen' do
41+
assert_nil session[:citation_style]
42+
get citation_path(@doi, style: 'ghdfgkhdfjkghdkj', format: :js), xhr: true
43+
assert_nil session[:citation_style]
44+
end
45+
3846
test 'handles invalid style selection' do
3947
doi_citation_mock
4048

0 commit comments

Comments
 (0)