populate-me 0.2.0 → 0.3.0
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/lib/populate_me/document_mixins/admin_adapter.rb +4 -0
- data/lib/populate_me/document_mixins/schema.rb +10 -0
- data/lib/populate_me/mongo.rb +4 -0
- data/lib/populate_me/version.rb +1 -1
- data/test/test_document_admin_adapter.rb +40 -0
- data/test/test_document_schema.rb +36 -0
- data/test/test_mongo.rb +23 -4
- data/test/test_s3_attachment.rb +9 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5d6a2a8ba2877bb7de857c1befde67845b87fd6
|
4
|
+
data.tar.gz: 38ff9b163189c90109d325815ffd2cde81ca55ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2d852eeff231cbb2d85865ba5f097d63fd8ed9d65279820189ea234bb2721bd610b53ec3b64b11de006d826aeb87fde5f0e2572c9d38b57f768ec2190372485
|
7
|
+
data.tar.gz: d2af5a7f0e800f73c126fff0329aea00ba5c6b47727c36de2de84b1c476141cd38062de253eb37a4294fb3b2a9e7116989cfe17ad3c241704422b8159f9f1e49
|
@@ -89,6 +89,16 @@ module PopulateMe
|
|
89
89
|
o[:foreign_key] = o[:foreign_key].to_sym
|
90
90
|
WebUtils.ensure_key! o, :dependent, true
|
91
91
|
self.relationships[name] = o
|
92
|
+
|
93
|
+
define_method(name) do
|
94
|
+
var = "@cached_#{name}"
|
95
|
+
instance_variable_set(var, instance_variable_get(var)||WebUtils.resolve_class_name(o[:class_name]).admin_find(query: {o[:foreign_key]=>self.id}))
|
96
|
+
end
|
97
|
+
|
98
|
+
define_method("#{name}_first".to_sym) do
|
99
|
+
var = "@cached_#{name}_first"
|
100
|
+
instance_variable_set(var, instance_variable_get(var)||WebUtils.resolve_class_name(o[:class_name]).admin_find_first(query: {o[:foreign_key]=>self.id}))
|
101
|
+
end
|
92
102
|
end
|
93
103
|
|
94
104
|
end
|
data/lib/populate_me/mongo.rb
CHANGED
@@ -76,6 +76,10 @@ module PopulateMe
|
|
76
76
|
self.cast{ collection.find(query, o) }
|
77
77
|
end
|
78
78
|
|
79
|
+
def admin_find_first o={}
|
80
|
+
self.admin_find(o.merge({limit: 1}))[0]
|
81
|
+
end
|
82
|
+
|
79
83
|
def admin_distinct field, o={}
|
80
84
|
query = o.delete(:query) || {}
|
81
85
|
self.collection.distinct field, query, o
|
data/lib/populate_me/version.rb
CHANGED
@@ -65,6 +65,46 @@ describe PopulateMe::Document, 'AdminAdapter' do
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
+
describe '::admin_find ::admin_find_first' do
|
69
|
+
|
70
|
+
class FindablePerson < PopulateMe::Document
|
71
|
+
field :first_name
|
72
|
+
field :last_name
|
73
|
+
end
|
74
|
+
|
75
|
+
before do
|
76
|
+
FindablePerson.documents = []
|
77
|
+
FindablePerson.new(first_name: 'Bobby', last_name: 'Peru').save
|
78
|
+
FindablePerson.new(first_name: 'John', last_name: 'Doe').save
|
79
|
+
FindablePerson.new(first_name: 'John', last_name: 'Turturo').save
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'Finds everything' do
|
83
|
+
people = FindablePerson.admin_find
|
84
|
+
assert_equal Array, people.class
|
85
|
+
assert_equal 3, people.size
|
86
|
+
assert_equal FindablePerson.documents, people
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'Finds with query' do
|
90
|
+
people = FindablePerson.admin_find query: {first_name: 'John'}
|
91
|
+
assert_equal Array, people.class
|
92
|
+
assert_equal 2, people.size
|
93
|
+
assert_equal 'Doe', people[0].last_name
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'Finds first' do
|
97
|
+
person = FindablePerson.admin_find_first
|
98
|
+
assert_equal 'Bobby', person.first_name
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'Finds first with query' do
|
102
|
+
person = FindablePerson.admin_find_first query: {first_name: 'John'}
|
103
|
+
assert_equal 'Doe', person.last_name
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
|
68
108
|
describe '::admin_distinct' do
|
69
109
|
|
70
110
|
class Distinction < PopulateMe::Document
|
@@ -13,6 +13,16 @@ describe PopulateMe::Document, 'Schema' do
|
|
13
13
|
relationship :friends, label: 'Budies', class_name: 'Budy', foreign_key: :budy_id, dependent: false
|
14
14
|
end
|
15
15
|
|
16
|
+
class Relative::Sibling < PopulateMe::Document
|
17
|
+
field :size
|
18
|
+
field :relative_id, type: :parent
|
19
|
+
end
|
20
|
+
|
21
|
+
before do
|
22
|
+
Relative.documents = []
|
23
|
+
Relative::Sibling.documents = []
|
24
|
+
end
|
25
|
+
|
16
26
|
it "Defaults class name" do
|
17
27
|
assert_equal "Relative::Sibling", Relative.relationships[:siblings][:class_name]
|
18
28
|
assert_equal "Relative::HomeRemedy", Relative.relationships[:home_remedies][:class_name]
|
@@ -39,6 +49,32 @@ describe PopulateMe::Document, 'Schema' do
|
|
39
49
|
refute Relative.relationships[:friends][:dependent]
|
40
50
|
end
|
41
51
|
|
52
|
+
it "Creates a getter for cached items" do
|
53
|
+
relative = Relative.new(id: 10)
|
54
|
+
relative.save
|
55
|
+
Relative::Sibling.new(relative_id: 10, size: 'S').save
|
56
|
+
Relative::Sibling.new(relative_id: 10, size: 'M').save
|
57
|
+
Relative::Sibling.new(relative_id: 10, size: 'L').save
|
58
|
+
assert relative.respond_to? :siblings
|
59
|
+
assert_nil relative.instance_variable_get('@cached_siblings')
|
60
|
+
siblings = relative.siblings
|
61
|
+
assert_equal 3, siblings.size
|
62
|
+
assert_equal siblings, relative.instance_variable_get('@cached_siblings')
|
63
|
+
end
|
64
|
+
|
65
|
+
it "Creates a getter for cached first item" do
|
66
|
+
relative = Relative.new(id: 10)
|
67
|
+
relative.save
|
68
|
+
Relative::Sibling.new(relative_id: 10, size: 'S').save
|
69
|
+
Relative::Sibling.new(relative_id: 10, size: 'M').save
|
70
|
+
Relative::Sibling.new(relative_id: 10, size: 'L').save
|
71
|
+
assert relative.respond_to? :siblings_first
|
72
|
+
assert_nil relative.instance_variable_get('@cached_siblings_first')
|
73
|
+
sibling = relative.siblings_first
|
74
|
+
assert_equal 'S', sibling.size
|
75
|
+
assert_equal sibling, relative.instance_variable_get('@cached_siblings_first')
|
76
|
+
end
|
77
|
+
|
42
78
|
end
|
43
79
|
|
44
80
|
end
|
data/test/test_mongo.rb
CHANGED
@@ -125,10 +125,29 @@ describe 'PopulateMe::Mongo' do
|
|
125
125
|
end
|
126
126
|
|
127
127
|
it 'Should admin_find correctly' do
|
128
|
-
LowFish.collection.insert_one(_id:
|
129
|
-
|
130
|
-
|
131
|
-
|
128
|
+
LowFish.collection.insert_one(_id: 10, name: "Arya")
|
129
|
+
LowFish.collection.insert_one(_id: 20, name: "Bran")
|
130
|
+
LowFish.collection.insert_one(_id: 30, name: "Arya")
|
131
|
+
LowFish.collection.insert_one(_id: 40, name: "Bran")
|
132
|
+
items = LowFish.admin_find
|
133
|
+
assert items.is_a?(Array)
|
134
|
+
assert 4, items.count
|
135
|
+
assert_equal 10, items[0].id
|
136
|
+
items = LowFish.admin_find query: {name: 'Bran'}
|
137
|
+
assert items.is_a?(Array)
|
138
|
+
assert 2, items.count
|
139
|
+
assert_equal 20, items[0].id
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'Should admin_find_first correctly' do
|
143
|
+
LowFish.collection.insert_one(_id: 10, name: "Arya")
|
144
|
+
LowFish.collection.insert_one(_id: 20, name: "Bran")
|
145
|
+
LowFish.collection.insert_one(_id: 30, name: "Arya")
|
146
|
+
LowFish.collection.insert_one(_id: 40, name: "Bran")
|
147
|
+
item = LowFish.admin_find_first
|
148
|
+
assert_equal 10, item.id
|
149
|
+
item = LowFish.admin_find_first query: {name: "Bran"}
|
150
|
+
assert_equal 20, item.id
|
132
151
|
end
|
133
152
|
|
134
153
|
it 'Should admin_find while turning fields option into a projection option' do
|
data/test/test_s3_attachment.rb
CHANGED
@@ -10,6 +10,14 @@ PopulateMe::S3Attachment.set :bucket, s3_bucket
|
|
10
10
|
describe 'PopulateMe::S3Attachment' do
|
11
11
|
# parallelize_me!
|
12
12
|
|
13
|
+
def check_if_public_read(object)
|
14
|
+
grant = object.acl.grants.find do |g|
|
15
|
+
g.grantee.uri=="http://acs.amazonaws.com/groups/global/AllUsers"
|
16
|
+
end
|
17
|
+
raise "grant not found" if grant.nil?
|
18
|
+
['READ','FULL_CONTROL'].include? grant.permission
|
19
|
+
end
|
20
|
+
|
13
21
|
class S3Book < PopulateMe::Document
|
14
22
|
field :cover, type: :attachment, variations: [
|
15
23
|
PopulateMe::Variation.new_image_magick_job(:thumb, :gif, "-resize '300x'")
|
@@ -83,7 +91,7 @@ describe 'PopulateMe::S3Attachment' do
|
|
83
91
|
|
84
92
|
vars3file = s3_bucket.object('public/s-3-book/story.upcase.txt')
|
85
93
|
assert_equal 'text/plain', vars3file.content_type
|
86
|
-
|
94
|
+
assert check_if_public_read(vars3file)
|
87
95
|
assert_equal 's-3-book', vars3file.metadata['parent_collection']
|
88
96
|
assert_equal 'HELLO', vars3file.get.body.read
|
89
97
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: populate-me
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mickael Riga
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: web-utils
|