You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
2.0 KiB

  1. # frozen_string_literal: true
  2. require 'rails_helper'
  3. RSpec.describe CustomEmojiFilter do
  4. describe '#results' do
  5. let!(:custom_emoji_0) { Fabricate(:custom_emoji, domain: 'a') }
  6. let!(:custom_emoji_1) { Fabricate(:custom_emoji, domain: 'b') }
  7. let!(:custom_emoji_2) { Fabricate(:custom_emoji, domain: nil, shortcode: 'hoge') }
  8. subject { described_class.new(params).results }
  9. context 'params have values' do
  10. context 'local' do
  11. let(:params) { { local: true } }
  12. it 'returns ActiveRecord::Relation' do
  13. expect(subject).to be_kind_of(ActiveRecord::Relation)
  14. expect(subject).to match_array([custom_emoji_2])
  15. end
  16. end
  17. context 'remote' do
  18. let(:params) { { remote: true } }
  19. it 'returns ActiveRecord::Relation' do
  20. expect(subject).to be_kind_of(ActiveRecord::Relation)
  21. expect(subject).to match_array([custom_emoji_0, custom_emoji_1])
  22. end
  23. end
  24. context 'by_domain' do
  25. let(:params) { { by_domain: 'a' } }
  26. it 'returns ActiveRecord::Relation' do
  27. expect(subject).to be_kind_of(ActiveRecord::Relation)
  28. expect(subject).to match_array([custom_emoji_0])
  29. end
  30. end
  31. context 'shortcode' do
  32. let(:params) { { shortcode: 'hoge' } }
  33. it 'returns ActiveRecord::Relation' do
  34. expect(subject).to be_kind_of(ActiveRecord::Relation)
  35. expect(subject).to match_array([custom_emoji_2])
  36. end
  37. end
  38. context 'else' do
  39. let(:params) { { else: 'else' } }
  40. it 'raises RuntimeError' do
  41. expect do
  42. subject
  43. end.to raise_error(RuntimeError, /Unknown filter: else/)
  44. end
  45. end
  46. end
  47. context 'params without value' do
  48. let(:params) { { hoge: nil } }
  49. it 'returns ActiveRecord::Relation' do
  50. expect(subject).to be_kind_of(ActiveRecord::Relation)
  51. expect(subject).to match_array([custom_emoji_0, custom_emoji_1, custom_emoji_2])
  52. end
  53. end
  54. end
  55. end