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.
@@ -52,7 +52,12 @@ module ActiveMetadata::Persistence::Attachment
52
52
  ActiveMetadata::Attachment.find(id)
53
53
  end
54
54
 
55
- # not cached
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, :label => field}
79
- conditions[:starred] = starred if !starred.nil?
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
- # not cached
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 = {:label => field, :document_class => metadata_class, :document_id => metadata_id}
82
- unless starred.nil?
83
- conditions[:starred] = starred
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
- def stream_for(field, order_by = :created_at)
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
@@ -1,3 +1,3 @@
1
1
  module ActiveMetadata
2
- VERSION = "0.6.9"
2
+ VERSION = "0.7.0"
3
3
  end
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
 
@@ -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
@@ -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.6.9
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-03-23 00:00:00.000000000Z
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: &70324883600380 !ruby/object:Gem::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: *70324883600380
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: &70324883599960 !ruby/object:Gem::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: *70324883599960
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: &70324883599500 !ruby/object:Gem::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: *70324883599500
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: &70324883599080 !ruby/object:Gem::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: *70324883599080
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: &70324883598240 !ruby/object:Gem::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: *70324883598240
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: &70324883597820 !ruby/object:Gem::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: *70324883597820
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: &70324883596860 !ruby/object:Gem::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: *70324883596860
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: -3812328665944082884
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: -3812328665944082884
271
+ hash: -2284098148828860317
248
272
  requirements: []
249
273
  rubyforge_project: active_metadata
250
- rubygems_version: 1.8.10
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