pkwde-has_set 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/has_set.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{has_set}
5
- s.version = "0.0.1"
5
+ s.version = "0.0.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["pkw.de Dev Team"]
data/lib/has_set.rb CHANGED
@@ -5,7 +5,7 @@ require 'activesupport'
5
5
  require 'activerecord'
6
6
 
7
7
  module HasSet
8
- VERSION = '0.0.1'
8
+ VERSION = '0.0.2'
9
9
 
10
10
  module ClassMethods
11
11
 
@@ -18,10 +18,6 @@ module HasSet
18
18
 
19
19
  set_column = options.has_key?(:column_name) ? options[:column_name].to_s : "#{set_name}_bitfield"
20
20
 
21
- unless self.columns_hash[set_column.to_s].type == :integer
22
- raise ActiveRecord::ActiveRecordError, "The column '#{set_column}' to store the the set must be of type integer, because we store them in a bitfield."
23
- end
24
-
25
21
  begin
26
22
  enum_class = options.has_key?(:enum_class) ? options[:enum_class] : Object.const_get(set_name.to_s.camelcase)
27
23
  rescue NameError => ne
@@ -32,6 +28,12 @@ module HasSet
32
28
  if set_elements.blank?
33
29
  self[set_column] = 0
34
30
  else
31
+ if set_elements.kind_of? String
32
+ set_elements = set_elements.split(",").collect do |element|
33
+ element.strip!
34
+ enum_class.const_get(element)
35
+ end
36
+ end
35
37
  [set_elements].flatten.each do |element|
36
38
  unless element.kind_of? enum_class
37
39
  raise ArgumentError, "You must provide an element of the #{enum_class} Enumeration. You provided an element of the class #{element.class}."
@@ -68,7 +70,6 @@ module HasSet
68
70
  end
69
71
  end
70
72
  end
71
-
72
73
  end
73
74
  end
74
75
 
data/test/has_set_test.rb CHANGED
@@ -30,7 +30,6 @@ class HasSetTest < Test::Unit::TestCase
30
30
  end
31
31
 
32
32
  def test_should_throw_argument_error_if_there_is_no_enumeratable_class_to_take_the_set_entries_from
33
- Person.expects(:columns_hash).returns({"hobbies_bitfield" => stub(:type => :integer)})
34
33
  assert_raise(NameError) { Person.has_set :hobbies }
35
34
  end
36
35
 
@@ -53,15 +52,25 @@ class HasSetTest < Test::Unit::TestCase
53
52
  assert !person.interest_dating?, "Person should not be interested in dating."
54
53
  end
55
54
 
56
- def test_should_raise_active_record_error_if_the_type_of_the_bitfiel_column_is_not_integer
57
- assert_raise(ActiveRecord::ActiveRecordError) { Punk.has_set :bad_habits }
58
- end
59
-
60
55
  def test_should_get_all_set_elements_of_a_certain_object
61
56
  person = Person.new(:fullname => "Jessie Summers", :interests => [Interests::Dating, Interests::Shopping])
62
57
  assert_equal [Interests::Dating, Interests::Shopping], person.interests
63
58
  end
64
59
 
60
+ def test_should_set_elements_by_string_names
61
+ person = Person.new(:fullname => "Jessie Summers", :interests => "Dating, Shopping")
62
+ assert_equal [Interests::Dating, Interests::Shopping], person.interests
63
+ end
64
+
65
+ def test_should_set_elements_by_string_name
66
+ person = Person.new(:fullname => "Jessie Summers", :interests => "Dating")
67
+ assert_equal [Interests::Dating], person.interests
68
+ end
69
+
70
+ def test_should_raise_exception_if_strings_cannot_be_constantized
71
+ assert_raise(NameError) { Person.new(:fullname => "Jessie Summers", :interests => "Dadding, Shopping") }
72
+ end
73
+
65
74
  def test_should_provide_the_name_of_the_bitfield_column
66
75
  party = Party.new(:location => "Beach House", :drinks => [Drinks::Beer, Drinks::CubaLibre])
67
76
  assert party.save, "Party should save!"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pkwde-has_set
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - pkw.de Dev Team