Skip to content

Commit e69a3c7

Browse files
committed
down to 8 errors in tests
1 parent 7f09243 commit e69a3c7

File tree

1 file changed

+15
-16
lines changed

1 file changed

+15
-16
lines changed

lib/flag_shih_tzu.rb

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ def has_flags(flag_hash, options = {})
1414

1515
class_inheritable_reader :flag_column
1616
write_inheritable_attribute(:flag_column, options[:column])
17-
check_flag_column
18-
17+
flag_column = options[:column]
18+
check_flag_column(flag_column)
19+
1920
class_inheritable_hash :flag_mapping
2021
write_inheritable_attribute(:flag_mapping, {})
2122

@@ -24,7 +25,8 @@ def has_flags(flag_hash, options = {})
2425
raise ArgumentError, "has_flags: flag names should be symbols, and #{flag_name} is not" unless is_valid_flag_name(flag_name)
2526
raise ArgumentError, "has_flags: flag name #{flag_name} already defined, please choose different name" if method_defined?(flag_name)
2627

27-
flag_mapping[flag_name] = 2**(flag_key - 1)
28+
flag_mapping[flag_column] ||= {}
29+
flag_mapping[flag_column][flag_name] = 1 << (flag_key - 1)
2830

2931
class_eval <<-EVAL
3032
def #{flag_name}
@@ -57,29 +59,26 @@ def self.not_#{flag_name}_condition
5759
end
5860
end
5961

60-
def check_flag(flag)
61-
raise ArgumentError, "Invalid flag '#{flag}'" unless flag_mapping.include?(flag)
62+
def check_flag(flag, colmn)
63+
raise ArgumentError, "Invalid flag '#{flag}'" unless flag_mapping[colmn].include?(flag)
6264
end
65+
6366

64-
private
67+
private
6568

66-
def check_flag_column
67-
# def check_flag_column(colmn)
68-
# unless columns.any? { |column| column.name == colmn && column.type == :integer }
69-
# raise IncorrectFlagColumnException.new("Table '#{table_name}' must have an integer column named '#{colmn}' in order to use FlagShihTzu")
70-
if not table_exists?
71-
puts "Error: Table '#{table_name}' doesn't exist"
72-
elsif not columns.any? { |column| column.name == flag_column && column.type == :integer }
73-
puts "Error: Table '#{table_name}' must have an integer column named '#{flag_column}' in order to use FlagShihTzu"
69+
def check_flag_column(colmn)
70+
puts "Error: Table '#{table_name}' doesn't exist" and return false if not table_exists?
71+
unless columns.any? { |column| column.name == colmn && column.type == :integer }
72+
raise IncorrectFlagColumnException.new("Table '#{table_name}' must have an integer column named '#{colmn}' in order to use FlagShihTzu")
7473
end
7574
end
7675

7776
def sql_condition_for_flag(flag, colmn, enabled = true)
78-
check_flag(flag)
77+
check_flag(flag, colmn)
7978

8079
"(#{table_name}.#{colmn.to_s} & #{flag_mapping[colmn][flag]} = #{enabled ? flag_mapping[colmn][flag] : 0})"
8180
end
82-
81+
8382
def is_valid_flag_key(flag_key)
8483
flag_key > 0 && flag_key == flag_key.to_i
8584
end

0 commit comments

Comments
 (0)