log_book 0.0.1 → 0.1.1
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/.gitignore +1 -1
- data/.ruby-version +1 -0
- data/Gemfile +1 -3
- data/README.md +12 -2
- data/lib/generators/log_book/migration_generator.rb +3 -3
- data/lib/generators/log_book/templates/create_log_book_events.rb +2 -2
- data/lib/log_book/event.rb +2 -0
- data/lib/log_book/plugin.rb +10 -18
- data/lib/log_book/utils.rb +16 -0
- data/lib/log_book/version.rb +1 -1
- data/lib/log_book.rb +6 -9
- data/log_book.gemspec +3 -2
- data/test/log_book_test.rb +72 -11
- data/test/models.rb +4 -0
- data/test/plugin_test.rb +31 -0
- data/test/test_helper.rb +5 -3
- metadata +74 -25
- data/.rvmrc +0 -1
- data/.rvmrc.example +0 -1
- data/test/db/log_book.sqlite +0 -0
- data/test/history_event_test.rb +0 -54
data/.gitignore
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.9.3-p286
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -8,9 +8,16 @@ Add this line to your application's Gemfile:
|
|
8
8
|
|
9
9
|
gem "log_book"
|
10
10
|
|
11
|
+
As the Model should be loaded after ActiveReccord has established the connection you have to add this:
|
12
|
+
|
13
|
+
# config/application.rb
|
14
|
+
config.after_initialize do
|
15
|
+
require "log_book/event"
|
16
|
+
end
|
17
|
+
|
11
18
|
### Create the table
|
12
19
|
|
13
|
-
rails generate
|
20
|
+
rails generate log_book:migration
|
14
21
|
rake db:migrate
|
15
22
|
|
16
23
|
### ActsOnTaggableOn dependency
|
@@ -31,7 +38,7 @@ For example:
|
|
31
38
|
## ActiveRecord integration
|
32
39
|
|
33
40
|
class MyModel < ActiveRecord::Base
|
34
|
-
|
41
|
+
log_book
|
35
42
|
end
|
36
43
|
|
37
44
|
MyModel.create! # => LogBook created
|
@@ -43,6 +50,9 @@ If you want to include _who executes the action_ use the special attribute `log_
|
|
43
50
|
my_model.log_book_historian = current_user
|
44
51
|
my_model.save!
|
45
52
|
|
53
|
+
## TODO
|
54
|
+
|
55
|
+
|
46
56
|
## Sate of the art
|
47
57
|
|
48
58
|
Beta version but already used in production environments
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require "rails/generators"
|
2
2
|
|
3
|
-
class
|
3
|
+
class LogBook::MigrationGenerator < Rails::Generators::Base
|
4
4
|
include Rails::Generators::Migration
|
5
5
|
|
6
|
-
desc "Generates migration for
|
6
|
+
desc "Generates migration for LogBook::Event model"
|
7
7
|
|
8
8
|
def self.source_root
|
9
9
|
File.join(File.dirname(__FILE__), "templates")
|
@@ -20,6 +20,6 @@ class GuineaPig::MigrationGenerator < Rails::Generators::Base
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def copy_migration
|
23
|
-
migration_template "
|
23
|
+
migration_template "create_log_book_events.rb", "db/migrate/create_log_book_events.rb"
|
24
24
|
end
|
25
25
|
end
|
@@ -5,13 +5,13 @@ class CreateLogBookEvents < ActiveRecord::Migration
|
|
5
5
|
t.string :historian_type
|
6
6
|
t.integer :historizable_id
|
7
7
|
t.string :historizable_type
|
8
|
-
t.
|
8
|
+
t.text :text, :null => false
|
9
9
|
|
10
10
|
t.timestamps
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.down
|
15
|
-
drop_table :
|
15
|
+
drop_table :log_book_events
|
16
16
|
end
|
17
17
|
end
|
data/lib/log_book/event.rb
CHANGED
data/lib/log_book/plugin.rb
CHANGED
@@ -5,10 +5,13 @@ module LogBook::Plugin
|
|
5
5
|
end
|
6
6
|
|
7
7
|
module ClassMethods
|
8
|
-
|
8
|
+
|
9
|
+
def log_book(opts = {})
|
9
10
|
after_create :log_book_event_on_create
|
10
11
|
after_update :log_book_event_on_update
|
11
|
-
|
12
|
+
before_destroy :log_book_event_on_destroy
|
13
|
+
|
14
|
+
has_many :log_book_events, :class_name => "LogBook::Event", :as => :historizable, :dependent => (opts[:dependent] || :nullify)
|
12
15
|
|
13
16
|
attr_accessor :log_book_historian
|
14
17
|
end
|
@@ -20,26 +23,15 @@ module LogBook::Plugin
|
|
20
23
|
end
|
21
24
|
|
22
25
|
def log_book_event_on_update
|
23
|
-
LogBook.updated(self.log_book_historian, self)
|
26
|
+
LogBook.updated(self.log_book_historian, self) unless changes.empty?
|
24
27
|
end
|
25
28
|
|
26
29
|
def log_book_event_on_destroy
|
27
30
|
LogBook.destroyed(self.log_book_historian, self)
|
28
31
|
end
|
29
|
-
|
30
|
-
def pretty_changes
|
31
|
-
result =
|
32
|
-
self.previous_changes.reject { |k,v| k == "updated_at" || k =~ /password/ || k == "perishable_token" || k == "persistence_token" }.map do |k,v|
|
33
|
-
old_value = v[0]
|
34
|
-
new_value = v[1]
|
35
|
-
|
36
|
-
old_value = old_value.to_s( :localdb ) if old_value.instance_of? ActiveSupport::TimeWithZone
|
37
|
-
new_value = new_value.to_s( :localdb ) if new_value.instance_of? ActiveSupport::TimeWithZone
|
38
|
-
|
39
|
-
"#{k}[#{old_value} -> #{new_value}]"
|
40
|
-
end.join( ", " )
|
41
|
-
|
42
|
-
result
|
43
|
-
end
|
44
32
|
end
|
33
|
+
end
|
34
|
+
|
35
|
+
ActiveSupport.on_load(:active_record) do
|
36
|
+
include LogBook::Plugin
|
45
37
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module LogBook::Utils
|
2
|
+
def self.pretty_changes(model)
|
3
|
+
result =
|
4
|
+
model.changes.reject { |k,v| k == "updated_at" || k =~ /password/ || k == "perishable_token" || k == "persistence_token" }.map do |k,v|
|
5
|
+
old_value = v[0]
|
6
|
+
new_value = v[1]
|
7
|
+
|
8
|
+
old_value = old_value.to_s( :localdb ) if old_value.instance_of? ActiveSupport::TimeWithZone
|
9
|
+
new_value = new_value.to_s( :localdb ) if new_value.instance_of? ActiveSupport::TimeWithZone
|
10
|
+
|
11
|
+
"#{k}[#{old_value} -> #{new_value}]"
|
12
|
+
end.join( ", " )
|
13
|
+
|
14
|
+
result
|
15
|
+
end
|
16
|
+
end
|
data/lib/log_book/version.rb
CHANGED
data/lib/log_book.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require "active_record"
|
2
|
+
require "active_support/core_ext/module"
|
3
|
+
require "protected_attributes"
|
2
4
|
require "acts-as-taggable-on"
|
3
5
|
require_relative "log_book/version"
|
4
|
-
require_relative "log_book/event"
|
5
6
|
require_relative "log_book/plugin"
|
6
|
-
|
7
|
+
require_relative "log_book/utils"
|
7
8
|
|
8
9
|
module LogBook
|
9
10
|
OPERATIONS = {
|
@@ -26,20 +27,20 @@ module LogBook
|
|
26
27
|
)
|
27
28
|
end
|
28
29
|
|
30
|
+
private
|
31
|
+
|
29
32
|
def self.created(historian, historizable)
|
30
33
|
LogBook.event(historian, historizable, "#{historizable.class.name} created", LogBook::OPERATIONS[:create])
|
31
34
|
end
|
32
35
|
|
33
36
|
def self.updated(historian, historizable)
|
34
|
-
LogBook.event(historian, historizable, "#{historizable.class.name} updated [#{
|
37
|
+
LogBook.event(historian, historizable, "#{historizable.class.name} updated [#{LogBook::Utils.pretty_changes(historizable)}]", LogBook::OPERATIONS[:update])
|
35
38
|
end
|
36
39
|
|
37
40
|
def self.destroyed(historian, historizable)
|
38
41
|
LogBook.event(historian, historizable, "#{historizable.class.name} destroyed", LogBook::OPERATIONS[:destroy])
|
39
42
|
end
|
40
43
|
|
41
|
-
private
|
42
|
-
|
43
44
|
def self.scope_tag(historian)
|
44
45
|
historian.class.name.underscore
|
45
46
|
end
|
@@ -49,7 +50,3 @@ module LogBook
|
|
49
50
|
end
|
50
51
|
end
|
51
52
|
|
52
|
-
ActiveSupport.on_load(:active_record) do
|
53
|
-
include LogBook::Plugin
|
54
|
-
end
|
55
|
-
|
data/log_book.gemspec
CHANGED
@@ -18,8 +18,9 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_runtime_dependency "rails", "~>
|
22
|
-
spec.add_runtime_dependency "
|
21
|
+
spec.add_runtime_dependency "rails", "~> 4.0.2"
|
22
|
+
spec.add_runtime_dependency "protected_attributes"
|
23
|
+
spec.add_runtime_dependency "acts-as-taggable-on", "2.4.1"
|
23
24
|
|
24
25
|
spec.add_development_dependency "bundler", "~> 1.3"
|
25
26
|
spec.add_development_dependency "rake"
|
data/test/log_book_test.rb
CHANGED
@@ -7,25 +7,86 @@ class LogBookTest < MiniTest::Unit::TestCase
|
|
7
7
|
Item.destroy_all
|
8
8
|
|
9
9
|
@user = User.create!(:name => "User Name")
|
10
|
-
@item = Item.create!(:title => "Item Title")
|
10
|
+
@item = Item.create!(:title => "Item Title", :log_book_historian => @user)
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
14
|
-
|
15
|
-
|
13
|
+
def test_event
|
14
|
+
assert_difference "LogBook::Event.count", 1 do
|
15
|
+
LogBook.event(@user, @item, "Item wadus", LogBook::OPERATIONS[:create])
|
16
|
+
end
|
17
|
+
|
18
|
+
log_book = LogBook::Event.last
|
19
|
+
assert_equal(@user, log_book.historian)
|
20
|
+
assert_equal(@item, log_book.historizable)
|
21
|
+
assert_equal("Item wadus", log_book.text)
|
22
|
+
assert_equal(["user", "item", "create"].sort, log_book.tag_list.sort)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_event_with_nils
|
26
|
+
assert_difference "LogBook::Event.count", 1 do
|
27
|
+
LogBook.event(nil, nil, "Item wadus", nil)
|
28
|
+
end
|
29
|
+
|
30
|
+
log_book = LogBook::Event.last
|
31
|
+
assert_equal(nil, log_book.historian)
|
32
|
+
assert_equal(nil, log_book.historizable)
|
33
|
+
assert_equal("Item wadus", log_book.text)
|
34
|
+
assert_equal([], log_book.tag_list)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_created
|
38
|
+
item = Item.new(:title => "Item Title")
|
39
|
+
item.log_book_historian = @user
|
40
|
+
|
41
|
+
LogBook.expects(:event).with(@user, item, "Item created", LogBook::OPERATIONS[:create])
|
42
|
+
|
16
43
|
item.save!
|
17
44
|
end
|
18
45
|
|
19
|
-
def
|
20
|
-
@item
|
21
|
-
|
22
|
-
@item.update_attributes(:title => "Other Title")
|
46
|
+
def test_updated
|
47
|
+
LogBook.expects(:event).with(@user, @item, "Item updated [title[Item Title -> Other Title]]", LogBook::OPERATIONS[:update])
|
48
|
+
|
49
|
+
@item.update_attributes!(:title => "Other Title")
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_item_destroyed
|
53
|
+
LogBook.expects(:event).with(@user, @item, "Item destroyed", LogBook::OPERATIONS[:destroy])
|
54
|
+
|
55
|
+
@item.destroy
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_has_many_log_book_events
|
59
|
+
LogBook::Event.destroy_all
|
60
|
+
|
61
|
+
log_book_event_1 = LogBook.event(@user, @item, "Item wadus", LogBook::OPERATIONS[:create])
|
62
|
+
log_book_event_2 = LogBook.event(@user, @item, "Item wadus", LogBook::OPERATIONS[:update])
|
63
|
+
|
64
|
+
@item.reload
|
65
|
+
|
66
|
+
assert_equal(2, @item.log_book_events.count)
|
67
|
+
assert_equal(log_book_event_1, @item.log_book_events.first)
|
68
|
+
assert_equal(log_book_event_2, @item.log_book_events.last)
|
23
69
|
end
|
24
70
|
|
25
|
-
def
|
26
|
-
|
27
|
-
|
71
|
+
def test_log_book_events_nullify_on_historizable_destroy
|
72
|
+
log_book_event = LogBook.event(@user, @item, "Item wadus", LogBook::OPERATIONS[:create])
|
73
|
+
|
28
74
|
@item.destroy
|
75
|
+
|
76
|
+
log_book_event.reload
|
77
|
+
|
78
|
+
assert_equal(true, log_book_event.historizable_id.nil?)
|
79
|
+
assert_equal(true, log_book_event.historizable.nil?)
|
80
|
+
assert_equal("Item", log_book_event.historizable_type)
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_log_book_events_destroy_on_historizable_destroy
|
84
|
+
item_with_opts = ItemWithOpts.new
|
85
|
+
log_book_event = LogBook.event(@user, item_with_opts, "Item wadus", LogBook::OPERATIONS[:create])
|
86
|
+
|
87
|
+
item_with_opts.destroy
|
88
|
+
|
89
|
+
assert_equal(false, LogBook::Event.exists?(log_book_event.id))
|
29
90
|
end
|
30
91
|
end
|
31
92
|
|
data/test/models.rb
CHANGED
data/test/plugin_test.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative "test_helper"
|
2
|
+
|
3
|
+
class PluginTest < MiniTest::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
LogBook::Event.destroy_all
|
6
|
+
User.destroy_all
|
7
|
+
Item.destroy_all
|
8
|
+
|
9
|
+
@user = User.create!(:name => "User Name")
|
10
|
+
@item = Item.create!(:title => "Item Title")
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_event_on_create
|
14
|
+
item = Item.new(:log_book_historian => @user)
|
15
|
+
LogBook.expects(:created).with(@user, item)
|
16
|
+
item.save!
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_event_on_update
|
20
|
+
@item.log_book_historian = @user
|
21
|
+
LogBook.expects(:updated).with(@user, @item)
|
22
|
+
@item.update_attributes(:title => "Other Title")
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_event_on_destroy
|
26
|
+
@item.log_book_historian = @user
|
27
|
+
LogBook.expects(:destroyed).with(@user, @item)
|
28
|
+
@item.destroy
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
data/test/test_helper.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require "minitest/unit"
|
2
2
|
require "minitest/autorun"
|
3
3
|
require "mocha/setup"
|
4
|
-
require "assert_difference"
|
5
4
|
require "active_record"
|
5
|
+
require "active_support/core_ext/module"
|
6
|
+
require "assert_difference"
|
6
7
|
require "acts-as-taggable-on"
|
8
|
+
require_relative "../lib/log_book"
|
7
9
|
|
8
10
|
FileUtils.rm("#{File.dirname(__FILE__)}/db/log_book.sqlite", :force => true)
|
9
11
|
|
@@ -12,11 +14,11 @@ ActiveRecord::Base.establish_connection(
|
|
12
14
|
:database => "#{File.dirname(__FILE__)}/db/log_book.sqlite"
|
13
15
|
)
|
14
16
|
|
17
|
+
require_relative "../lib/log_book/event"
|
18
|
+
|
15
19
|
require_relative "../lib/generators/log_book/templates/create_log_book_events"
|
16
20
|
CreateLogBookEvents.up
|
17
21
|
|
18
|
-
require_relative "../lib/log_book"
|
19
|
-
|
20
22
|
load("#{File.dirname(__FILE__)}/schema.rb")
|
21
23
|
load("#{File.dirname(__FILE__)}/models.rb")
|
22
24
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: log_book
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,27 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-12-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 4.0.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 4.0.2
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
requirement:
|
31
|
+
name: protected_attributes
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,31 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: acts-as-taggable-on
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - '='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.4.1
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.4.1
|
36
62
|
- !ruby/object:Gem::Dependency
|
37
63
|
name: bundler
|
38
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
39
65
|
none: false
|
40
66
|
requirements:
|
41
67
|
- - ~>
|
@@ -43,10 +69,15 @@ dependencies:
|
|
43
69
|
version: '1.3'
|
44
70
|
type: :development
|
45
71
|
prerelease: false
|
46
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.3'
|
47
78
|
- !ruby/object:Gem::Dependency
|
48
79
|
name: rake
|
49
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
50
81
|
none: false
|
51
82
|
requirements:
|
52
83
|
- - ! '>='
|
@@ -54,10 +85,15 @@ dependencies:
|
|
54
85
|
version: '0'
|
55
86
|
type: :development
|
56
87
|
prerelease: false
|
57
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
58
94
|
- !ruby/object:Gem::Dependency
|
59
95
|
name: mocha
|
60
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
61
97
|
none: false
|
62
98
|
requirements:
|
63
99
|
- - ! '>='
|
@@ -65,10 +101,15 @@ dependencies:
|
|
65
101
|
version: '0'
|
66
102
|
type: :development
|
67
103
|
prerelease: false
|
68
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
69
110
|
- !ruby/object:Gem::Dependency
|
70
111
|
name: sqlite3
|
71
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
72
113
|
none: false
|
73
114
|
requirements:
|
74
115
|
- - ! '>='
|
@@ -76,10 +117,15 @@ dependencies:
|
|
76
117
|
version: '0'
|
77
118
|
type: :development
|
78
119
|
prerelease: false
|
79
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
80
126
|
- !ruby/object:Gem::Dependency
|
81
127
|
name: assert_difference
|
82
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
83
129
|
none: false
|
84
130
|
requirements:
|
85
131
|
- - ! '>='
|
@@ -87,7 +133,12 @@ dependencies:
|
|
87
133
|
version: '0'
|
88
134
|
type: :development
|
89
135
|
prerelease: false
|
90
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
91
142
|
description: Storing an events log book
|
92
143
|
email:
|
93
144
|
- fguillen.mail@gmail.com
|
@@ -96,8 +147,7 @@ extensions: []
|
|
96
147
|
extra_rdoc_files: []
|
97
148
|
files:
|
98
149
|
- .gitignore
|
99
|
-
- .
|
100
|
-
- .rvmrc.example
|
150
|
+
- .ruby-version
|
101
151
|
- Gemfile
|
102
152
|
- LICENSE.txt
|
103
153
|
- README.md
|
@@ -107,13 +157,13 @@ files:
|
|
107
157
|
- lib/log_book.rb
|
108
158
|
- lib/log_book/event.rb
|
109
159
|
- lib/log_book/plugin.rb
|
160
|
+
- lib/log_book/utils.rb
|
110
161
|
- lib/log_book/version.rb
|
111
162
|
- log_book.gemspec
|
112
163
|
- test/db/.keep
|
113
|
-
- test/db/log_book.sqlite
|
114
|
-
- test/history_event_test.rb
|
115
164
|
- test/log_book_test.rb
|
116
165
|
- test/models.rb
|
166
|
+
- test/plugin_test.rb
|
117
167
|
- test/schema.rb
|
118
168
|
- test/test_helper.rb
|
119
169
|
homepage: https://github.com/fguillen/LogBook
|
@@ -137,15 +187,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
187
|
version: '0'
|
138
188
|
requirements: []
|
139
189
|
rubyforge_project:
|
140
|
-
rubygems_version: 1.8.
|
190
|
+
rubygems_version: 1.8.23
|
141
191
|
signing_key:
|
142
192
|
specification_version: 3
|
143
193
|
summary: Storing an events log book
|
144
194
|
test_files:
|
145
195
|
- test/db/.keep
|
146
|
-
- test/db/log_book.sqlite
|
147
|
-
- test/history_event_test.rb
|
148
196
|
- test/log_book_test.rb
|
149
197
|
- test/models.rb
|
198
|
+
- test/plugin_test.rb
|
150
199
|
- test/schema.rb
|
151
200
|
- test/test_helper.rb
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm use --create 1.9.3-p286@log_book
|
data/.rvmrc.example
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm use --create 1.9.3-p286@log_book
|
data/test/db/log_book.sqlite
DELETED
Binary file
|
data/test/history_event_test.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
require_relative "test_helper"
|
2
|
-
|
3
|
-
class LogBookTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
LogBook::Event.destroy_all
|
6
|
-
User.destroy_all
|
7
|
-
Item.destroy_all
|
8
|
-
|
9
|
-
@user = User.create!(:name => "User Name")
|
10
|
-
@item = Item.create!(:title => "Item Title")
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_event
|
14
|
-
assert_difference "LogBook::Event.count", 1 do
|
15
|
-
LogBook.event(@user, @item, "Item wadus", LogBook::OPERATIONS[:create])
|
16
|
-
end
|
17
|
-
|
18
|
-
log_book = LogBook::Event.last
|
19
|
-
assert_equal(@user, log_book.historian)
|
20
|
-
assert_equal(@item, log_book.historizable)
|
21
|
-
assert_equal("Item wadus", log_book.text)
|
22
|
-
assert_equal(["user", "item", "create"].sort, log_book.tag_list.sort)
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_event_with_nils
|
26
|
-
assert_difference "LogBook::Event.count", 1 do
|
27
|
-
LogBook.event(nil, nil, "Item wadus", nil)
|
28
|
-
end
|
29
|
-
|
30
|
-
log_book = LogBook::Event.last
|
31
|
-
assert_equal(nil, log_book.historian)
|
32
|
-
assert_equal(nil, log_book.historizable)
|
33
|
-
assert_equal("Item wadus", log_book.text)
|
34
|
-
assert_equal([], log_book.tag_list)
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_created
|
38
|
-
LogBook.expects(:event).with("historian", @item, "Item created", LogBook::OPERATIONS[:create])
|
39
|
-
LogBook.created("historian", @item)
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_updated
|
43
|
-
@item.update_attributes!(:title => "Other Title")
|
44
|
-
|
45
|
-
LogBook.expects(:event).with(@user, @item, "Item updated [title[Item Title -> Other Title]]", LogBook::OPERATIONS[:update])
|
46
|
-
LogBook.updated(@user, @item)
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_item_destroyed
|
50
|
-
LogBook.expects(:event).with(@user, @item, "Item destroyed", LogBook::OPERATIONS[:destroy])
|
51
|
-
LogBook.destroyed(@user, @item)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|