minidoc 0.0.1
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 +7 -0
- data/.gitignore +17 -0
- data/.ruby-version +1 -0
- data/.travis.yml +8 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +22 -0
- data/README.md +76 -0
- data/Rakefile +11 -0
- data/lib/minidoc/associations.rb +60 -0
- data/lib/minidoc/autoload.rb +1 -0
- data/lib/minidoc/connection.rb +28 -0
- data/lib/minidoc/counters.rb +44 -0
- data/lib/minidoc/duplicate_key.rb +12 -0
- data/lib/minidoc/finders.rb +50 -0
- data/lib/minidoc/grid.rb +16 -0
- data/lib/minidoc/indexes.rb +31 -0
- data/lib/minidoc/read_only.rb +11 -0
- data/lib/minidoc/record_invalid.rb +9 -0
- data/lib/minidoc/test_helpers.rb +24 -0
- data/lib/minidoc/timestamps.rb +37 -0
- data/lib/minidoc/validations.rb +40 -0
- data/lib/minidoc/value.rb +21 -0
- data/lib/minidoc.rb +244 -0
- data/minidoc.gemspec +23 -0
- data/test/activemodel_test.rb +28 -0
- data/test/belongs_to_test.rb +49 -0
- data/test/connection_test.rb +20 -0
- data/test/counters_test.rb +48 -0
- data/test/duplicate_key_test.rb +21 -0
- data/test/grid_test.rb +33 -0
- data/test/helper.rb +22 -0
- data/test/indexes_test.rb +52 -0
- data/test/locale/en.yml +5 -0
- data/test/persistence_test.rb +183 -0
- data/test/query_test.rb +40 -0
- data/test/read_only_test.rb +34 -0
- data/test/timestamps_test.rb +21 -0
- data/test/uniqueness_validator_test.rb +68 -0
- data/test/validations_test.rb +36 -0
- metadata +196 -0
@@ -0,0 +1,183 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class PersistenceTest < Minidoc::TestCase
|
4
|
+
def test_ids
|
5
|
+
user = User.new
|
6
|
+
assert_equal BSON::ObjectId, user.id.class
|
7
|
+
|
8
|
+
user = User.new(_id: BSON::ObjectId('52955cc5f9f6a538a9000001'))
|
9
|
+
assert_equal BSON::ObjectId('52955cc5f9f6a538a9000001'), user.id
|
10
|
+
|
11
|
+
user = User.new("_id" => BSON::ObjectId('52955cc5f9f6a538a9000001'))
|
12
|
+
assert_equal BSON::ObjectId('52955cc5f9f6a538a9000001'), user.id
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_new_record
|
16
|
+
user = User.new
|
17
|
+
assert_equal true, user.new_record?
|
18
|
+
user.save
|
19
|
+
assert_equal false, user.new_record?
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_raises_duplicate_key_where_appropriate
|
23
|
+
mock_collection = mock()
|
24
|
+
User.stubs(:collection).returns(mock_collection)
|
25
|
+
mock_collection.stubs(:<<).raises(Mongo::OperationFailure.new('Duplicate key exception', Minidoc::DuplicateKey::DUPLICATE_KEY_ERROR_CODE))
|
26
|
+
|
27
|
+
user = User.new
|
28
|
+
assert_raises(Minidoc::DuplicateKey) { user.save }
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_reraises_other_exception_types
|
32
|
+
mock_collection = mock()
|
33
|
+
User.stubs(:collection).returns(mock_collection)
|
34
|
+
mock_collection.stubs(:<<).raises(ArgumentError)
|
35
|
+
|
36
|
+
user = User.new
|
37
|
+
assert_raises(ArgumentError) { user.save }
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_persisted
|
41
|
+
user = User.new
|
42
|
+
assert_equal false, user.persisted?
|
43
|
+
user.save
|
44
|
+
assert_equal true, user.persisted?
|
45
|
+
user.destroy
|
46
|
+
assert_equal false, user.persisted?
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_save
|
50
|
+
user = User.new
|
51
|
+
old_id = user.id
|
52
|
+
assert_equal true, user.save
|
53
|
+
assert_equal 1, User.count
|
54
|
+
assert_equal old_id, user.id
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_create
|
58
|
+
user = User.create!(name: "Bryan")
|
59
|
+
assert_equal "Bryan", user.name
|
60
|
+
assert_equal 1, User.count
|
61
|
+
|
62
|
+
user = User.create(name: "Bryan")
|
63
|
+
assert_equal "Bryan", user.name
|
64
|
+
assert_equal 2, User.count
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_update
|
68
|
+
user = User.create(name: "Bryan")
|
69
|
+
user.name = "Noah"
|
70
|
+
assert_equal "Noah", user.name
|
71
|
+
user.save
|
72
|
+
assert_equal "Noah", user.reload.name
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_destroy
|
76
|
+
user = User.create(name: "Bryan")
|
77
|
+
assert_equal false, user.destroyed?
|
78
|
+
user.destroy
|
79
|
+
assert_equal 0, User.count
|
80
|
+
assert_equal true, user.destroyed?
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_delete
|
84
|
+
user = User.create(name: "Bryan")
|
85
|
+
User.delete(user.id)
|
86
|
+
assert_equal 0, User.count
|
87
|
+
|
88
|
+
user = User.create(name: "Bryan")
|
89
|
+
User.delete(user.id.to_s)
|
90
|
+
assert_equal 0, User.count
|
91
|
+
|
92
|
+
user = User.create(name: "Bryan")
|
93
|
+
user.delete
|
94
|
+
assert_equal 0, User.count
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_reload
|
98
|
+
user = User.create(name: "Bryan")
|
99
|
+
assert_equal "Bryan", user.reload.name
|
100
|
+
|
101
|
+
User.collection.update({_id: user.id}, {name: "Noah"})
|
102
|
+
assert_equal "Noah", user.reload.name
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_class_set
|
106
|
+
user = User.create(name: "Bryan")
|
107
|
+
User.set(user.id, name: "Noah")
|
108
|
+
assert_equal "Bryan", user.name # Class set can't trigger update
|
109
|
+
assert_equal "Noah", user.reload.name
|
110
|
+
assert_equal "Noah", User.first.name
|
111
|
+
|
112
|
+
User.set(user.id.to_s, name: "Mike")
|
113
|
+
assert_equal "Mike", user.reload.name
|
114
|
+
assert_equal "Mike", User.first.name
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_instance_set
|
118
|
+
user = User.create(name: "Bryan")
|
119
|
+
user.set(name: "Noah")
|
120
|
+
assert_equal "Noah", user.name
|
121
|
+
assert_equal "Noah", user.reload.name
|
122
|
+
assert_equal "Noah", User.first.name
|
123
|
+
|
124
|
+
user = User.create(name: "Bryan")
|
125
|
+
user.set("name" => "Noah")
|
126
|
+
assert_equal "Noah", user.name
|
127
|
+
assert_equal "Noah", user.reload.name
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_class_unset
|
131
|
+
user = User.create(name: "Bryan")
|
132
|
+
User.unset(user.id, :name)
|
133
|
+
assert_equal "Bryan", user.name # Class set can't trigger update
|
134
|
+
assert_equal nil, user.reload.name
|
135
|
+
assert_equal nil, User.first.name
|
136
|
+
|
137
|
+
User.unset(user.id.to_s, :name)
|
138
|
+
assert_equal nil, user.reload.name
|
139
|
+
assert_equal nil, User.first.name
|
140
|
+
end
|
141
|
+
|
142
|
+
def test_instance_unset
|
143
|
+
user = User.create(name: "Bryan")
|
144
|
+
user.unset(:name)
|
145
|
+
assert_equal nil, user.name
|
146
|
+
assert_equal nil, user.reload.name
|
147
|
+
assert_equal nil, User.first.name
|
148
|
+
|
149
|
+
user = User.create(name: "Bryan")
|
150
|
+
user.unset("name")
|
151
|
+
assert_equal nil, user.name
|
152
|
+
assert_equal nil, user.reload.name
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_atomic_set_failure
|
156
|
+
user = User.create(name: "from", age: 18)
|
157
|
+
|
158
|
+
refute user.atomic_set({ name: "not-from" }, name: "to")
|
159
|
+
assert_equal "from", user.name
|
160
|
+
assert_equal 18, user.age
|
161
|
+
|
162
|
+
user.reload
|
163
|
+
assert_equal "from", user.name
|
164
|
+
assert_equal 18, user.age
|
165
|
+
end
|
166
|
+
|
167
|
+
def test_atomic_set_success
|
168
|
+
user = User.create(name: "from", age: 18)
|
169
|
+
other_user = User.create(name: "from", age: 21)
|
170
|
+
|
171
|
+
assert user.atomic_set({ name: "from" }, name: "to")
|
172
|
+
assert_equal "to", user.name
|
173
|
+
assert_equal 18, user.age
|
174
|
+
|
175
|
+
user.reload
|
176
|
+
assert_equal "to", user.name
|
177
|
+
assert_equal 18, user.age
|
178
|
+
|
179
|
+
other_user.reload
|
180
|
+
assert_equal "from", other_user.name
|
181
|
+
assert_equal 21, other_user.age
|
182
|
+
end
|
183
|
+
end
|
data/test/query_test.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class QueryTest < Minidoc::TestCase
|
4
|
+
def test_count_all
|
5
|
+
User.collection << { name: "Joe" }
|
6
|
+
User.collection << { name: "Bryan" }
|
7
|
+
assert_equal 2, User.count
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_count_query
|
11
|
+
User.collection << { name: "Joe" }
|
12
|
+
User.collection << { name: "Bryan" }
|
13
|
+
assert_equal 1, User.count(name: "Bryan")
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_exists
|
17
|
+
User.collection << { name: "Joe" }
|
18
|
+
assert User.exists?(name: "Joe")
|
19
|
+
refute User.exists?(name: "Bryan")
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_first
|
23
|
+
assert_equal nil, User.first
|
24
|
+
user = User.create(name: "Bryan")
|
25
|
+
assert_equal "Bryan", User.first.name
|
26
|
+
assert_equal user, User.first
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_find
|
30
|
+
user = User.create(name: "Bryan")
|
31
|
+
assert_equal [user], User.find({}).to_a
|
32
|
+
assert_equal [], User.find(name: "Noah").to_a
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_find_one
|
36
|
+
user = User.create(name: "Bryan")
|
37
|
+
assert_equal user, User.find_one({})
|
38
|
+
assert_equal nil, User.find_one(name: "Noah")
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class ReadOnlyTest < Minidoc::TestCase
|
4
|
+
class ReadOnlyUser < Minidoc::ReadOnly
|
5
|
+
self.collection_name = "users"
|
6
|
+
attribute :name, String
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_read_only
|
10
|
+
assert_raises NoMethodError do
|
11
|
+
ReadOnlyUser.create(name: "Bryan")
|
12
|
+
end
|
13
|
+
|
14
|
+
rw_user = User.create(name: "Bryan")
|
15
|
+
user = ReadOnlyUser.first
|
16
|
+
assert_equal "Bryan", user.name
|
17
|
+
assert_equal rw_user.id, user.id
|
18
|
+
assert_equal user, user.as_value
|
19
|
+
|
20
|
+
assert_raises NoMethodError do
|
21
|
+
user.name = "Noah"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_value
|
26
|
+
user = User.new(name: "Bryan")
|
27
|
+
user.name = "Noah"
|
28
|
+
user = user.as_value
|
29
|
+
|
30
|
+
assert_raises NoMethodError do
|
31
|
+
user.name = "Noah"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class TimestampsTest < Minidoc::TestCase
|
4
|
+
class User < ::User
|
5
|
+
include Minidoc::Timestamps
|
6
|
+
timestamps!
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_create
|
10
|
+
user = User.create
|
11
|
+
assert user.created_at
|
12
|
+
assert_equal user.created_at, user.updated_at
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_update
|
16
|
+
user = User.create
|
17
|
+
sleep 0.001
|
18
|
+
user.save
|
19
|
+
refute_equal user.created_at, user.updated_at
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class UniquenessValidatorTest < Minidoc::TestCase
|
4
|
+
class User < ::User
|
5
|
+
validates :name, uniqueness: true
|
6
|
+
end
|
7
|
+
|
8
|
+
class InsensitiveUser < ::User
|
9
|
+
attribute :insensitive, String
|
10
|
+
validates :insensitive, uniqueness: { case_sensitive: false }
|
11
|
+
end
|
12
|
+
|
13
|
+
class ScopedUser < ::User
|
14
|
+
attribute :country_id, Integer
|
15
|
+
attribute :tax_id_number, Integer
|
16
|
+
validates :tax_id_number, uniqueness: { scope: :country_id }
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_invalid_with_existing_value
|
20
|
+
User.create!(name: "same name")
|
21
|
+
user = User.new(name: "same name")
|
22
|
+
assert_equal false, user.valid?
|
23
|
+
assert_equal ["has already been taken"], user.errors[:name]
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_case_sensitive_by_default
|
27
|
+
User.create!(name: "different case")
|
28
|
+
user = User.new(name: "DIFFERENT CASE")
|
29
|
+
assert_equal true, user.valid?
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_unique_persisted_record_is_valid
|
33
|
+
user = User.create!(name: "lonely")
|
34
|
+
assert_equal true, user.valid?
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_case_insensitive
|
38
|
+
InsensitiveUser.create!(insensitive: "equivalent")
|
39
|
+
user = InsensitiveUser.new(insensitive: "EquivALENT")
|
40
|
+
assert_equal false, user.valid?
|
41
|
+
assert_equal ["has already been taken"], user.errors[:insensitive]
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_same_value_within_scope
|
45
|
+
ScopedUser.create!(country_id: 1, tax_id_number: 1)
|
46
|
+
user = ScopedUser.new(country_id: 1, tax_id_number: 1)
|
47
|
+
assert_equal false, user.valid?
|
48
|
+
assert_equal ["has already been taken"], user.errors[:tax_id_number]
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_different_value_within_scope
|
52
|
+
ScopedUser.create!(country_id: 1, tax_id_number: 1)
|
53
|
+
user = ScopedUser.new(country_id: 1, tax_id_number: 2)
|
54
|
+
assert_equal true, user.valid?
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_same_value_outside_scope
|
58
|
+
ScopedUser.create!(country_id: 1, tax_id_number: 1)
|
59
|
+
user = ScopedUser.new(country_id: 2, tax_id_number: 1)
|
60
|
+
assert_equal true, user.valid?
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_same_value_outside_scope
|
64
|
+
ScopedUser.create!(country_id: 1, tax_id_number: 1)
|
65
|
+
user = ScopedUser.new(country_id: 2, tax_id_number: 2)
|
66
|
+
assert_equal true, user.valid?
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class ValidationsTest < Minidoc::TestCase
|
4
|
+
class User < ::User
|
5
|
+
validates :name, presence: true
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_valid
|
9
|
+
user = User.new
|
10
|
+
assert_equal false, user.valid?
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_errors
|
14
|
+
user = User.new
|
15
|
+
user.valid?
|
16
|
+
assert_equal ["can't be blank"], user.errors[:name]
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_create_bang
|
20
|
+
assert_raises Minidoc::RecordInvalid do
|
21
|
+
User.create!
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_invalid_save
|
26
|
+
user = User.new
|
27
|
+
assert_equal false, user.save
|
28
|
+
assert_equal true, user.new_record?
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_save_bang
|
32
|
+
assert_raises Minidoc::RecordInvalid do
|
33
|
+
User.new.save!
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
metadata
ADDED
@@ -0,0 +1,196 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: minidoc
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Bryan Helmkamp
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-09-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activemodel
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.0.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: virtus
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mongo
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
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: mocha
|
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: rake
|
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'
|
111
|
+
description:
|
112
|
+
email:
|
113
|
+
- bryan@brynary.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- ".gitignore"
|
119
|
+
- ".ruby-version"
|
120
|
+
- ".travis.yml"
|
121
|
+
- Gemfile
|
122
|
+
- LICENSE.txt
|
123
|
+
- README.md
|
124
|
+
- Rakefile
|
125
|
+
- lib/minidoc.rb
|
126
|
+
- lib/minidoc/associations.rb
|
127
|
+
- lib/minidoc/autoload.rb
|
128
|
+
- lib/minidoc/connection.rb
|
129
|
+
- lib/minidoc/counters.rb
|
130
|
+
- lib/minidoc/duplicate_key.rb
|
131
|
+
- lib/minidoc/finders.rb
|
132
|
+
- lib/minidoc/grid.rb
|
133
|
+
- lib/minidoc/indexes.rb
|
134
|
+
- lib/minidoc/read_only.rb
|
135
|
+
- lib/minidoc/record_invalid.rb
|
136
|
+
- lib/minidoc/test_helpers.rb
|
137
|
+
- lib/minidoc/timestamps.rb
|
138
|
+
- lib/minidoc/validations.rb
|
139
|
+
- lib/minidoc/value.rb
|
140
|
+
- minidoc.gemspec
|
141
|
+
- test/activemodel_test.rb
|
142
|
+
- test/belongs_to_test.rb
|
143
|
+
- test/connection_test.rb
|
144
|
+
- test/counters_test.rb
|
145
|
+
- test/duplicate_key_test.rb
|
146
|
+
- test/grid_test.rb
|
147
|
+
- test/helper.rb
|
148
|
+
- test/indexes_test.rb
|
149
|
+
- test/locale/en.yml
|
150
|
+
- test/persistence_test.rb
|
151
|
+
- test/query_test.rb
|
152
|
+
- test/read_only_test.rb
|
153
|
+
- test/timestamps_test.rb
|
154
|
+
- test/uniqueness_validator_test.rb
|
155
|
+
- test/validations_test.rb
|
156
|
+
homepage: https://github.com/brynary/minidoc
|
157
|
+
licenses:
|
158
|
+
- MIT
|
159
|
+
metadata: {}
|
160
|
+
post_install_message:
|
161
|
+
rdoc_options: []
|
162
|
+
require_paths:
|
163
|
+
- lib
|
164
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '0'
|
169
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
requirements: []
|
175
|
+
rubyforge_project:
|
176
|
+
rubygems_version: 2.5.1
|
177
|
+
signing_key:
|
178
|
+
specification_version: 4
|
179
|
+
summary: Lightweight wrapper for MongoDB documents
|
180
|
+
test_files:
|
181
|
+
- test/activemodel_test.rb
|
182
|
+
- test/belongs_to_test.rb
|
183
|
+
- test/connection_test.rb
|
184
|
+
- test/counters_test.rb
|
185
|
+
- test/duplicate_key_test.rb
|
186
|
+
- test/grid_test.rb
|
187
|
+
- test/helper.rb
|
188
|
+
- test/indexes_test.rb
|
189
|
+
- test/locale/en.yml
|
190
|
+
- test/persistence_test.rb
|
191
|
+
- test/query_test.rb
|
192
|
+
- test/read_only_test.rb
|
193
|
+
- test/timestamps_test.rb
|
194
|
+
- test/uniqueness_validator_test.rb
|
195
|
+
- test/validations_test.rb
|
196
|
+
has_rdoc:
|