emotions 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
data/README.md CHANGED
@@ -62,8 +62,8 @@ user.no_longer_sad_about!(picture)
62
62
  user.sad_about?(picture)
63
63
  # => false
64
64
 
65
- picture.happy_about.map(&:emotional)
66
- # => [#<User id=1>]
65
+ User.happy_about(picture)
66
+ # => #<ActiveRecord::Relation [#<User id=1>]>
67
67
 
68
68
  user.express!(:sad, picture)
69
69
  user.sad_about?(picure)
data/Rakefile CHANGED
@@ -1 +1,11 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler'
2
+ require 'rake'
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ task default: :spec
7
+
8
+ desc 'Run all specs'
9
+ RSpec::Core::RakeTask.new(:spec) do |task|
10
+ task.pattern = 'spec/**/*_spec.rb'
11
+ end
@@ -4,22 +4,24 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'emotions/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "emotions"
7
+ spec.name = 'emotions'
8
8
  spec.version = Emotions::VERSION
9
- spec.authors = ["Rémi Prévost"]
10
- spec.email = ["rprevost@mirego.com"]
9
+ spec.authors = ['Rémi Prévost']
10
+ spec.email = ['rprevost@mirego.com']
11
11
  spec.description = 'Emotions is a Ruby library that allows ActiveRecord records to express (and hopefully store) emotions about other records.'
12
12
  spec.summary = 'Emotions is a Ruby library that allows ActiveRecord records to express (and hopefully store) emotions about other records.'
13
13
  spec.homepage = 'https://github.com/mirego/emotions'
14
- spec.license = "New BSD"
14
+ spec.license = 'BSD 3-Clause'
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency "rails", ">= 3.0.0"
21
+ spec.add_dependency 'rails', '>= 3.0.0'
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.3"
24
- spec.add_development_dependency "rake"
23
+ spec.add_development_dependency 'rake'
24
+ spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'rspec', '~> 2.13'
26
+ spec.add_development_dependency 'sqlite3', '~> 1.3'
25
27
  end
@@ -1,7 +1,9 @@
1
- require "emotions/version"
2
- require "emotions/emotion"
3
- require "emotions/emotive"
4
- require "emotions/emotional"
1
+ require 'emotions/version'
2
+
3
+ require 'active_record'
4
+ require 'emotions/emotion'
5
+ require 'emotions/emotive'
6
+ require 'emotions/emotional'
5
7
 
6
8
  module Emotions
7
9
  def self.configure
@@ -5,8 +5,23 @@ module Emotions
5
5
  # Validations
6
6
  validates :emotional, presence: true
7
7
  validates :emotive, presence: true
8
+
8
9
  validates_each :emotion do |record, attr, value|
9
- record.errors.add attr, 'invalid' unless Emotions.emotions.include?(value.try(:to_sym))
10
+ unless Emotions.emotions.include?(value.try(:to_sym))
11
+ record.errors.add attr, I18n.t(:invalid, scope: [:errors, :messages])
12
+ end
13
+ end
14
+
15
+ validates_each :emotional do |record, attr, value|
16
+ if value.blank? || !value.class.try(:emotional?)
17
+ record.errors.add attr, I18n.t(:invalid, scope: [:errors, :messages])
18
+ end
19
+ end
20
+
21
+ validates_each :emotive do |record, attr, value|
22
+ if value.blank? || !value.class.try(:emotive?)
23
+ record.errors.add attr, I18n.t(:invalid, scope: [:errors, :messages])
24
+ end
10
25
  end
11
26
 
12
27
  # Associations
@@ -15,7 +15,7 @@ module Emotions
15
15
  end
16
16
 
17
17
  def emotions_about(emotive)
18
- _emotions_about(emotive).map(&:emotion).map(&:to_sym)
18
+ _emotions_about(emotive).pluck(:emotion).map(&:to_sym)
19
19
  end
20
20
 
21
21
  def express!(emotion, emotive)
@@ -30,25 +30,40 @@ module Emotions
30
30
  def define_emotion_methods(emotion)
31
31
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
32
32
  def #{emotion}_about?(emotive)
33
- #{emotion}_about(emotive).exists?
34
- end
35
-
36
- def #{emotion}_about?(emotive)
37
- #{emotion}_about(emotive).exists?
33
+ !!#{emotion}_about(emotive).exists?
38
34
  end
35
+ alias #{emotion}? #{emotion}_about?
36
+ alias #{emotion}_with? #{emotion}_about?
37
+ alias #{emotion}_over? #{emotion}_about?
39
38
 
40
39
  def #{emotion}_about!(emotive)
41
40
  emotion = #{emotion}_about(emotive).first_or_initialize
42
- emotion.save!
41
+ emotion.tap(&:save!)
43
42
  end
43
+ alias #{emotion}_with! #{emotion}_about!
44
+ alias #{emotion}_over! #{emotion}_about!
44
45
 
45
46
  def no_longer_#{emotion}_about!(emotive)
46
- #{emotion}_about(emotive).destroy_all
47
+ #{emotion}_about(emotive).first.tap(&:destroy)
47
48
  end
49
+ alias no_longer_#{emotion}_with! no_longer_#{emotion}_about!
50
+ alias no_longer_#{emotion}_over! no_longer_#{emotion}_about!
48
51
 
49
52
  def #{emotion}_about(emotive)
50
53
  _emotions_about(emotive).where(emotion: #{emotion.to_s.inspect})
51
54
  end
55
+ alias #{emotion}_with #{emotion}_about
56
+ alias #{emotion}_over #{emotion}_about
57
+
58
+ RUBY
59
+
60
+ instance_eval <<-RUBY, __FILE__, __LINE__ + 1
61
+ def #{emotion}_about(emotive)
62
+ emotional_ids = emotive.#{emotion}_about.where(emotional_type: self.name).pluck(:emotional_id)
63
+ self.where(id: emotional_ids)
64
+ end
65
+ alias #{emotion}_with #{emotion}_about
66
+ alias #{emotion}_over #{emotion}_about
52
67
  RUBY
53
68
  end
54
69
  end
@@ -10,10 +10,6 @@ module Emotions
10
10
  end
11
11
  end
12
12
 
13
- def emotional_about
14
- self.emotions.includes(:emotional)
15
- end
16
-
17
13
  def update_emotion_counter(emotion)
18
14
  attribute = :"#{emotion}_emotions_count"
19
15
 
@@ -26,8 +22,10 @@ module Emotions
26
22
  def define_emotion_methods(emotion)
27
23
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
28
24
  def #{emotion}_about
29
- emotional_about.where(emotion: #{emotion.to_s.inspect})
25
+ self.emotions.where(emotion: #{emotion.to_s.inspect})
30
26
  end
27
+ alias #{emotion}_with #{emotion}_about
28
+ alias #{emotion}_over #{emotion}_about
31
29
  RUBY
32
30
  end
33
31
  end
@@ -3,7 +3,7 @@ require 'rails'
3
3
 
4
4
  module Emotions
5
5
  class Railtie < Rails::Railtie
6
- initializer "emotions.active_record" do |app|
6
+ initializer 'emotions.active_record' do |app|
7
7
  ActiveSupport.on_load :active_record do
8
8
  def self.acts_as_emotive
9
9
  self.send :include, Emotions::Emotive
@@ -12,6 +12,14 @@ module Emotions
12
12
  def self.acts_as_emotional
13
13
  self.send :include, Emotions::Emotional
14
14
  end
15
+
16
+ def self.emotional?
17
+ !!@emotional
18
+ end
19
+
20
+ def self.emotive?
21
+ !!@emotive
22
+ end
15
23
  end
16
24
  end
17
25
  end
@@ -1,3 +1,3 @@
1
1
  module Emotions
2
- VERSION = "0.1.6"
2
+ VERSION = '0.1.7'
3
3
  end
@@ -11,9 +11,9 @@ module Emotions
11
11
  # taken from http://github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb
12
12
  def self.next_migration_number(dirname)
13
13
  if ActiveRecord::Base.timestamped_migrations
14
- Time.now.utc.strftime("%Y%m%d%H%M%S")
14
+ Time.now.utc.strftime('%Y%m%d%H%M%S')
15
15
  else
16
- "%.3d" % (current_migration_number(dirname) + 1)
16
+ '%.3d' % (current_migration_number(dirname) + 1)
17
17
  end
18
18
  end
19
19
 
@@ -15,7 +15,7 @@ class AddEmotions < ActiveRecord::Migration
15
15
 
16
16
  add_index :emotions, [:emotional_type, :emotional_id, :emotive_type, :emotive_id, :emotion], unique: true, name: 'index_emotions_by_emotional_emotive_and_emotion'
17
17
  add_index :emotions, [:emotional_type, :emotional_id, :emotive_type, :emotive_id], name: 'index_emotions_by_emotional_and_emotive'
18
- add_index :emotions, [:emotive_type, :emotive_id, :emotion], name: 'index_emotions_by_emotional_and_emotive'
18
+ add_index :emotions, [:emotive_type, :emotive_id, :emotion], name: 'index_emotions_by_emotive'
19
19
  end
20
20
 
21
21
  def down
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+
3
+ describe Emotions::Emotion do
4
+ before do
5
+ emotions :happy, :sad
6
+
7
+ run_migration do
8
+ create_table(:users, force: true)
9
+ create_table(:pictures, force: true) do |t|
10
+ t.integer :happy_emotions_count, default: 0
11
+ t.integer :sad_emotions_count, default: 0
12
+ end
13
+ end
14
+
15
+ emotional 'User'
16
+ emotive 'Picture'
17
+ end
18
+
19
+ describe :Validations do
20
+ describe :validate_presence_of_emotional do
21
+ subject { described_class.new(emotion: 'happy', emotive: Picture.create) }
22
+ before { subject.valid? }
23
+
24
+ it { should_not be_valid }
25
+ it { expect(subject.errors.full_messages).to eql ["Emotional can't be blank", "Emotional is invalid"] }
26
+ end
27
+
28
+ describe :validate_presence_of_emotive do
29
+ subject { described_class.new(emotion: 'happy', emotional: User.create) }
30
+ before { subject.valid? }
31
+
32
+ it { should_not be_valid }
33
+ it { expect(subject.errors.full_messages).to eql ["Emotive can't be blank", "Emotive is invalid"] }
34
+ end
35
+
36
+ describe :validate_inclusion_of_emotion do
37
+ subject { described_class.new(emotion: 'mad', emotional: User.create, emotive: Picture.create) }
38
+ before { subject.valid? }
39
+
40
+ it { should_not be_valid }
41
+ it { expect(subject.errors.full_messages).to eql ["Emotion is invalid"] }
42
+ end
43
+
44
+ describe :validate_class_of_emotive do
45
+ subject { described_class.new(emotion: 'happy', emotional: User.create, emotive: User.create) }
46
+ before { subject.valid? }
47
+
48
+ it { should_not be_valid }
49
+ it { expect(subject.errors.full_messages).to eql ["Emotive is invalid"] }
50
+ end
51
+
52
+ describe :validate_class_of_emotional do
53
+ subject { described_class.new(emotion: 'happy', emotional: Picture.create, emotive: Picture.create) }
54
+ before { subject.valid? }
55
+
56
+ it { should_not be_valid }
57
+ it { expect(subject.errors.full_messages).to eql ["Emotional is invalid"] }
58
+ end
59
+ end
60
+
61
+ describe :Callbacks do
62
+ describe :update_emotion_counter_on_create do
63
+ let(:picture) { Picture.create }
64
+ let(:emotion) { described_class.new(emotion: 'happy', emotional: User.create, emotive: picture) }
65
+
66
+ before do
67
+ picture.should_receive(:update_emotion_counter).with('happy').once
68
+ emotion.should_receive(:update_emotion_counter).once.and_call_original
69
+ end
70
+
71
+ it { emotion.save! }
72
+ end
73
+
74
+ describe :update_emotion_counter_on_destroy do
75
+ let(:picture) { Picture.create }
76
+ let(:emotion) { described_class.new(emotion: 'happy', emotional: User.create, emotive: picture) }
77
+
78
+ before do
79
+ emotion.save!
80
+ picture.should_receive(:update_emotion_counter).with('happy').once
81
+ emotion.should_receive(:update_emotion_counter).once.and_call_original
82
+ end
83
+
84
+ it { emotion.destroy }
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,127 @@
1
+ require 'spec_helper'
2
+
3
+ describe Emotions::Emotional do
4
+ before do
5
+ emotions :happy, :sad
6
+
7
+ run_migration do
8
+ create_table(:users, force: true)
9
+ create_table(:pictures, force: true)
10
+ end
11
+
12
+ emotional 'User'
13
+ emotive 'Picture'
14
+ end
15
+
16
+ let(:user) { User.create }
17
+
18
+ describe :InstanceMethods do
19
+ describe :Aliases do
20
+ subject { user }
21
+
22
+ it { should respond_to :happy? }
23
+
24
+ it { should respond_to :happy_about? }
25
+ it { should respond_to :happy_with? }
26
+ it { should respond_to :happy_over? }
27
+
28
+ it { should respond_to :happy_about! }
29
+ it { should respond_to :happy_with! }
30
+ it { should respond_to :happy_over! }
31
+
32
+ it { should respond_to :no_longer_happy_about! }
33
+ it { should respond_to :no_longer_happy_with! }
34
+ it { should respond_to :no_longer_happy_over! }
35
+
36
+ it { should respond_to :happy_about }
37
+ it { should respond_to :happy_with }
38
+ it { should respond_to :happy_over }
39
+ end
40
+
41
+ describe :emotions_about do
42
+ let(:picture) { Picture.create }
43
+
44
+ context 'for user with emotions' do
45
+ before do
46
+ user.happy_about! picture
47
+ user.sad_about! picture
48
+ end
49
+
50
+ it { expect(user.emotions_about(picture)).to eql [:happy, :sad] }
51
+ end
52
+
53
+ context 'for user without emotions' do
54
+ it { expect(user.emotions_about(picture)).to be_empty }
55
+ end
56
+ end
57
+
58
+ describe :express! do
59
+ let(:picture) { Picture.create }
60
+
61
+ it { expect{ user.express! :happy, picture }.to change{ Emotions::Emotion.count }.from(0).to(1) }
62
+ it { expect{ user.express! :happy, picture }.to change{ user.happy_about? picture }.from(false).to(true) }
63
+ end
64
+
65
+ describe :no_longer_express! do
66
+ let(:picture) { Picture.create }
67
+ before { user.happy_about!(picture) }
68
+
69
+ it { expect{ user.no_longer_express! :happy, picture }.to change{ Emotions::Emotion.count }.from(1).to(0) }
70
+ it { expect{ user.no_longer_express! :happy, picture }.to change{ user.happy_about? picture }.from(true).to(false) }
71
+ end
72
+
73
+ describe :DynamicMethods do
74
+ describe :emotion_about? do
75
+ before { user.happy_about!(picture) }
76
+ let(:picture) { Picture.create }
77
+ let(:other_picture) { Picture.create }
78
+
79
+ it { expect(user.happy_about? picture).to be_true }
80
+ it { expect(user.happy_about? other_picture).to be_false }
81
+ end
82
+
83
+ describe :emotion_about! do
84
+ let(:picture) { Picture.create }
85
+
86
+ it { expect(user.happy_about! picture).to be_instance_of(Emotions::Emotion) }
87
+ it { expect{ user.happy_about! picture }.to change{ Emotions::Emotion.count }.from(0).to(1) }
88
+ it { expect{ user.happy_about! picture }.to change{ user.happy_about? picture }.from(false).to(true) }
89
+ end
90
+
91
+ describe :no_longer_emotion_about! do
92
+ before { user.happy_about!(picture) }
93
+ let(:picture) { Picture.create }
94
+
95
+ it { expect(user.no_longer_happy_about! picture).to be_instance_of(Emotions::Emotion) }
96
+ it { expect{ user.no_longer_happy_about! picture }.to change{ Emotions::Emotion.count }.from(1).to(0) }
97
+ it { expect{ user.no_longer_happy_about! picture }.to change{ user.happy_about? picture }.from(true).to(false) }
98
+ end
99
+ end
100
+ end
101
+
102
+ describe :ClassMethods do
103
+ describe :Aliases do
104
+ subject { user.class }
105
+
106
+ it { should respond_to :happy_about }
107
+ it { should respond_to :happy_with }
108
+ it { should respond_to :happy_over }
109
+ end
110
+
111
+ describe :DynamicMethods do
112
+ describe :emotion_about do
113
+ let(:first_other_user) { User.create }
114
+ let(:second_other_user) { User.create }
115
+ let(:picture) { Picture.create }
116
+
117
+ before do
118
+ user.happy_about! picture
119
+ first_other_user.happy_about! picture
120
+ end
121
+
122
+ it { expect(User.happy_about(picture).to_a).to eql [user, first_other_user] }
123
+ it { expect(User.happy_about(picture).where('id != ?', first_other_user.id).to_a).to eql [user] }
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe Emotions::Emotive do
4
+ before do
5
+ emotions :happy, :sad
6
+
7
+ run_migration do
8
+ create_table(:users, force: true)
9
+ create_table(:pictures, force: true) do |t|
10
+ t.integer :happy_emotions_count, default: 0
11
+ t.integer :sad_emotions_count, default: 0
12
+ end
13
+ end
14
+
15
+ emotional 'User'
16
+ emotive 'Picture'
17
+ end
18
+
19
+ let(:picture) { Picture.create }
20
+
21
+ describe :InstanceMethods do
22
+ describe :update_emotion_counter do
23
+ let(:relation) do
24
+ double.tap { |double| double.stub(:count).and_return(42) }
25
+ end
26
+
27
+ before do
28
+ Picture.any_instance.stub(:happy_about).and_return(relation)
29
+ picture.update_emotion_counter(:happy)
30
+ end
31
+
32
+ it { expect(picture.reload.happy_emotions_count).to eql 42 }
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,29 @@
1
+ $:.unshift File.expand_path('../../lib', __FILE__)
2
+
3
+ require 'rspec'
4
+ require 'sqlite3'
5
+
6
+ require 'emotions'
7
+
8
+ # Require our macros and extensions
9
+ Dir[File.expand_path('../../spec/support/macros/*.rb', __FILE__)].map(&method(:require))
10
+ Dir[File.expand_path('../../spec/support/extensions/*.rb', __FILE__)].map(&method(:require))
11
+
12
+ RSpec.configure do |config|
13
+ # Include our macros
14
+ config.include DatabaseMacros
15
+ config.include ModelMacros
16
+
17
+ config.before(:each) do
18
+ # Create the SQLite database
19
+ setup_database
20
+
21
+ # Run our migration
22
+ run_default_migration
23
+ end
24
+
25
+ config.after(:each) do
26
+ # Make sure we remove our test database file
27
+ cleanup_database
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ class ActiveRecord::Base
2
+ def self.acts_as_emotive
3
+ self.send :include, Emotions::Emotive
4
+ end
5
+
6
+ def self.acts_as_emotional
7
+ self.send :include, Emotions::Emotional
8
+ end
9
+
10
+ def self.emotive?
11
+ @emotive ||= self.ancestors.include?(Emotions::Emotive)
12
+ end
13
+
14
+ def self.emotional?
15
+ @emotional ||= self.ancestors.include?(Emotions::Emotional)
16
+ end
17
+ end
@@ -0,0 +1,39 @@
1
+ module DatabaseMacros
2
+ # Run migrations in the test database
3
+ def run_migration(&block)
4
+ # Create a new migration class
5
+ klass = Class.new(ActiveRecord::Migration)
6
+
7
+ # Create a new `up` that executes the argument
8
+ klass.send(:define_method, :up) { self.instance_exec(&block) }
9
+
10
+ # Create a new instance of it and execute its `up` method
11
+ klass.new.up
12
+ end
13
+
14
+ def self.database_file
15
+ @database_file || File.expand_path('../test.db', __FILE__)
16
+ end
17
+
18
+ def setup_database
19
+ # Make sure the test database file is gone
20
+ cleanup_database
21
+
22
+ # Establish the connection
23
+ SQLite3::Database.new FileUtils.touch(DatabaseMacros.database_file).first
24
+ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: DatabaseMacros.database_file)
25
+
26
+ # Silence everything
27
+ ActiveRecord::Base.logger = ActiveRecord::Migration.verbose = false
28
+ end
29
+
30
+ def cleanup_database
31
+ FileUtils.rm(DatabaseMacros.database_file) if File.exists?(DatabaseMacros.database_file)
32
+ end
33
+
34
+ # Run the built-in migration
35
+ def run_default_migration
36
+ load File.expand_path('../../../../lib/generators/emotions/templates/migration.rb', __FILE__)
37
+ AddEmotions.new.up
38
+ end
39
+ end
@@ -0,0 +1,31 @@
1
+ module ModelMacros
2
+ # Create a new emotional model
3
+ def emotional(klass_name, &block)
4
+ spawn_model klass_name, ActiveRecord::Base do
5
+ acts_as_emotional
6
+ instance_exec(&block) if block
7
+ end
8
+ end
9
+
10
+ # Create a new emotive model
11
+ def emotive(klass_name, &block)
12
+ spawn_model klass_name, ActiveRecord::Base do
13
+ acts_as_emotive
14
+ class_eval(&block) if block
15
+ end
16
+ end
17
+
18
+ # Configure the emotions managed by Emotions
19
+ def emotions(*emotions)
20
+ Emotions.configure { |config| config.emotions = emotions }
21
+ end
22
+
23
+ protected
24
+
25
+ # Create a new model class
26
+ def spawn_model(klass_name, parent_klass, &block)
27
+ Object.instance_eval { remove_const klass_name } if Object.const_defined?(klass_name)
28
+ Object.const_set(klass_name, Class.new(parent_klass))
29
+ Object.const_get(klass_name).class_eval(&block) if block_given?
30
+ end
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emotions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-22 00:00:00.000000000 Z
12
+ date: 2013-06-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: 3.0.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: bundler
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -44,21 +60,37 @@ dependencies:
44
60
  - !ruby/object:Gem::Version
45
61
  version: '1.3'
46
62
  - !ruby/object:Gem::Dependency
47
- name: rake
63
+ name: rspec
48
64
  requirement: !ruby/object:Gem::Requirement
49
65
  none: false
50
66
  requirements:
51
- - - ! '>='
67
+ - - ~>
52
68
  - !ruby/object:Gem::Version
53
- version: '0'
69
+ version: '2.13'
54
70
  type: :development
55
71
  prerelease: false
56
72
  version_requirements: !ruby/object:Gem::Requirement
57
73
  none: false
58
74
  requirements:
59
- - - ! '>='
75
+ - - ~>
60
76
  - !ruby/object:Gem::Version
61
- version: '0'
77
+ version: '2.13'
78
+ - !ruby/object:Gem::Dependency
79
+ name: sqlite3
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '1.3'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '1.3'
62
94
  description: Emotions is a Ruby library that allows ActiveRecord records to express
63
95
  (and hopefully store) emotions about other records.
64
96
  email:
@@ -68,6 +100,7 @@ extensions: []
68
100
  extra_rdoc_files: []
69
101
  files:
70
102
  - .gitignore
103
+ - .rspec
71
104
  - Gemfile
72
105
  - LICENSE.md
73
106
  - README.md
@@ -82,9 +115,16 @@ files:
82
115
  - lib/generators/emotions/USAGE
83
116
  - lib/generators/emotions/install_generator.rb
84
117
  - lib/generators/emotions/templates/migration.rb
118
+ - spec/emotions/emotion_spec.rb
119
+ - spec/emotions/emotional_spec.rb
120
+ - spec/emotions/emotive_spec.rb
121
+ - spec/spec_helper.rb
122
+ - spec/support/extensions/active_record.rb
123
+ - spec/support/macros/database_macros.rb
124
+ - spec/support/macros/model_macros.rb
85
125
  homepage: https://github.com/mirego/emotions
86
126
  licenses:
87
- - New BSD
127
+ - BSD 3-Clause
88
128
  post_install_message:
89
129
  rdoc_options: []
90
130
  require_paths:
@@ -97,7 +137,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
97
137
  version: '0'
98
138
  segments:
99
139
  - 0
100
- hash: -2014589811862861557
140
+ hash: -17030051057476021
101
141
  required_rubygems_version: !ruby/object:Gem::Requirement
102
142
  none: false
103
143
  requirements:
@@ -106,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
146
  version: '0'
107
147
  segments:
108
148
  - 0
109
- hash: -2014589811862861557
149
+ hash: -17030051057476021
110
150
  requirements: []
111
151
  rubyforge_project:
112
152
  rubygems_version: 1.8.23
@@ -114,4 +154,11 @@ signing_key:
114
154
  specification_version: 3
115
155
  summary: Emotions is a Ruby library that allows ActiveRecord records to express (and
116
156
  hopefully store) emotions about other records.
117
- test_files: []
157
+ test_files:
158
+ - spec/emotions/emotion_spec.rb
159
+ - spec/emotions/emotional_spec.rb
160
+ - spec/emotions/emotive_spec.rb
161
+ - spec/spec_helper.rb
162
+ - spec/support/extensions/active_record.rb
163
+ - spec/support/macros/database_macros.rb
164
+ - spec/support/macros/model_macros.rb