active_metadata 0.6.9 → 0.7.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.
- data/lib/active_metadata/persistence/attachment.rb +9 -3
- data/lib/active_metadata/persistence/note.rb +15 -5
- data/lib/active_metadata/streamable.rb +16 -1
- data/lib/active_metadata/version.rb +1 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/lib/attachments_spec.rb +15 -0
- data/spec/lib/notes_spec.rb +14 -0
- data/spec/lib/streamable_spec.rb +30 -0
- metadata +49 -25
@@ -52,7 +52,12 @@ module ActiveMetadata::Persistence::Attachment
|
|
52
52
|
ActiveMetadata::Attachment.find(id)
|
53
53
|
end
|
54
54
|
|
55
|
-
#
|
55
|
+
# return all the starred notes for the current model and for any field
|
56
|
+
# datas does not come from cache
|
57
|
+
def starred_attachments
|
58
|
+
fetch_attachments_for nil, true
|
59
|
+
end
|
60
|
+
|
56
61
|
def starred_attachments_for(field)
|
57
62
|
fetch_attachments_for field, true
|
58
63
|
end
|
@@ -75,8 +80,9 @@ module ActiveMetadata::Persistence::Attachment
|
|
75
80
|
end
|
76
81
|
|
77
82
|
def fetch_attachments_for(field, starred=nil, order_by="updated_at DESC")
|
78
|
-
conditions = {:document_class => metadata_class, :document_id => metadata_id
|
79
|
-
conditions[:
|
83
|
+
conditions = {:document_class => metadata_class, :document_id => metadata_id}
|
84
|
+
conditions[:label] = field unless field.nil?
|
85
|
+
conditions[:starred] = starred unless starred.nil?
|
80
86
|
ActiveMetadata::Attachment.all(:conditions => conditions, :order => order_by)
|
81
87
|
end
|
82
88
|
|
@@ -56,16 +56,27 @@ module ActiveMetadata::Persistence::Note
|
|
56
56
|
notes_for(field).size
|
57
57
|
end
|
58
58
|
|
59
|
-
#
|
59
|
+
# return all the starred notes for the current model and for any field
|
60
|
+
# datas does not come from cache
|
61
|
+
def starred_notes
|
62
|
+
fetch_notes_for nil, true
|
63
|
+
end
|
64
|
+
|
65
|
+
# return all the starred notes for a particular field
|
66
|
+
# datas does not come from cache
|
60
67
|
def starred_notes_for(field)
|
61
68
|
fetch_notes_for field, true
|
62
69
|
end
|
63
70
|
|
71
|
+
# star a note
|
72
|
+
# reload the cache calling update
|
64
73
|
def star_note(id)
|
65
74
|
n = ActiveMetadata::Note.find(id)
|
66
75
|
update_note id, n.note, true
|
67
76
|
end
|
68
77
|
|
78
|
+
# unstar a note
|
79
|
+
# reload the cache calling update
|
69
80
|
def unstar_note(id)
|
70
81
|
n = ActiveMetadata::Note.find(id)
|
71
82
|
update_note id, n.note, false
|
@@ -78,10 +89,9 @@ module ActiveMetadata::Persistence::Note
|
|
78
89
|
end
|
79
90
|
|
80
91
|
def fetch_notes_for(field, starred=nil, order_by="updated_at DESC")
|
81
|
-
conditions = {:
|
82
|
-
unless
|
83
|
-
|
84
|
-
end
|
92
|
+
conditions = {:document_class => metadata_class, :document_id => metadata_id}
|
93
|
+
conditions[:label] = field unless field.nil?
|
94
|
+
conditions[:starred] = starred unless starred.nil?
|
85
95
|
ActiveMetadata::Note.all(:conditions => conditions, :order => order_by)
|
86
96
|
end
|
87
97
|
|
@@ -1,9 +1,16 @@
|
|
1
1
|
module ActiveMetadata::Streamable
|
2
2
|
|
3
|
-
|
3
|
+
# return the streamables items by field in an ordered array
|
4
|
+
# ActiveMetadata::CONFIG['streamables'] defines what models will be retrieved
|
5
|
+
def stream_for(field, order_by = :updated_at)
|
4
6
|
sort_stream(collect_stream_data(field), order_by)
|
5
7
|
end
|
6
8
|
|
9
|
+
# same as #stream_for but not filtered by field
|
10
|
+
def stream_all_starred order_by = :updated_at
|
11
|
+
sort_stream(collect_starred_stream_data, order_by)
|
12
|
+
end
|
13
|
+
|
7
14
|
private
|
8
15
|
def sort_stream stream, order_by
|
9
16
|
stream.sort{ |a,b| b.send(order_by) <=> a.send(order_by) }
|
@@ -17,6 +24,14 @@ module ActiveMetadata::Streamable
|
|
17
24
|
res
|
18
25
|
end
|
19
26
|
|
27
|
+
def collect_starred_stream_data
|
28
|
+
res = []
|
29
|
+
ActiveMetadata::CONFIG['streamables'].each do |model|
|
30
|
+
res.concat self.send("starred_#{model.to_s.pluralize}".to_sym).collect { |el| el }
|
31
|
+
end
|
32
|
+
res
|
33
|
+
end
|
34
|
+
|
20
35
|
def stream_collect_method model
|
21
36
|
model.to_s == 'note' ? 'notes_for' : 'attachments_for'
|
22
37
|
end
|
data/spec/dummy/db/test.sqlite3
CHANGED
Binary file
|
@@ -176,6 +176,21 @@ describe ActiveMetadata do
|
|
176
176
|
|
177
177
|
end
|
178
178
|
|
179
|
+
describe "#starred_attachments" do
|
180
|
+
|
181
|
+
it "should return all the starred attachments for any model field" do
|
182
|
+
@document.save_attachment_for(:name, @attachment, true)
|
183
|
+
@document.save_attachment_for(:title, @attachment, true)
|
184
|
+
@document.save_attachment_for(:title, @attachment2 )
|
185
|
+
|
186
|
+
starred = @document.starred_attachments
|
187
|
+
starred.count.should eq 2
|
188
|
+
starred.find{|att| att.attach.instance_read(:file_name) == "pdf_test_2.pdf"}.should be_nil
|
189
|
+
end
|
190
|
+
|
191
|
+
end
|
192
|
+
|
193
|
+
|
179
194
|
|
180
195
|
end
|
181
196
|
|
data/spec/lib/notes_spec.rb
CHANGED
@@ -204,5 +204,19 @@ describe ActiveMetadata do
|
|
204
204
|
|
205
205
|
end
|
206
206
|
|
207
|
+
describe "#starred_notes" do
|
208
|
+
|
209
|
+
it "should return all the starred notes for any model field" do
|
210
|
+
@document.create_note_for :name, "starred note for name", true
|
211
|
+
@document.create_note_for :title, "starred note for title", true
|
212
|
+
@document.create_note_for :title, "not starred note for title"
|
213
|
+
|
214
|
+
starred = @document.starred_notes
|
215
|
+
starred.count.should eq 2
|
216
|
+
starred.find{|note| note.note == "not starred note for title"}.should be_nil
|
217
|
+
end
|
218
|
+
|
219
|
+
end
|
220
|
+
|
207
221
|
end
|
208
222
|
end
|
data/spec/lib/streamable_spec.rb
CHANGED
@@ -131,5 +131,35 @@ describe ActiveMetadata::Streamable do
|
|
131
131
|
|
132
132
|
end
|
133
133
|
|
134
|
+
describe "#stream_all_starred" do
|
135
|
+
|
136
|
+
context "given 2 notes (only one starred) and 2 attachments (only one starred)" do
|
137
|
+
|
138
|
+
before(:each) do
|
139
|
+
@document = Document.create! { |d| d.name = "John" }
|
140
|
+
(1..2).each do |i|
|
141
|
+
@document.save_attachment_for(:name,test_pdf("pdf_test_#{i}"), i.odd? )
|
142
|
+
@document.create_note_for(:name, "note_#{i}", i.odd? )
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should return 2 elements" do
|
147
|
+
@document.stream_all_starred.count.should eq 2
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should return only the starred items" do
|
151
|
+
@document.stream_all_starred.collect{|el| el.starred? }.count.should eq 2
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should return the starred stream ordered by UPDATED_AT DESC" do
|
155
|
+
starred = @document.stream_all_starred
|
156
|
+
starred.first.should be_kind_of ActiveMetadata::Note
|
157
|
+
@document.update_attachment starred.last.id, starred.last.attach.to_file
|
158
|
+
@document.stream_all_starred.first.should be_kind_of ActiveMetadata::Attachment
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|
162
|
+
|
163
|
+
end
|
134
164
|
|
135
165
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_metadata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-04-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,15 @@ dependencies:
|
|
22
22
|
version: 3.2.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 3.2.0
|
26
31
|
- !ruby/object:Gem::Dependency
|
27
32
|
name: sqlite3
|
28
|
-
requirement:
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
29
34
|
none: false
|
30
35
|
requirements:
|
31
36
|
- - ! '>='
|
@@ -33,10 +38,15 @@ dependencies:
|
|
33
38
|
version: '0'
|
34
39
|
type: :development
|
35
40
|
prerelease: false
|
36
|
-
version_requirements:
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
37
47
|
- !ruby/object:Gem::Dependency
|
38
48
|
name: rspec-rails
|
39
|
-
requirement:
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
40
50
|
none: false
|
41
51
|
requirements:
|
42
52
|
- - ! '>='
|
@@ -44,10 +54,15 @@ dependencies:
|
|
44
54
|
version: '0'
|
45
55
|
type: :development
|
46
56
|
prerelease: false
|
47
|
-
version_requirements:
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
48
63
|
- !ruby/object:Gem::Dependency
|
49
64
|
name: sqlite3
|
50
|
-
requirement:
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
51
66
|
none: false
|
52
67
|
requirements:
|
53
68
|
- - ! '>='
|
@@ -55,21 +70,15 @@ dependencies:
|
|
55
70
|
version: '0'
|
56
71
|
type: :development
|
57
72
|
prerelease: false
|
58
|
-
version_requirements:
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: sqlite3-ruby
|
61
|
-
requirement: &70324883598660 !ruby/object:Gem::Requirement
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
62
74
|
none: false
|
63
75
|
requirements:
|
64
76
|
- - ! '>='
|
65
77
|
- !ruby/object:Gem::Version
|
66
78
|
version: '0'
|
67
|
-
type: :development
|
68
|
-
prerelease: false
|
69
|
-
version_requirements: *70324883598660
|
70
79
|
- !ruby/object:Gem::Dependency
|
71
80
|
name: cucumber-rails
|
72
|
-
requirement:
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
73
82
|
none: false
|
74
83
|
requirements:
|
75
84
|
- - ! '>='
|
@@ -77,10 +86,15 @@ dependencies:
|
|
77
86
|
version: '0'
|
78
87
|
type: :development
|
79
88
|
prerelease: false
|
80
|
-
version_requirements:
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
81
95
|
- !ruby/object:Gem::Dependency
|
82
96
|
name: ci_reporter
|
83
|
-
requirement:
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
84
98
|
none: false
|
85
99
|
requirements:
|
86
100
|
- - ! '>='
|
@@ -88,10 +102,15 @@ dependencies:
|
|
88
102
|
version: '0'
|
89
103
|
type: :development
|
90
104
|
prerelease: false
|
91
|
-
version_requirements:
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
92
111
|
- !ruby/object:Gem::Dependency
|
93
112
|
name: paperclip
|
94
|
-
requirement:
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
95
114
|
none: false
|
96
115
|
requirements:
|
97
116
|
- - ! '>='
|
@@ -99,7 +118,12 @@ dependencies:
|
|
99
118
|
version: '0'
|
100
119
|
type: :runtime
|
101
120
|
prerelease: false
|
102
|
-
version_requirements:
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
103
127
|
description: First implementation will write metadata on mongodb
|
104
128
|
email:
|
105
129
|
- acampolonghi@gmail.com
|
@@ -235,7 +259,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
235
259
|
version: '0'
|
236
260
|
segments:
|
237
261
|
- 0
|
238
|
-
hash: -
|
262
|
+
hash: -2284098148828860317
|
239
263
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
240
264
|
none: false
|
241
265
|
requirements:
|
@@ -244,10 +268,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
244
268
|
version: '0'
|
245
269
|
segments:
|
246
270
|
- 0
|
247
|
-
hash: -
|
271
|
+
hash: -2284098148828860317
|
248
272
|
requirements: []
|
249
273
|
rubyforge_project: active_metadata
|
250
|
-
rubygems_version: 1.8.
|
274
|
+
rubygems_version: 1.8.19
|
251
275
|
signing_key:
|
252
276
|
specification_version: 3
|
253
277
|
summary: Add metadata to fields in an active record model
|