vorm 0.0.2.alpha → 0.0.3.alpha

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: 0226887b2444ffaa689f04548cdfc5365cfe4189
4
- data.tar.gz: 6a8989a13c330ba6c213cfba69197b61127128da
3
+ metadata.gz: 8e049baeffcdf4458ff5c973dfcbb38ce7fb0301
4
+ data.tar.gz: b0dc12e80852cbe360a3487418c63ab247f4e9d1
5
5
  SHA512:
6
- metadata.gz: 940b8ba11cc2b72732127c375e4ce761c830a8d96e053aa396e84c9e39d36fb5ad1ffc68428ea1f22aaadaca1e3ae8c00754726ae922916831789ebc53a97417
7
- data.tar.gz: 1cd848b8b1b8dfc82706dc3d303ac0698309496a06e29368ef65c298fdb4d0943415b1ce278d84cd23569c83777013d404b0c18b9f51fbf84c0b77fadd766ec2
6
+ metadata.gz: 161b9f07774a7eddbcadc2e2fac3e45ea702be6bb6f294950fd7a19413b7392af33048d221aa69c5c219a822eeaf0acab2f33aae99a6931bfd199592157b9ebd
7
+ data.tar.gz: cd25a537c2f48f9543913320d83deb0c749ad65d846e5caa0a8608c81cd22fbd46f0e688b23106ecb1e5bf773797de42d38b4a3fef823e50a82dc5b9ff1be9ad
data/Gemfile CHANGED
@@ -2,3 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
+ group :development, :test do
6
+ gem "byebug", "~> 3.5"
7
+ end
8
+
@@ -0,0 +1,23 @@
1
+ module Vorm
2
+ module Validatable
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ end
6
+
7
+ module ClassMethods
8
+ def validates(field, &validator)
9
+ raise(ArgumentError, "Field name must be a string") if field && !field.is_a?(String)
10
+ raise(ArgumentError, "You must provide a block") if !block_given?
11
+ _add_validator(field, validator)
12
+ end
13
+
14
+ private
15
+
16
+ def _add_validator(field, validator)
17
+ @validators ||= Hash.new { |k, v| k[v] = [] }
18
+ @validators[field] << validator
19
+ end
20
+ end
21
+ end
22
+ end
23
+
data/lib/vorm/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Vorm
2
- VERSION = "0.0.2.alpha"
2
+ VERSION = "0.0.3.alpha"
3
3
  end
4
4
 
data/lib/vorm.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'vorm/version'
2
+ require 'vorm/validatable'
2
3
  require 'vorm/persistable'
3
4
  require 'vorm/model'
4
5
 
@@ -1,81 +1,9 @@
1
- module Vorm
2
- class Model
3
- def self.reset
4
- @table = nil
5
- @fields = nil
6
- end
7
- end
8
- end
9
-
10
1
  describe Vorm::Model do
11
2
  context "class methods" do
12
3
  subject { Vorm::Model }
13
4
 
14
- describe ".table" do
15
- before { subject.reset }
16
-
17
- it { is_expected.to respond_to(:table) }
18
-
19
- it "raises when name is not string" do
20
- expect { subject.table(:users) }
21
- .to raise_error(ArgumentError, "Table name must be a string")
22
- end
23
-
24
- it "sets the table correctly" do
25
- expect { subject.table('users') }
26
- .to change(subject, :table).to('users')
27
- end
28
-
29
- it "gets the table" do
30
- subject.table('users')
31
- expect(subject.table).to eq('users')
32
- end
33
-
34
- it "setting the table again does not change it (cached)" do
35
- subject.table('users')
36
- expect { subject.table('another table') }
37
- .not_to change(subject, :table)
38
- end
39
- end
40
-
41
- describe ".field" do
42
- before { subject.reset }
43
-
44
- it { is_expected.to respond_to(:field) }
45
-
46
- it "raises when name is not string" do
47
- expect { subject.field(:email) }
48
- .to raise_error(ArgumentError, "Field name must be a string")
49
- end
50
-
51
- it "sets the field correctly" do
52
- expect { subject.field('email') }
53
- .to change(subject, :fields)
54
- end
55
-
56
-
57
- it "ignores duplicates" do
58
- subject.field('email')
59
- subject.field('email')
60
- expect(subject.fields).to eq(Set.new(['email']))
61
- end
62
- end
63
-
64
- describe ".fields" do
65
- before { subject.reset }
66
-
67
- it { is_expected.to respond_to(:fields) }
68
-
69
- it "gets fields when only one set" do
70
- subject.field('email')
71
- expect(subject.fields).to eq(Set.new(['email']))
72
- end
73
-
74
- it "gets the fields when multiple set" do
75
- subject.field('email')
76
- subject.field('dob')
77
- expect(subject.fields).to eq(Set.new(['email', 'dob']))
78
- end
5
+ it "should include Persistable" do
6
+ expect(subject.included_modules).to include(Vorm::Persistable)
79
7
  end
80
8
  end
81
9
  end
@@ -0,0 +1,82 @@
1
+ class Model
2
+ include Vorm::Persistable
3
+
4
+ def self.reset
5
+ @table = nil
6
+ @fields = nil
7
+ end
8
+ end
9
+
10
+ describe Vorm::Persistable do
11
+ context "class methods" do
12
+ subject { Model }
13
+
14
+ describe ".table" do
15
+ before { subject.reset }
16
+
17
+ it { is_expected.to respond_to(:table) }
18
+
19
+ it "raises when name is not string" do
20
+ expect { subject.table(:users) }
21
+ .to raise_error(ArgumentError, "Table name must be a string")
22
+ end
23
+
24
+ it "sets the table correctly" do
25
+ expect { subject.table('users') }
26
+ .to change(subject, :table).to('users')
27
+ end
28
+
29
+ it "gets the table" do
30
+ subject.table('users')
31
+ expect(subject.table).to eq('users')
32
+ end
33
+
34
+ it "setting the table again does not change it (cached)" do
35
+ subject.table('users')
36
+ expect { subject.table('another table') }
37
+ .not_to change(subject, :table)
38
+ end
39
+ end
40
+
41
+ describe ".field" do
42
+ before { subject.reset }
43
+
44
+ it { is_expected.to respond_to(:field) }
45
+
46
+ it "raises when name is not string" do
47
+ expect { subject.field(:email) }
48
+ .to raise_error(ArgumentError, "Field name must be a string")
49
+ end
50
+
51
+ it "sets the field correctly" do
52
+ expect { subject.field('email') }
53
+ .to change(subject, :fields)
54
+ end
55
+
56
+
57
+ it "ignores duplicates" do
58
+ subject.field('email')
59
+ subject.field('email')
60
+ expect(subject.fields).to eq(Set.new(['email']))
61
+ end
62
+ end
63
+
64
+ describe ".fields" do
65
+ before { subject.reset }
66
+
67
+ it { is_expected.to respond_to(:fields) }
68
+
69
+ it "gets fields when only one set" do
70
+ subject.field('email')
71
+ expect(subject.fields).to eq(Set.new(['email']))
72
+ end
73
+
74
+ it "gets the fields when multiple set" do
75
+ subject.field('email')
76
+ subject.field('dob')
77
+ expect(subject.fields).to eq(Set.new(['email', 'dob']))
78
+ end
79
+ end
80
+ end
81
+ end
82
+
@@ -0,0 +1,44 @@
1
+ require 'byebug'
2
+ class Valid
3
+ include Vorm::Validatable
4
+
5
+ def self.reset
6
+ @validators = nil
7
+ end
8
+ end
9
+
10
+ describe Vorm::Validatable do
11
+ context "class methods" do
12
+ subject { Valid }
13
+
14
+ describe ".validates" do
15
+ before { subject.reset }
16
+
17
+ it { is_expected.to respond_to(:validates) }
18
+
19
+ it "raises argument error when given arg is not string" do
20
+ expect { subject.validates(:email) }
21
+ .to raise_error(ArgumentError, "Field name must be a string")
22
+ end
23
+
24
+ it "raises argument error when no block given" do
25
+ expect { subject.validates("email") }
26
+ .to raise_error(ArgumentError, "You must provide a block")
27
+ end
28
+
29
+ it "stores a validator" do
30
+ subject.validates("email") { "required" }
31
+ expect(subject.instance_variable_get('@validators')["email"].length).to be(1)
32
+ end
33
+
34
+ it "stores multiple validators" do
35
+ subject.validates("email") { "required" }
36
+ subject.validates("email") { "not valid" }
37
+ subject.validates("password") { "required" }
38
+ expect(subject.instance_variable_get('@validators')["email"].length).to be(2)
39
+ expect(subject.instance_variable_get('@validators')["password"].length).to be(1)
40
+ end
41
+ end
42
+ end
43
+ end
44
+
data/vorm.gemspec CHANGED
@@ -20,6 +20,6 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.6"
22
22
  spec.add_development_dependency "rake", "~> 10.3.2"
23
- spec.add_development_dependency "rspec", "~> 3.1.7"
23
+ spec.add_development_dependency "rspec", "~> 3.1"
24
24
  end
25
25
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vorm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.alpha
4
+ version: 0.0.3.alpha
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juho Hautala
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.1.7
47
+ version: '3.1'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.1.7
54
+ version: '3.1'
55
55
  description: Simple, pluggable (your own db adapter) ORM for those little projects.
56
56
  email:
57
57
  - juho.hautala@helsinki.fi
@@ -69,8 +69,11 @@ files:
69
69
  - lib/vorm.rb
70
70
  - lib/vorm/model.rb
71
71
  - lib/vorm/persistable.rb
72
+ - lib/vorm/validatable.rb
72
73
  - lib/vorm/version.rb
73
74
  - spec/lib/vorm/model_spec.rb
75
+ - spec/lib/vorm/persistable_spec.rb
76
+ - spec/lib/vorm/validatable_spec.rb
74
77
  - spec/spec_helper.rb
75
78
  - vorm.gemspec
76
79
  homepage: https://github.com/vastus/vorm
@@ -99,5 +102,6 @@ specification_version: 4
99
102
  summary: Simple ORM.
100
103
  test_files:
101
104
  - spec/lib/vorm/model_spec.rb
105
+ - spec/lib/vorm/persistable_spec.rb
106
+ - spec/lib/vorm/validatable_spec.rb
102
107
  - spec/spec_helper.rb
103
- has_rdoc: