super_accessors 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2318f0d762516481afbe336d0e7129f9d378c4a9
4
- data.tar.gz: b043ba8aa066f31c3741072134dad08c4245767e
3
+ metadata.gz: a5fb8546719b54607970b73f9590262cd4f68ff9
4
+ data.tar.gz: 7ab6cb4532b58ebb7cbce27dc5f0f1d6edf37ebb
5
5
  SHA512:
6
- metadata.gz: b06d5d59767553be77523ab87d54fd08871fbca7c3e88169be1205fa567fa6fa781306599cd9704de1e9fb52b620dbfe0fed25eda3d1ad1cf82a5b079055acad
7
- data.tar.gz: edb611c4d3a73cc0b1dbac535b7f668efbc9c6b53ee8f0c5043d87ad5dedbc1541cc8b0b5265b5f53adf7373bb9f1d5e98d6e2942bb05c21158856d3689d2a4e
6
+ metadata.gz: af50cdbc2662ebbc40cf5548ee1e0cdd5896b61bfb8c0a9c4b5cf0c13f31ba49589f6a33ead0ba30fa8256d7ffcbdff3647e8d0e7bfdd4e3714c37250c7aa854
7
+ data.tar.gz: 2a42b08528b46e0fd354dae2808465cd00de66604a40f2f75501781177e14cff3463af2c7161f671445b0a844dc627c152cdfaac24c6a41278aef466b5a688f9
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
@@ -19,8 +19,8 @@ module SuperAccessors
19
19
  end
20
20
 
21
21
  define_method("#{attr}_time=") do |time|
22
- return unless time.present
23
- time = Date.parse(time.to_s)
22
+ return unless time.present?
23
+ time = Time.parse(time.to_s)
24
24
  self.send("#{attr}=", self.send(attr).change(hour: time.hour, min: time.min))
25
25
  end
26
26
 
@@ -1,28 +1,20 @@
1
1
  module SuperAccessors
2
2
  module Store
3
- def self.extended(base)
4
- base.class_eval do
5
- include Converter
6
- end
3
+ # converter
4
+ def any_to_i(any)
5
+ any.to_i
7
6
  end
8
- module Converter
9
- # for integer converter
10
- def any_to_i(any)
11
- any.to_i
12
- end
13
- # for string converter
14
- def any_to_s(any)
15
- any.to_s
16
- end
17
- # for boolean convert
18
- def any_to_b(any)
19
- str = any.to_s
20
- return false if str.blank? || str =~ (/(false|f|no|n|0)$/i)
21
- return true
22
- end
7
+ # for string converter
8
+ def any_to_s(any)
9
+ any.to_s
10
+ end
11
+ # for boolean convert
12
+ def any_to_b(any)
13
+ str = any.to_s
14
+ return false if str.blank? || str =~ (/(false|no|0)$/i)
15
+ return true
23
16
  end
24
17
 
25
- private
26
18
  # This function will instead of store function, now support string, boolean, integer
27
19
  #
28
20
  # Example 1:
@@ -42,7 +34,7 @@ module SuperAccessors
42
34
  store store_name, option
43
35
  # define the virtual attrs
44
36
  column_with_datatype.each do |attr, type|
45
- self.send("store_key_type_#{type.to_s}", store_name, attr)
37
+ send("store_key_type_#{type.to_s}", store_name, attr)
46
38
  end
47
39
  # setting the checkboxs
48
40
  if option[:checkboxes]
@@ -55,7 +47,7 @@ module SuperAccessors
55
47
  define_method("#{store_name}_keys") do
56
48
  list = [];
57
49
  attrs.each do |attr|
58
- if self.send(attr) == true
50
+ if send(attr) == true
59
51
  list.push(attr)
60
52
  end
61
53
  end
@@ -65,7 +57,7 @@ module SuperAccessors
65
57
  @i18n_base_scope = [:activerecord, :options, self.class.name.underscore, store_name]
66
58
  list = [];
67
59
  attrs.each do |attr|
68
- if self.send(attr) == true
60
+ if send(attr) == true
69
61
  list.push(I18n.t("#{attr}", scope: @i18n_base_scope, :default => attr.to_s.humanize))
70
62
  end
71
63
  end
@@ -77,10 +69,11 @@ module SuperAccessors
77
69
  define_method("store_key_type_#{datatype}") do |store_name, attr|
78
70
  define_method(attr) do
79
71
  value = read_store_attribute(store_name, attr)
80
- self.send("any_to_#{datatype}", value)
72
+ self.class.send("any_to_#{datatype}", value)
81
73
  end
82
74
  define_method("#{attr}=") do |value|
83
- value = self.send("any_to_#{datatype}", value)
75
+
76
+ value = self.class.send("any_to_#{datatype}", value)
84
77
  write_store_attribute(store_name, attr, value)
85
78
  end
86
79
  end
@@ -1,3 +1,3 @@
1
1
  module SuperAccessors
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe "[Datetime Split] test" do
4
+ before :all do
5
+ @user = FactoryGirl.create(:user)
6
+ @user.confirm_datetime_date = "2013-10-1"
7
+ @user.confirm_datetime_time = "10:20"
8
+ end
9
+
10
+ context "Getter" do
11
+ it "confirm_datetime should be 2013/10/1 10:20" do
12
+ @user.confirm_datetime.to_date.should == Date.parse("2013/10/1 10:20")
13
+ end
14
+
15
+ it "confirm_datetime_date should be same after convert" do
16
+ Date.parse(@user.confirm_datetime_date).should == Date.parse("2013/10/01")
17
+ end
18
+
19
+ it "confirm_datetime_date_time should be same after convert" do
20
+ Time.parse(@user.confirm_datetime_time).should == Time.parse("10:20")
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ ActiveRecord::Base.establish_connection(
2
+ :adapter => "mysql2",
3
+ :host => "localhost",
4
+ :username => "root",
5
+ :password => "",
6
+ :database => "super_accessors")
7
+
8
+ ActiveRecord::Schema.define do
9
+ if ActiveRecord::Base.connection.table_exists?(:users)
10
+ ActiveRecord::Base.connection.execute("DROP TABLE users")
11
+ end
12
+ create_table :users do |t|
13
+ t.column :roles, :text
14
+ t.column :contact_info, :text
15
+ t.datetime :confirm_datetime
16
+ t.datetime :last_login_datetime
17
+ end
18
+ end
@@ -0,0 +1,25 @@
1
+ require 'factory_girl'
2
+ FactoryGirl.define do
3
+ factory :user do
4
+ name "Eddie"
5
+ zipcode "12345"
6
+ mobile "+886 5666533"
7
+ available "false"
8
+
9
+ admin "FALSE"
10
+ manager "0"
11
+ teacher "no"
12
+ worker "True"
13
+ factory :admin do
14
+ name "Vicky"
15
+ zipcode "293857"
16
+ mobile nil
17
+ available "NO"
18
+
19
+ admin "T"
20
+ manager "0"
21
+ teacher "yes"
22
+ worker "0"
23
+ end
24
+ end
25
+ end
data/spec/db/user.rb ADDED
@@ -0,0 +1,7 @@
1
+ class User < ActiveRecord::Base
2
+ store_define :contact_info, accessors: {name: :s, zipcode: :i, mobile: :s, available: :b}
3
+ store_define :roles, accessors: {admin: :b, manager: :b, teacher: :b, worker: :b}, checkboxes: true
4
+
5
+ split_date_time :confirm_datetime, default: lambda { Time.now }
6
+ split_date_hour_min :last_login_datetime, default: lambda { Time.now }
7
+ end
@@ -0,0 +1,13 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'active_record'
4
+ require 'super_accessors'
5
+ require 'db/connection'
6
+ require 'db/factories'
7
+ require 'db/user'
8
+
9
+ User.create([{}])
10
+
11
+ RSpec.configure do |config|
12
+ # some (optional) config here
13
+ end
@@ -0,0 +1,74 @@
1
+ require 'spec_helper'
2
+
3
+ describe "[Store] test" do
4
+ before :all do
5
+ @user = FactoryGirl.create(:user)
6
+ @admin = FactoryGirl.create(:admin)
7
+ end
8
+
9
+ context "data types test" do
10
+ it "Name should be String" do
11
+ @user.name.class.should == String
12
+ end
13
+ it "Zipcode should be Fixnum" do
14
+ @user.zipcode.class.should == Fixnum
15
+ end
16
+ it "Mobile should be String" do
17
+ @user.mobile.class.should == String
18
+ end
19
+ it "Available should be boolean" do
20
+ @user.available.class.should == FalseClass || @user.available.class.should == TrueClass
21
+ end
22
+ end
23
+
24
+ context "value test [1]" do
25
+ it "Available should be false" do
26
+ @user.available.should == false
27
+ end
28
+ it "Admin should be false" do
29
+ @user.admin.should == false
30
+ end
31
+ it "Manager should be false" do
32
+ @user.manager.should == false
33
+ end
34
+ it "Teacher should be false" do
35
+ @user.teacher.should == false
36
+ end
37
+ it "Worker should be true" do
38
+ @user.worker.should == true
39
+ end
40
+ end
41
+
42
+ context "value test [2]" do
43
+ it "Available should be false" do
44
+ @admin.available.should == false
45
+ end
46
+ it "Admin should be true" do
47
+ @admin.admin.should == true
48
+ end
49
+ it "Manager should be false" do
50
+ @admin.manager.should == false
51
+ end
52
+ it "Teacher should be true" do
53
+ @admin.teacher.should == true
54
+ end
55
+ it "Worker should be false" do
56
+ @admin.worker.should == false
57
+ end
58
+ end
59
+
60
+ context "checkboxes test" do
61
+ it "roles key list should be [worker]" do
62
+ @user.roles_keys.should == [:worker]
63
+ end
64
+ it "roles options should be [Worker]" do
65
+ @user.roles_options.should == ["Worker"]
66
+ end
67
+ it "roles keys should be [:admin, :teacher]" do
68
+ @admin.roles_keys.should == [:admin, :teacher]
69
+ end
70
+ it "roles options should be [:admin, :teacher]" do
71
+ @admin.roles_options.should == ["Admin", "Teacher"]
72
+ end
73
+ end
74
+ end
@@ -20,4 +20,9 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "activerecord"
25
+ spec.add_development_dependency "mysql2"
26
+ spec.add_development_dependency "rails"
27
+ spec.add_development_dependency "factory_girl"
23
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: super_accessors
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
  - eddie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-26 00:00:00.000000000 Z
11
+ date: 2013-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,76 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activerecord
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mysql2
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: factory_girl
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
41
111
  description: Make activerecord support split datetime attributes, store specific datatypes
42
112
  (Integer, String, Boolean)
43
113
  email:
@@ -47,6 +117,7 @@ extensions: []
47
117
  extra_rdoc_files: []
48
118
  files:
49
119
  - .gitignore
120
+ - .rspec
50
121
  - Gemfile
51
122
  - LICENSE.txt
52
123
  - README.md
@@ -55,6 +126,12 @@ files:
55
126
  - lib/super_accessors/datetime.rb
56
127
  - lib/super_accessors/store.rb
57
128
  - lib/super_accessors/version.rb
129
+ - spec/datetime_split_spec.rb
130
+ - spec/db/connection.rb
131
+ - spec/db/factories.rb
132
+ - spec/db/user.rb
133
+ - spec/spec_helper.rb
134
+ - spec/store_spec.rb
58
135
  - super_accessors.gemspec
59
136
  homepage: https://github.com/afunction/super_accessors
60
137
  licenses:
@@ -80,4 +157,10 @@ rubygems_version: 2.0.6
80
157
  signing_key:
81
158
  specification_version: 4
82
159
  summary: activerecord datetime split, store specific datatype (Integer, String, Boolean)
83
- test_files: []
160
+ test_files:
161
+ - spec/datetime_split_spec.rb
162
+ - spec/db/connection.rb
163
+ - spec/db/factories.rb
164
+ - spec/db/user.rb
165
+ - spec/spec_helper.rb
166
+ - spec/store_spec.rb