rspec-paper_trail 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,43 +1,51 @@
1
1
  require 'rails/generators/active_record/migration'
2
2
 
3
3
  module Rspec
4
- module PaperTrail
5
- class InstallGenerator < Rails::Generators::Base
6
- include Rails::Generators::Migration
7
- extend ActiveRecord::Generators::Migration
4
+ module PaperTrail
5
+ class InstallGenerator < Rails::Generators::Base
6
+ include Rails::Generators::Migration
7
+ extend ActiveRecord::Generators::Migration
8
8
 
9
- source_root File.expand_path('../templates', __FILE__)
10
- class_option :with_string_ids, type: :boolean, default: true, desc: 'versions.type_id as string (vs integer)'
9
+ source_root File.expand_path('../templates', __FILE__)
10
+ class_option :with_string_ids, type: :boolean, default: true, desc: 'versions.type_id as string (vs integer)'
11
11
 
12
- class_option :'skip-migrations', type: :boolean, default: false, desc: 'do not generate migrations'
13
- class_option :force, type: :boolean, default: false, desc: 'force generation migrations'
12
+ class_option :'skip-migrations', type: :boolean, default: false, desc: 'do not generate migrations'
13
+ class_option :force, type: :boolean, default: false, desc: 'force generation migrations'
14
14
 
15
- desc 'Generates (but does not run) a migration to add versions table.'
15
+ desc 'Generates (but does not run) a migration to add versions table.'
16
16
 
17
- def generate_migration_file
18
- return if options.send(:'skip-migrations')
19
- migration_template 'migrations/create_versions.rb', 'db/migrate/create_versions.rb'
20
- migration_template 'migrations/stringify_versions_item_id.rb', 'db/migrate/stringify_versions_item_id.rb' if use_string_ids? && (!migrated? || has_integer_column?)
21
- end
17
+ def generate_migration_file
18
+ return if options.send(:'skip-migrations')
19
+ migration_template 'migrations/create_versions.rb.erb', 'db/migrate/create_versions.rb'
20
+ migration_template 'migrations/stringify_versions_item_id.rb', 'db/migrate/stringify_versions_item_id.rb' if use_string_ids? && (!migrated? || has_integer_column?)
21
+ end
22
22
 
23
- desc 'Generates initialization files.'
23
+ desc 'Generates initialization files.'
24
24
 
25
- def generate_configuration_files
26
- copy_file 'features/versioning.rb', 'config/features/versioning.rb'
27
- copy_file 'spec/support/rspec-paper_trail.rb', 'spec/support/rspec-paper_trail.rb'
28
- end
29
- private
30
- def use_string_ids?
31
- options.with_string_ids?
32
- end
33
- def migrated?
34
- return true if ActiveRecord::Base.connection.table_exists? 'versions'
35
- end
36
- def has_integer_column?
37
- return false unless migrated?
38
- Version.columns.select{|obj| obj.name == 'item_id'}.first.try(:type) == :integer
25
+ def generate_configuration_files
26
+ copy_file 'features/versioning.rb', 'config/features/versioning.rb'
27
+ copy_file 'spec/support/rspec-paper_trail.rb', 'spec/support/rspec-paper_trail.rb'
28
+ end
29
+
30
+ private
31
+
32
+ def use_string_ids?
33
+ options.with_string_ids?
34
+ end
35
+
36
+ def connected?
37
+ ActiveRecord::Base.connected?
38
+ end
39
+
40
+ def migrated?
41
+ ActiveRecord::Base.connection.table_exists? 'versions'
42
+ end
43
+
44
+ def has_integer_column?
45
+ return false unless migrated?
46
+ Version.columns.select { |obj| obj.name == 'item_id' }.first.try(:type) == :integer
47
+ end
39
48
  end
40
- end
41
49
 
42
- end
50
+ end
43
51
  end
@@ -0,0 +1 @@
1
+ require 'rspec/paper_trail/step_definition_helpers'
@@ -1,6 +1,6 @@
1
1
  Configuration.for('versioning') do
2
2
  enabled true
3
- path ":rails_root/public/system/:rails_env/:style/:attachable_klass/:id_partition/:basename.:stream_version.:extension"
4
- url ['development', 'test'].include?(Rails.env) ? "/attachments/:id/download" : "/system/:rails_env/:style/:attachable_klass/:id_partition/:basename.:stream_version.:extension"
3
+ path ':rails_root/public/system/:rails_env/:style/:attachable_klass/:id_partition/:basename.:stream_version.:extension'
4
+ url %w(development test).include?(Rails.env) ? '/attachments/:id/download' : '/system/:rails_env/:style/:attachable_klass/:id_partition/:basename.:stream_version.:extension'
5
5
  end
6
6
 
@@ -2,7 +2,7 @@ class CreateVersions < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :versions, force: true do |t|
4
4
  t.string :item_type, null: false
5
- <% if use_string_ids? && (migrated? && !has_integer_column?) %>t.string :item_id, null: false # item_type.id generally should be GUID<% else %>t.integer :item_id, null: false, limit: 8<% end %>
5
+ <% if use_string_ids? && (!connected? || (migrated? && !has_integer_column?)) %>t.string :item_id, null: false # item_type.id generally should be GUID<% else %>t.integer :item_id, null: false, limit: 8<% end %>
6
6
  t.string :event, null: false
7
7
  t.string :whodunnit
8
8
  t.text :object
@@ -2,6 +2,7 @@ class StringifyVersionsItemId < ActiveRecord::Migration
2
2
  def up
3
3
  change_column :versions, :item_id, :string, null: false
4
4
  end
5
+
5
6
  def down
6
7
  change_column :versions, :item_id, :integer, limit: 8, null: false
7
8
  end
@@ -0,0 +1,19 @@
1
+ if defined? World
2
+ module RspecPaperTrailCucumberSupport
3
+ # :call-seq:
4
+ # with_versioning
5
+ #
6
+ # enable versioning for specific blocks
7
+
8
+ def with_versioning
9
+ was_enabled = ::PaperTrail.enabled?
10
+ ::PaperTrail.enabled = true
11
+ begin
12
+ yield
13
+ ensure
14
+ ::PaperTrail.enabled = was_enabled
15
+ end
16
+ end
17
+ end
18
+ World(RspecPaperTrailCucumberSupport
19
+ end
@@ -1,5 +1,5 @@
1
1
  module Rspec
2
2
  module PaperTrail
3
- VERSION = '0.0.7'
3
+ VERSION = '0.0.8'
4
4
  end
5
5
  end
@@ -27,20 +27,25 @@ Gem::Specification.new do |spec|
27
27
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0')
28
28
  spec.add_runtime_dependency 'paper_trail', ['~> 2.7.1']
29
29
  spec.add_runtime_dependency 'rspec', ['~> 2.13.0']
30
-
30
+ spec.add_runtime_dependency 'rails', '~> 3.2'
31
31
  spec.add_development_dependency 'bundler', ['~> 1.3.0']
32
32
  spec.add_development_dependency 'rake'
33
+ spec.add_development_dependency 'sqlite3'
33
34
  else
34
35
  spec.add_dependency 'paper_trail', ['~> 2.7.1']
35
36
  spec.add_dependency 'rspec', ['~> 2.13.0']
37
+ spec.add_dependency 'rails', '~> 3.2'
36
38
  spec.add_dependency 'bundler', ['~> 1.3']
37
39
  spec.add_dependency 'rake'
40
+ spec.add_dependency 'sqlite3'
38
41
  end
39
42
  else
40
43
  spec.add_dependency 'paper_trail', ['~> 2.7.1']
41
44
  spec.add_dependency 'rspec', ['~> 2.13.0']
45
+ spec.add_dependency 'rails', '~> 3.2'
42
46
  spec.add_dependency 'bundler', ['~> 1.3']
43
47
  spec.add_dependency 'rake'
48
+ spec.add_dependency 'sqlite3'
44
49
  end
45
50
 
46
51
  end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe RspecExtensions do
4
+ context 'default' do
5
+ it 'should have versioning off by default' do
6
+ PaperTrail.enabled?.should_not be_true
7
+ end
8
+ it 'should turn versioning on in a with_versioning block' do
9
+ PaperTrail.enabled?.should_not be_true
10
+ with_versioning do
11
+ PaperTrail.enabled?.should be_true
12
+ end
13
+ PaperTrail.enabled?.should_not be_true
14
+ end
15
+ end
16
+ context 'versioning: true', :versioning => true do
17
+ it 'should have versioning on by default' do
18
+ PaperTrail.enabled?.should be_true
19
+ end
20
+ it 'should keep versioning on after a with_versioning block' do
21
+ PaperTrail.enabled?.should be_true
22
+ with_versioning do
23
+ PaperTrail.enabled?.should be_true
24
+ end
25
+ PaperTrail.enabled?.should be_true
26
+ end
27
+ end
28
+ end
29
+
30
+ describe Model do
31
+ context 'be_versioned matcher', :versioning => true do
32
+ it 'should respond to be_versioned' do
33
+ model = Model.create(:name => 'Bob', :color => 'blue')
34
+ model.should be_versioned
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,29 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'rails'
5
+ require 'active_record'
6
+ require 'paper_trail'
7
+ require 'rspec/paper_trail'
8
+
9
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
10
+
11
+ ActiveRecord::Schema.define(:version => 1) do
12
+ create_table :models do |t|
13
+ t.string :name
14
+ t.string :color
15
+ end
16
+ create_table :versions do |t|
17
+ t.string :item_type, :null => false
18
+ t.integer :item_id, :null => false
19
+ t.string :event, :null => false
20
+ t.string :whodunnit
21
+ t.text :object
22
+ t.datetime :created_at
23
+ end
24
+ end
25
+
26
+ class Model < ActiveRecord::Base
27
+ has_paper_trail
28
+ attr_accessible :name, :color
29
+ end
metadata CHANGED
@@ -1,60 +1,112 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-paper_trail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
5
4
  prerelease:
5
+ version: 0.0.8
6
6
  platform: ruby
7
7
  authors:
8
8
  - Paul Belt
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-26 00:00:00.000000000Z
12
+ date: 2013-04-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: paper_trail
16
- requirement: &2231106500 !ruby/object:Gem::Requirement
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: 2.7.1
17
21
  none: false
22
+ requirement: !ruby/object:Gem::Requirement
18
23
  requirements:
19
24
  - - ~>
20
25
  - !ruby/object:Gem::Version
21
26
  version: 2.7.1
22
- type: :runtime
27
+ none: false
23
28
  prerelease: false
24
- version_requirements: *2231106500
29
+ type: :runtime
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rspec
27
- requirement: &2231106020 !ruby/object:Gem::Requirement
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ~>
35
+ - !ruby/object:Gem::Version
36
+ version: 2.13.0
28
37
  none: false
38
+ requirement: !ruby/object:Gem::Requirement
29
39
  requirements:
30
40
  - - ~>
31
41
  - !ruby/object:Gem::Version
32
42
  version: 2.13.0
43
+ none: false
44
+ prerelease: false
33
45
  type: :runtime
46
+ - !ruby/object:Gem::Dependency
47
+ name: rails
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ~>
51
+ - !ruby/object:Gem::Version
52
+ version: '3.2'
53
+ none: false
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ version: '3.2'
59
+ none: false
34
60
  prerelease: false
35
- version_requirements: *2231106020
61
+ type: :runtime
36
62
  - !ruby/object:Gem::Dependency
37
63
  name: bundler
38
- requirement: &2231105540 !ruby/object:Gem::Requirement
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 1.3.0
39
69
  none: false
70
+ requirement: !ruby/object:Gem::Requirement
40
71
  requirements:
41
72
  - - ~>
42
73
  - !ruby/object:Gem::Version
43
74
  version: 1.3.0
44
- type: :development
75
+ none: false
45
76
  prerelease: false
46
- version_requirements: *2231105540
77
+ type: :development
47
78
  - !ruby/object:Gem::Dependency
48
79
  name: rake
49
- requirement: &2231103360 !ruby/object:Gem::Requirement
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
50
85
  none: false
86
+ requirement: !ruby/object:Gem::Requirement
51
87
  requirements:
52
88
  - - ! '>='
53
89
  - !ruby/object:Gem::Version
54
90
  version: '0'
91
+ none: false
92
+ prerelease: false
55
93
  type: :development
94
+ - !ruby/object:Gem::Dependency
95
+ name: sqlite3
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ none: false
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ none: false
56
108
  prerelease: false
57
- version_requirements: *2231103360
109
+ type: :development
58
110
  description: use paper_trail within rspec, conveniently
59
111
  email:
60
112
  - paul.belt@gmail.com
@@ -70,15 +122,19 @@ files:
70
122
  - README.md
71
123
  - Rakefile
72
124
  - lib/generators/rspec/paper_trail/install_generator.rb
125
+ - lib/generators/rspec/paper_trail/templates/features/support/rspec-paper_trail.rb
73
126
  - lib/generators/rspec/paper_trail/templates/features/versioning.rb
74
- - lib/generators/rspec/paper_trail/templates/migrations/create_versions.rb
127
+ - lib/generators/rspec/paper_trail/templates/migrations/create_versions.rb.erb
75
128
  - lib/generators/rspec/paper_trail/templates/migrations/stringify_versions_item_id.rb
76
129
  - lib/generators/rspec/paper_trail/templates/spec/support/rspec-paper_trail.rb
77
130
  - lib/rspec/paper_trail.rb
78
131
  - lib/rspec/paper_trail/extensions.rb
132
+ - lib/rspec/paper_trail/features_support.rb
79
133
  - lib/rspec/paper_trail/version.rb
80
134
  - rspec-paper_trail.gemspec
135
+ - spec/rspec-paper_trail/versioning_extensions_spec.rb
81
136
  - spec/spec.opts
137
+ - spec/spec_helper.rb
82
138
  homepage: https://github.com/belt/rspec-paper_trail
83
139
  licenses:
84
140
  - MIT
@@ -87,22 +143,24 @@ rdoc_options: []
87
143
  require_paths:
88
144
  - lib
89
145
  required_ruby_version: !ruby/object:Gem::Requirement
90
- none: false
91
146
  requirements:
92
147
  - - ! '>='
93
148
  - !ruby/object:Gem::Version
94
149
  version: 1.9.2
95
- required_rubygems_version: !ruby/object:Gem::Requirement
96
150
  none: false
151
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
152
  requirements:
98
153
  - - ! '>='
99
154
  - !ruby/object:Gem::Version
100
155
  version: '0'
156
+ none: false
101
157
  requirements: []
102
158
  rubyforge_project:
103
- rubygems_version: 1.8.10
159
+ rubygems_version: 1.8.25
104
160
  signing_key:
105
161
  specification_version: 3
106
162
  summary: provides rspec-matcher to ensure versioning and per-spec, per-block versioning
107
163
  test_files:
164
+ - spec/rspec-paper_trail/versioning_extensions_spec.rb
108
165
  - spec/spec.opts
166
+ - spec/spec_helper.rb