giraffesoft-timeline_fu 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ pkg
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 James Golick
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -37,7 +37,7 @@ You can supply a few parameters to fires, two of them are mandatory.
37
37
  The rest all fit neatly in an options hash.
38
38
 
39
39
  - :on => [ActiveRecord event]
40
- - mandatory. You use it to specify whether you want the event created after a create, update or destroy.
40
+ - mandatory. You use it to specify whether you want the event created after a create, update or destroy. You can also supply an array of events, e.g. [:create, :update].
41
41
  - :actor is your way of specifying who took this action.
42
42
  - In the example, post.author is going to be this person.
43
43
  - :subject is automatically set to self, which is good most of the time. You can however override it if you need to, using :subject.
@@ -0,0 +1,36 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+
5
+ desc 'Default: run unit tests.'
6
+ task :default => :test
7
+
8
+ desc 'Test the timeline_fu plugin.'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'lib'
11
+ t.pattern = 'test/**/*_test.rb'
12
+ t.verbose = true
13
+ end
14
+
15
+ begin
16
+ require 'jeweler'
17
+ Jeweler::Tasks.new do |s|
18
+ s.name = "timeline_fu"
19
+ s.summary = %Q{Easily build timelines, much like GitHub's news feed}
20
+ s.email = "james@giraffesoft.ca"
21
+ s.homepage = "http://github.com/giraffesoft/timeline_fu"
22
+ s.description = "Easily build timelines, much like GitHub's news feed"
23
+ s.authors = ["James Golick", "Mathieu Martin", "Francois Beausoleil"]
24
+ end
25
+ rescue LoadError
26
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
27
+ end
28
+
29
+ desc 'Generate documentation for the timeline_fu plugin.'
30
+ Rake::RDocTask.new(:rdoc) do |rdoc|
31
+ rdoc.rdoc_dir = 'rdoc'
32
+ rdoc.title = 'TimelineFu'
33
+ rdoc.options << '--line-numbers' << '--inline-source'
34
+ rdoc.rdoc_files.include('README*')
35
+ rdoc.rdoc_files.include('lib/**/*.rb')
36
+ end
@@ -1,4 +1,4 @@
1
1
  ---
2
- :minor: 2
3
- :patch: 0
4
2
  :major: 0
3
+ :minor: 3
4
+ :patch: 0
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'timeline_fu'
@@ -7,6 +7,13 @@ module TimelineFu
7
7
  module ClassMethods
8
8
  def fires(event_type, opts)
9
9
  raise ArgumentError, "Argument :on is mandatory" unless opts.has_key?(:on)
10
+
11
+ # Array provided, set multiple callbacks
12
+ if opts[:on].kind_of?(Array)
13
+ opts[:on].each { |on| fires(event_type, opts.merge({:on => on})) }
14
+ return
15
+ end
16
+
10
17
  opts[:subject] = :self unless opts.has_key?(:subject)
11
18
 
12
19
  method_name = :"fire_#{event_type}_after_#{opts[:on]}"
@@ -0,0 +1,11 @@
1
+ require 'timeline_fu/matchers'
2
+ require 'timeline_fu/macros'
3
+
4
+ module ActiveSupport
5
+ class TestCase
6
+ include TimelineFu::Matchers
7
+ if ! defined? Spec
8
+ extend TimelineFu::Macros
9
+ end
10
+ end
11
+ end
@@ -8,7 +8,10 @@ class FiresTest < Test::Unit::TestCase
8
8
 
9
9
  def test_should_fire_the_appropriate_callback
10
10
  @list = List.new(hash_for_list(:author => @james));
11
- TimelineEvent.expects(:create!).with(:actor => @james, :subject => @list, :event_type => 'list_created')
11
+ TimelineEvent.expects(:create!).with(:actor => @james, :subject => @list, :event_type => 'list_created_or_updated')
12
+ @list.save
13
+ TimelineEvent.expects(:create!).with(:actor => @mat, :subject => @list, :event_type => 'list_created_or_updated')
14
+ @list.author = @mat
12
15
  @list.save
13
16
  end
14
17
 
@@ -61,7 +64,7 @@ class FiresTest < Test::Unit::TestCase
61
64
 
62
65
  def test_should_set_secondary_subject_to_self_when_requested
63
66
  @list = List.new(hash_for_list(:author => @james));
64
- TimelineEvent.stubs(:create!).with(has_entry(:event_type, "list_created"))
67
+ TimelineEvent.stubs(:create!).with(has_entry(:event_type, "list_created_or_updated"))
65
68
  @list.save
66
69
  @comment = Comment.new(:body => 'cool list!', :author => @mat, :list => @list)
67
70
  TimelineEvent.stubs(:create!).with(has_entry(:event_type, "comment_created"))
@@ -47,8 +47,8 @@ class List < ActiveRecord::Base
47
47
  belongs_to :author, :class_name => "Person"
48
48
  has_many :comments
49
49
 
50
- fires :list_created, :actor => :author,
51
- :on => :create
50
+ fires :list_created_or_updated, :actor => :author,
51
+ :on => [:create, :update]
52
52
  end
53
53
 
54
54
  class Comment < ActiveRecord::Base
@@ -0,0 +1,55 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{timeline_fu}
5
+ s.version = "0.3.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["James Golick", "Mathieu Martin", "Francois Beausoleil"]
9
+ s.date = %q{2009-06-26}
10
+ s.description = %q{Easily build timelines, much like GitHub's news feed}
11
+ s.email = %q{james@giraffesoft.ca}
12
+ s.extra_rdoc_files = [
13
+ "README.rdoc"
14
+ ]
15
+ s.files = [
16
+ ".gitignore",
17
+ "MIT-LICENSE",
18
+ "README.rdoc",
19
+ "Rakefile",
20
+ "VERSION.yml",
21
+ "generators/timeline_fu/USAGE",
22
+ "generators/timeline_fu/templates/migration.rb",
23
+ "generators/timeline_fu/templates/model.rb",
24
+ "generators/timeline_fu/timeline_fu_generator.rb",
25
+ "init.rb",
26
+ "lib/timeline_fu.rb",
27
+ "lib/timeline_fu/fires.rb",
28
+ "lib/timeline_fu/macros.rb",
29
+ "lib/timeline_fu/matchers.rb",
30
+ "shoulda_macros/timeline_fu_shoulda.rb",
31
+ "test/fires_test.rb",
32
+ "test/test_helper.rb",
33
+ "timeline_fu.gemspec"
34
+ ]
35
+ s.has_rdoc = true
36
+ s.homepage = %q{http://github.com/giraffesoft/timeline_fu}
37
+ s.rdoc_options = ["--charset=UTF-8"]
38
+ s.require_paths = ["lib"]
39
+ s.rubygems_version = %q{1.3.1}
40
+ s.summary = %q{Easily build timelines, much like GitHub's news feed}
41
+ s.test_files = [
42
+ "test/fires_test.rb",
43
+ "test/test_helper.rb"
44
+ ]
45
+
46
+ if s.respond_to? :specification_version then
47
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
+ s.specification_version = 2
49
+
50
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
51
+ else
52
+ end
53
+ else
54
+ end
55
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: giraffesoft-timeline_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Golick
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2009-05-26 00:00:00 -07:00
14
+ date: 2009-06-26 00:00:00 -07:00
15
15
  default_executable:
16
16
  dependencies: []
17
17
 
@@ -24,26 +24,28 @@ extensions: []
24
24
  extra_rdoc_files:
25
25
  - README.rdoc
26
26
  files:
27
+ - .gitignore
28
+ - MIT-LICENSE
27
29
  - README.rdoc
30
+ - Rakefile
28
31
  - VERSION.yml
29
- - generators/timeline_fu
30
- - generators/timeline_fu/templates
32
+ - generators/timeline_fu/USAGE
31
33
  - generators/timeline_fu/templates/migration.rb
32
34
  - generators/timeline_fu/templates/model.rb
33
35
  - generators/timeline_fu/timeline_fu_generator.rb
34
- - generators/timeline_fu/USAGE
35
- - lib/timeline_fu
36
+ - init.rb
37
+ - lib/timeline_fu.rb
36
38
  - lib/timeline_fu/fires.rb
37
39
  - lib/timeline_fu/macros.rb
38
40
  - lib/timeline_fu/matchers.rb
39
- - lib/timeline_fu.rb
41
+ - shoulda_macros/timeline_fu_shoulda.rb
40
42
  - test/fires_test.rb
41
43
  - test/test_helper.rb
44
+ - timeline_fu.gemspec
42
45
  has_rdoc: true
43
46
  homepage: http://github.com/giraffesoft/timeline_fu
44
47
  post_install_message:
45
48
  rdoc_options:
46
- - --inline-source
47
49
  - --charset=UTF-8
48
50
  require_paths:
49
51
  - lib
@@ -66,5 +68,6 @@ rubygems_version: 1.2.0
66
68
  signing_key:
67
69
  specification_version: 2
68
70
  summary: Easily build timelines, much like GitHub's news feed
69
- test_files: []
70
-
71
+ test_files:
72
+ - test/fires_test.rb
73
+ - test/test_helper.rb