summaryrefslogtreecommitdiff
path: root/test/models/filter_test.rb
blob: d3febf3052b93943c5e2f4d2587cee89dfbdfca1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# frozen_string_literal: true

# == Schema Information
#
# Table name: filters
#
#  id                    :integer          not null, primary key
#  description           :string           not null
#  hidden_complex_str    :string
#  hidden_tag_ids        :integer          default([]), not null, is an Array
#  name                  :string           not null
#  public                :boolean          default(FALSE), not null
#  spoilered_complex_str :string
#  spoilered_tag_ids     :integer          default([]), not null, is an Array
#  system                :boolean          default(FALSE), not null
#  user_count            :integer          default(0), not null
#  created_at            :datetime         not null
#  updated_at            :datetime         not null
#  user_id               :integer
#
# Indexes
#
#  index_filters_on_user_id  (user_id)
#
# Foreign Keys
#
#  fk_rails_...  (user_id => users.id) ON DELETE => cascade ON UPDATE => cascade
#
require 'test_helper'

class FilterTest < ActiveSupport::TestCase
  setup do
    @filter = build(:filter, name: 'test')
  end

  test 'should be valid' do
    assert @filter.valid?
  end

  test '#on_lost_user should decrement user count' do
    assert_difference('@filter.user_count', -1) do
      @filter.save!
      @filter.on_lost_user
      @filter.reload
    end
  end

  test '#on_gained_user should increment user count' do
    assert_difference('@filter.user_count') do
      @filter.save!
      @filter.on_gained_user
      @filter.reload
    end
  end

  test '#spoilered_tag_list should return comma-delimited tag names' do
    @tag1 = create(:safe)
    @tag2 = create(:suggestive)
    @filter.spoilered_tags = [@tag1, @tag2]
    assert_equal [@tag1.name, @tag2.name].join(', '), @filter.spoilered_tag_list
  end

  test '#spoilered_tag_list= should work' do
    @tag1 = create(:safe)
    @tag2 = create(:suggestive)
    @filter.spoilered_tag_list = @tag1.name
    assert @filter.spoilered_tags - [@tag1] == []

    @filter.spoilered_tag_list = [@tag1.name, @tag2.name].join(', ')
    assert @filter.spoilered_tags - [@tag1, @tag2] == [] # not testing order

    @filter.spoilered_tag_list = ''
    assert_empty @filter.spoilered_tags.to_a
  end

  test '#hidden_tag_list should return comma-delimited tag names' do
    @tag1 = create(:safe)
    @tag2 = create(:suggestive)
    @filter.hidden_tags = [@tag1, @tag2]
    assert_equal [@tag1.name, @tag2.name].join(', '), @filter.hidden_tag_list
  end

  test '#hidden_tag_list= should work' do
    @tag1 = create(:safe)
    @tag2 = create(:suggestive)
    @filter.hidden_tag_list = @tag1.name
    assert @filter.hidden_tags - [@tag1] == []

    @filter.hidden_tag_list = [@tag1.name, @tag2.name].join(', ')
    assert @filter.hidden_tags - [@tag1, @tag2] == [] # not testing order

    @filter.hidden_tag_list = ''
    assert_empty @filter.hidden_tags.to_a
  end

  test 'indexing should work' do
    assert_not_nil @filter.as_indexed_json
    # nothing to test
  end
end