vorm 0.0.2.alpha → 0.0.3.alpha
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.
- checksums.yaml +4 -4
- data/Gemfile +4 -0
- data/lib/vorm/validatable.rb +23 -0
- data/lib/vorm/version.rb +1 -1
- data/lib/vorm.rb +1 -0
- data/spec/lib/vorm/model_spec.rb +2 -74
- data/spec/lib/vorm/persistable_spec.rb +82 -0
- data/spec/lib/vorm/validatable_spec.rb +44 -0
- data/vorm.gemspec +1 -1
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e049baeffcdf4458ff5c973dfcbb38ce7fb0301
|
4
|
+
data.tar.gz: b0dc12e80852cbe360a3487418c63ab247f4e9d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 161b9f07774a7eddbcadc2e2fac3e45ea702be6bb6f294950fd7a19413b7392af33048d221aa69c5c219a822eeaf0acab2f33aae99a6931bfd199592157b9ebd
|
7
|
+
data.tar.gz: cd25a537c2f48f9543913320d83deb0c749ad65d846e5caa0a8608c81cd22fbd46f0e688b23106ecb1e5bf773797de42d38b4a3fef823e50a82dc5b9ff1be9ad
|
data/Gemfile
CHANGED
@@ -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
data/lib/vorm.rb
CHANGED
data/spec/lib/vorm/model_spec.rb
CHANGED
@@ -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
|
-
|
15
|
-
|
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
|
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.
|
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
|
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
|
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:
|