jzimmek-reportme 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -4,30 +4,21 @@ require 'reportme/mailer'
4
4
  module Reportme
5
5
  class ReportFactory
6
6
 
7
- def self.create(since=Date.today, &block)
8
- rme = ReportFactory.new(since)
7
+ def self.create(&block)
8
+ rme = ReportFactory.new
9
9
  rme.instance_eval(&block)
10
- rme.connect
11
- rme.run
12
10
  rme
13
11
  end
14
12
 
15
- def initialize(since)
16
- raise "since cannot be in the future" if since.future?
17
-
13
+ def initialize
18
14
  @reports = []
19
- @since = since.to_date
20
15
  @subscribtions = {}
21
16
  @report_exists_cache = []
22
- @mailserver = nil
23
- end
24
-
25
- def connect
26
- ActiveRecord::Base.establish_connection(@properties)
27
17
  end
28
18
 
29
19
  def connection(properties)
30
20
  @properties = properties
21
+ ActiveRecord::Base.establish_connection(@properties)
31
22
  end
32
23
 
33
24
  def smtp(settings)
@@ -38,18 +29,28 @@ module Reportme
38
29
  Mailer.deliver_message(from, recipients, subject, body, attachments)
39
30
  end
40
31
 
41
- def init(&block)
32
+ def since(since)
33
+ raise "since has already been set to '#{@since}' and cannot be changed to: '#{since}'" if @since
34
+ raise "since cannot be in the future" if since.future?
42
35
 
36
+ @since = since.to_date
37
+ end
38
+
39
+ def init(&block)
43
40
  raise "only one init block allowed" if @init
44
-
45
41
  @init = block;
46
42
  end
47
43
 
48
- def self.periods(today = Date.today)
44
+ def self.periods(today)
49
45
 
50
46
  r = []
47
+ p = []
48
+
49
+ # period "today" will never be generated for previous days
50
+ p << :today if today.to_date == Date.today
51
+ p += [:day, :week, :calendar_week, :month, :calendar_month]
51
52
 
52
- [:today, :day, :week, :calendar_week, :month, :calendar_month].each do |period|
53
+ p.each do |period|
53
54
 
54
55
  von, bis = case period
55
56
  when :today
@@ -123,7 +124,7 @@ module Reportme
123
124
  @report_exists_cache.clear
124
125
  exec("drop table if exists #{report_information_table_name};")
125
126
 
126
- ReportFactory.periods.each do |period|
127
+ ReportFactory.periods(@since).each do |period|
127
128
  @reports.each do |r|
128
129
  exec("drop table if exists #{r.table_name(period[:name])};")
129
130
  end
@@ -192,7 +193,8 @@ module Reportme
192
193
 
193
194
  def run
194
195
 
195
- @init.call if @init
196
+ @init.call if @init
197
+ @since = Date.today unless @since
196
198
 
197
199
  ensure_report_informations_table_exist
198
200
 
@@ -205,7 +207,6 @@ module Reportme
205
207
  @since += 1.day
206
208
  end
207
209
 
208
-
209
210
  # we will generate all daily reports first.
210
211
  # this will speed up generation of weekly and monthly reports.
211
212
 
@@ -26,8 +26,9 @@ class ReportmeTest < Test::Unit::TestCase
26
26
 
27
27
  opts = defaults.merge(opts)
28
28
 
29
- @rme = Reportme::ReportFactory.create opts[:since] do
29
+ @rme = Reportme::ReportFactory.create do
30
30
 
31
+ since opts[:since]
31
32
  connection :adapter => "mysql", :database => "report_me_test", :username => "root", :password => "root", :host => "localhost", :port => 3306
32
33
 
33
34
  report :visits do
@@ -176,8 +177,8 @@ class ReportmeTest < Test::Unit::TestCase
176
177
  periods = {}
177
178
  Reportme::ReportFactory.periods('2009-06-01'.to_date).each{|p| periods[p[:name]] = p}
178
179
 
179
- assert_equal '2009-06-01 00:00:00'.to_datetime, periods[:today][:von]
180
- assert_equal '2009-06-01 23:59:59'.to_datetime, periods[:today][:bis]
180
+ # assert_equal '2009-06-01 00:00:00'.to_datetime, periods[:today][:von]
181
+ # assert_equal '2009-06-01 23:59:59'.to_datetime, periods[:today][:bis]
181
182
 
182
183
  assert_equal '2009-05-31 00:00:00'.to_datetime, periods[:day][:von]
183
184
  assert_equal '2009-05-31 23:59:59'.to_datetime, periods[:day][:bis]
@@ -202,8 +203,8 @@ class ReportmeTest < Test::Unit::TestCase
202
203
  periods.clear
203
204
  Reportme::ReportFactory.periods('2009-06-24'.to_date).each{|p| periods[p[:name]] = p}
204
205
 
205
- assert_equal '2009-06-24 00:00:00'.to_datetime, periods[:today][:von]
206
- assert_equal '2009-06-24 23:59:59'.to_datetime, periods[:today][:bis]
206
+ # assert_equal '2009-06-24 00:00:00'.to_datetime, periods[:today][:von]
207
+ # assert_equal '2009-06-24 23:59:59'.to_datetime, periods[:today][:bis]
207
208
 
208
209
  assert_equal '2009-06-23 00:00:00'.to_datetime, periods[:day][:von]
209
210
  assert_equal '2009-06-23 23:59:59'.to_datetime, periods[:day][:bis]
@@ -227,8 +228,8 @@ class ReportmeTest < Test::Unit::TestCase
227
228
  periods.clear
228
229
  Reportme::ReportFactory.periods('2009-06-30'.to_date).each{|p| periods[p[:name]] = p}
229
230
 
230
- assert_equal '2009-06-30 00:00:00'.to_datetime, periods[:today][:von]
231
- assert_equal '2009-06-30 23:59:59'.to_datetime, periods[:today][:bis]
231
+ # assert_equal '2009-06-30 00:00:00'.to_datetime, periods[:today][:von]
232
+ # assert_equal '2009-06-30 23:59:59'.to_datetime, periods[:today][:bis]
232
233
 
233
234
  assert_equal '2009-06-29 00:00:00'.to_datetime, periods[:day][:von]
234
235
  assert_equal '2009-06-29 23:59:59'.to_datetime, periods[:day][:bis]
@@ -252,8 +253,8 @@ class ReportmeTest < Test::Unit::TestCase
252
253
  periods.clear
253
254
  Reportme::ReportFactory.periods('2009-05-01'.to_date).each{|p| periods[p[:name]] = p}
254
255
 
255
- assert_equal '2009-05-01 00:00:00'.to_datetime, periods[:today][:von]
256
- assert_equal '2009-05-01 23:59:59'.to_datetime, periods[:today][:bis]
256
+ # assert_equal '2009-05-01 00:00:00'.to_datetime, periods[:today][:von]
257
+ # assert_equal '2009-05-01 23:59:59'.to_datetime, periods[:today][:bis]
257
258
 
258
259
  assert_equal '2009-04-30 00:00:00'.to_datetime, periods[:day][:von]
259
260
  assert_equal '2009-04-30 23:59:59'.to_datetime, periods[:day][:bis]
@@ -277,8 +278,8 @@ class ReportmeTest < Test::Unit::TestCase
277
278
  periods.clear
278
279
  Reportme::ReportFactory.periods('2009-05-15'.to_date).each{|p| periods[p[:name]] = p}
279
280
 
280
- assert_equal '2009-05-15 00:00:00'.to_datetime, periods[:today][:von]
281
- assert_equal '2009-05-15 23:59:59'.to_datetime, periods[:today][:bis]
281
+ # assert_equal '2009-05-15 00:00:00'.to_datetime, periods[:today][:von]
282
+ # assert_equal '2009-05-15 23:59:59'.to_datetime, periods[:today][:bis]
282
283
 
283
284
  assert_equal '2009-05-14 00:00:00'.to_datetime, periods[:day][:von]
284
285
  assert_equal '2009-05-14 23:59:59'.to_datetime, periods[:day][:bis]
@@ -302,8 +303,8 @@ class ReportmeTest < Test::Unit::TestCase
302
303
  periods.clear
303
304
  Reportme::ReportFactory.periods('2009-05-31'.to_date).each{|p| periods[p[:name]] = p}
304
305
 
305
- assert_equal '2009-05-31 00:00:00'.to_datetime, periods[:today][:von]
306
- assert_equal '2009-05-31 23:59:59'.to_datetime, periods[:today][:bis]
306
+ # assert_equal '2009-05-31 00:00:00'.to_datetime, periods[:today][:von]
307
+ # assert_equal '2009-05-31 23:59:59'.to_datetime, periods[:today][:bis]
307
308
 
308
309
  assert_equal '2009-05-30 00:00:00'.to_datetime, periods[:day][:von]
309
310
  assert_equal '2009-05-30 23:59:59'.to_datetime, periods[:day][:bis]
@@ -319,7 +320,17 @@ class ReportmeTest < Test::Unit::TestCase
319
320
 
320
321
  assert_equal '2009-04-01 00:00:00'.to_datetime, periods[:calendar_month][:von]
321
322
  assert_equal '2009-04-30 23:59:59'.to_datetime, periods[:calendar_month][:bis]
323
+
324
+ ##
325
+ # today
326
+ ##
322
327
 
328
+ periods.clear
329
+ today = Date.today
330
+ Reportme::ReportFactory.periods(today).each{|p| periods[p[:name]] = p}
331
+
332
+ assert_equal "#{today.strftime('%Y-%m-%d')} 00:00:00".to_datetime, periods[:today][:von]
333
+ assert_equal "#{today.strftime('%Y-%m-%d')} 23:59:59".to_datetime, periods[:today][:bis]
323
334
 
324
335
  end
325
336
 
@@ -411,4 +422,16 @@ class ReportmeTest < Test::Unit::TestCase
411
422
  end
412
423
  end
413
424
  end
425
+
426
+ should "fail on multiple since calls" do
427
+
428
+ rme = create_visit_report_factory
429
+ # 'since' will be implicitly called by ower testing factory method above
430
+ # any further call should fails
431
+
432
+ assert_raise RuntimeError do
433
+ rme.since 20.days.ago
434
+ end
435
+ end
436
+
414
437
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jzimmek-reportme
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Zimmek
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-25 00:00:00 -07:00
12
+ date: 2009-06-27 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15