best_boy 1.3.0 → 2.0.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.
Files changed (69) hide show
  1. data/README.md +36 -3
  2. data/Rakefile +45 -7
  3. data/app/controllers/best_boy/best_boy_events_controller.rb +147 -98
  4. data/app/helpers/best_boy/best_boy_view_helper.rb +9 -0
  5. data/app/views/best_boy/best_boy_events/details.html.erb +33 -27
  6. data/app/views/best_boy/best_boy_events/monthly_details.html.erb +9 -9
  7. data/app/views/best_boy/best_boy_events/stats.html.erb +20 -19
  8. data/lib/best_boy/engine.rb +2 -0
  9. data/lib/best_boy/models/active_record/best_boy/eventable.rb +19 -0
  10. data/lib/best_boy/models/active_record/best_boy_day_report.rb +65 -0
  11. data/lib/best_boy/models/active_record/best_boy_event.rb +1 -11
  12. data/lib/best_boy/models/active_record/best_boy_month_report.rb +63 -0
  13. data/lib/best_boy/version.rb +1 -1
  14. data/lib/generators/active_record/best_boy_generator.rb +4 -1
  15. data/lib/generators/active_record/templates/create_best_boy_reports.rb +30 -0
  16. data/lib/tasks/recover_report_history.rake +146 -0
  17. data/spec/{best_boy → controllers}/best_boy_controller_spec.rb +6 -4
  18. data/spec/dummy/app/views/test_events/index.html.haml +9 -1
  19. data/spec/dummy/config/routes.rb +1 -0
  20. data/spec/dummy/db/migrate/20131108085915_create_best_boy_reports.rb +30 -0
  21. data/spec/dummy/db/schema.rb +27 -1
  22. data/spec/dummy/db/test.sqlite3 +0 -0
  23. data/spec/dummy/log/development.log +10092 -0
  24. data/spec/dummy/log/test.log +531 -0
  25. data/spec/dummy/tmp/cache/assets/development/sass/f99cb4f6f36f128b2d6950c813eec72c66616bfc/bootstrap.scssc +0 -0
  26. data/spec/dummy/tmp/cache/assets/development/sprockets/01af51e20498d87feb18694bed0d0731 +0 -0
  27. data/spec/dummy/tmp/cache/assets/development/sprockets/057daf732c672b9e0ec8bd233ec79077 +0 -0
  28. data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  29. data/spec/dummy/tmp/cache/assets/development/sprockets/1565c81151c1e0fe577f787a645bca3d +0 -0
  30. data/spec/dummy/tmp/cache/assets/development/sprockets/1c90620581903652712500bb92915909 +0 -0
  31. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  32. data/spec/dummy/tmp/cache/assets/development/sprockets/3241270f308313221453f51980c07883 +0 -0
  33. data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  34. data/spec/dummy/tmp/cache/assets/development/sprockets/3a59d6acf2f4543a36d946d653b08dab +0 -0
  35. data/spec/dummy/tmp/cache/assets/development/sprockets/3a5f8aba9c98833836df55cdc5502ee8 +0 -0
  36. data/spec/dummy/tmp/cache/assets/development/sprockets/42804a4f90448633879c06a33e49f4e6 +0 -0
  37. data/spec/dummy/tmp/cache/assets/development/sprockets/48279ff6b6f65f85e766c3a7ae0c71f6 +0 -0
  38. data/spec/dummy/tmp/cache/assets/development/sprockets/642b8ba757f92502a3a3281a956eec2a +0 -0
  39. data/spec/dummy/tmp/cache/assets/development/sprockets/64fe0e7bbf53d3cf292e85e123137bcb +0 -0
  40. data/spec/dummy/tmp/cache/assets/development/sprockets/77e01a708457c1d4aac9446e173321a1 +0 -0
  41. data/spec/dummy/tmp/cache/assets/development/sprockets/8ac87e607a25fc208fc1da0c60b24b8b +0 -0
  42. data/spec/dummy/tmp/cache/assets/development/sprockets/8dab559778ce584628d484b9d919cfa8 +0 -0
  43. data/spec/dummy/tmp/cache/assets/development/sprockets/8fde9b9595ed926214e7858402849bb2 +0 -0
  44. data/spec/dummy/tmp/cache/assets/development/sprockets/c9e7400c0b4cf9165368acf909971237 +0 -0
  45. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  46. data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  47. data/spec/dummy/tmp/cache/assets/development/sprockets/e58e48ebcd3216893f3b053ee6a3d7eb +0 -0
  48. data/spec/dummy/tmp/cache/assets/development/sprockets/e5cfb1a438298274f827c0cbea06e7dc +0 -0
  49. data/spec/dummy/tmp/cache/assets/development/sprockets/f14dc22e71f0438b9fc154ec08da7c10 +0 -0
  50. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  51. data/spec/models/best_boy_event_spec.rb +20 -0
  52. data/spec/models/day_report_spec.rb +115 -0
  53. data/spec/models/eventable_spec.rb +51 -0
  54. data/spec/models/month_report_spec.rb +113 -0
  55. data/spec/spec_helper.rb +96 -40
  56. metadata +110 -123
  57. data/.gitignore +0 -10
  58. data/.rspec +0 -1
  59. data/.travis.yml +0 -3
  60. data/Gemfile +0 -3
  61. data/LICENSE.txt +0 -20
  62. data/best_boy.gemspec +0 -38
  63. data/db/bestboy.db +0 -0
  64. data/spec/best_boy/best_boy_event_spec.rb +0 -62
  65. data/spec/best_boy/eventable_spec.rb +0 -20
  66. data/spec/dummy/app/mailers/.gitkeep +0 -0
  67. data/spec/dummy/app/models/.gitkeep +0 -0
  68. data/spec/dummy/db/development.sqlite3 +0 -0
  69. data/spec/dummy/lib/assets/.gitkeep +0 -0
data/best_boy.gemspec DELETED
@@ -1,38 +0,0 @@
1
- # encoding: utf-8
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "best_boy/version"
4
-
5
- Gem::Specification.new do |s|
6
- s.name = "best_boy"
7
- s.version = BestBoy::VERSION
8
- s.platform = Gem::Platform::RUBY
9
- s.licenses =["MIT"]
10
- s.authors = ["Christoph Seydel"]
11
- s.email = ["christoph.seydel@me.com"]
12
- s.homepage = "https://github.com/absolventa/best_boy"
13
- s.summary = %q{a simple event driven logging for models}
14
- s.description = %q{Hybrid action logging, consisting of standard and custom logging.}
15
-
16
- s.rubyforge_project = "best_boy"
17
- s.required_rubygems_version = ">= 1.3.6"
18
-
19
- s.add_dependency('kaminari')
20
- s.add_dependency('google_visualr')
21
-
22
- s.add_development_dependency('rails', '~> 4.0.0')
23
- s.add_development_dependency('foreman', '~> 0.63.0')
24
- s.add_development_dependency('thin', '~> 1.5.1')
25
- s.add_development_dependency('sqlite3', '~> 1.3.6')
26
- s.add_development_dependency('rake', '~> 10.0.3')
27
- s.add_development_dependency('rspec', '~> 2.13.0')
28
- s.add_development_dependency('shoulda', '~> 3.4.0')
29
- s.add_development_dependency "haml"
30
- s.add_development_dependency 'kaminari', "~> 0.14.1"
31
- s.add_development_dependency 'sass-rails', '~> 4.0.0'
32
- s.add_development_dependency "bootstrap-sass", "~> 2.1.0.1"
33
-
34
- s.files = `git ls-files`.split("\n")
35
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
36
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
37
- s.require_paths = ["lib"]
38
- end
data/db/bestboy.db DELETED
Binary file
@@ -1,62 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe BestBoyEvent, 'with creating' do
4
- it "should have valid model" do
5
- example = Example.create
6
- best_boy_event = BestBoyEvent.create(:event => "create")
7
- best_boy_event.owner = example
8
- best_boy_event.should be_valid
9
- end
10
- end
11
-
12
- describe BestBoyEvent, 'with associations' do
13
- it { should belong_to(:owner) }
14
- end
15
-
16
- describe BestBoyEvent, 'with validations' do
17
- it "should require a event" do
18
- BestBoyEvent.create(:event => "").should_not be_valid
19
- end
20
- end
21
-
22
- describe BestBoyEvent, 'with scopes' do
23
- def setup_data_aggreagations times, created_at
24
- ActiveRecord::Base.connection.execute("DELETE FROM 'best_boy_events'")
25
- example = Example.create
26
- (1..times).each do
27
- example.trigger_best_boy_event("year_test")
28
- example.best_boy_events.last.update_attribute(:created_at, created_at)
29
- end
30
- end
31
-
32
- it "should return correct per_year scope" do
33
- setup_data_aggreagations 3, Time.now - 2.years
34
- BestBoyEvent.per_year(Time.now - 2.years).count.should eql(3)
35
- BestBoyEvent.per_year(Time.now - 2.years).last.created_at.to_date.year.should eql((Time.now - 2.years).year)
36
- end
37
-
38
- it "should return correct per_month scope" do
39
- setup_data_aggreagations 4, Time.now - 2.month
40
- BestBoyEvent.per_month(Time.now - 2.month).count.should eql(4)
41
- BestBoyEvent.per_month(Time.now - 2.month).last.created_at.to_date.month.should eql((Time.now - 2.month).month)
42
- end
43
-
44
- it "should return correct per_week scope" do
45
- setup_data_aggreagations 5, Time.now - 2.weeks
46
- BestBoyEvent.per_week(Time.now - 2.weeks).count.should eql(5)
47
- end
48
-
49
- it "should return correct per_month scope" do
50
- setup_data_aggreagations 7, Time.now - 2.days
51
- BestBoyEvent.per_day(Time.now - 2.days).count.should eql(7)
52
- BestBoyEvent.per_day(Time.now - 2.days).last.created_at.to_date.day.should eql((Time.now - 2.days).day)
53
- end
54
-
55
- it "should return 0 for wrong dates" do
56
- setup_data_aggreagations 5, Time.now - 2.weeks
57
- BestBoyEvent.per_year(Time.now - 2.years).count.should eql(0)
58
- BestBoyEvent.per_month(Time.now - 2.month).count.should eql(0)
59
- BestBoyEvent.per_week(Time.now - 3.weeks).count.should eql(0)
60
- BestBoyEvent.per_day(Time.now - 2.days).count.should eql(0)
61
- end
62
- end
@@ -1,20 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe BestBoy::Eventable do
4
- before(:each) do
5
- @example = Example.create
6
- end
7
-
8
- it "should send valid create event" do
9
- best_boy_event = @example.best_boy_events.first.should_not be_nil
10
- end
11
-
12
- it "should send valid destroy event" do
13
- @example.destroy
14
- BestBoyEvent.where(:owner_type => "User", :event => "destroy").should_not be_nil
15
- end
16
-
17
- it "should be an eventable" do
18
- @example.respond_to?("eventable?").should eql(true)
19
- end
20
- end
File without changes
File without changes
Binary file
File without changes