sprig-reap 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,12 +2,14 @@ module Sprig::Reap
2
2
  class Association
3
3
  attr_reader :association
4
4
 
5
+ delegate :foreign_key, :to => :association
6
+
5
7
  def initialize(association)
6
8
  @association = association
7
9
  end
8
10
 
9
11
  def klass
10
- name.to_s.classify.constantize
12
+ polymorphic? ? nil : association.klass
11
13
  end
12
14
 
13
15
  def name
@@ -33,13 +35,8 @@ module Sprig::Reap
33
35
  polymorphic? ? polymorphic_dependencies : Array(klass)
34
36
  end
35
37
 
36
- def foreign_key
37
- association.options[:foreign_key] || name.to_s + '_id'
38
- end
39
-
40
38
  def polymorphic_type
41
- name.to_s + '_type'
39
+ polymorphic? ? association.foreign_type : nil
42
40
  end
43
-
44
41
  end
45
42
  end
@@ -0,0 +1,82 @@
1
+ module Sprig::Reap
2
+ class FileAttribute
3
+ attr_reader :input
4
+
5
+ def initialize(input)
6
+ @input = input
7
+ end
8
+
9
+ def file
10
+ local_file if file?
11
+ end
12
+
13
+ def file?
14
+ input.is_a? CarrierWave::Uploader::Base
15
+ end
16
+
17
+ def existing_location
18
+ begin
19
+ input.url if input.url.present? && open(input.url).is_a?(Tempfile)
20
+ rescue
21
+ input.path
22
+ end
23
+ end
24
+
25
+ def filename
26
+ File.basename(existing_location)
27
+ end
28
+
29
+ def target_folder
30
+ @target_folder ||= begin
31
+ path = Rails.root.join('db', 'seeds', Sprig::Reap.target_env, 'files')
32
+ FileUtils.mkdir_p(path)
33
+ path
34
+ end
35
+ end
36
+
37
+ def target_location
38
+ target_folder.join(filename)
39
+ end
40
+
41
+ def local_file
42
+ @local_file ||= LocalFile.new(existing_location, target_location)
43
+ end
44
+
45
+ private
46
+
47
+ class LocalFile < Struct.new(:uri, :target_location)
48
+ delegate :path, :size, :to => :file
49
+
50
+ def file
51
+ @file ||= File.open(unique_location, 'w', :encoding => encoding).tap do |file|
52
+ io.rewind
53
+ file.write(io.read)
54
+ io.close
55
+ end
56
+ end
57
+
58
+ def io
59
+ @io ||= open uri
60
+ end
61
+
62
+ def sprig_location
63
+ "<%= sprig_file('#{File.basename(file.path)}') %>"
64
+ end
65
+
66
+ private
67
+
68
+ def unique_location
69
+ File.exist?(target_location) ? target_location.to_s.gsub(basename, basename + SecureRandom::uuid.to_s) : target_location
70
+ end
71
+
72
+ def encoding
73
+ io.rewind
74
+ io.read.encoding
75
+ end
76
+
77
+ def basename
78
+ @basename ||= File.basename(target_location).gsub(File.extname(target_location), '')
79
+ end
80
+ end
81
+ end
82
+ end
@@ -30,11 +30,11 @@ module Sprig::Reap
30
30
  if dependency?(attr)
31
31
  klass = klass_for(attr)
32
32
  id = record.send(attr)
33
- sprig_id = Model.find(klass, id).sprig_id
33
+ sprig_id = Model.find(klass, id).try(:sprig_id)
34
34
 
35
35
  sprig_record(klass, sprig_id)
36
36
  else
37
- record.send(attr)
37
+ read_attribute attr
38
38
  end
39
39
  end
40
40
 
@@ -57,7 +57,15 @@ module Sprig::Reap
57
57
  end
58
58
 
59
59
  def sprig_record(klass, sprig_id)
60
+ return if sprig_id.nil?
61
+
60
62
  "<%= sprig_record(#{klass}, #{sprig_id}).id %>"
61
63
  end
64
+
65
+ def read_attribute(attr)
66
+ file_attr = FileAttribute.new(record.send(attr))
67
+
68
+ file_attr.file.try(:sprig_location) || record.read_attribute(attr)
69
+ end
62
70
  end
63
71
  end
@@ -1,5 +1,5 @@
1
1
  module Sprig
2
2
  module Reap
3
- VERSION = "0.0.5"
3
+ VERSION = "0.0.6"
4
4
  end
5
5
  end
data/lib/sprig/reap.rb CHANGED
@@ -8,6 +8,7 @@ module Sprig::Reap
8
8
  autoload :Association, 'sprig/reap/association'
9
9
  autoload :Record, 'sprig/reap/record'
10
10
  autoload :SeedFile, 'sprig/reap/seed_file'
11
+ autoload :FileAttribute, 'sprig/reap/file_attribute'
11
12
 
12
13
  class << self
13
14
  def reap(input = {})
Binary file
Binary file
@@ -2,4 +2,12 @@ class Post < ActiveRecord::Base
2
2
  belongs_to :poster, :class_name => "User"
3
3
 
4
4
  has_many :votes, :as => :votable
5
+
6
+ def title
7
+ WrappedAttribute.new(self[:title])
8
+ end
9
+
10
+ private
11
+
12
+ WrappedAttribute = Struct.new(:value)
5
13
  end
@@ -1,3 +1,7 @@
1
+ require './spec/fixtures/uploaders/avatar_uploader'
2
+
1
3
  class User < ActiveRecord::Base
2
4
  validates :first_name, :last_name, :presence => true
5
+
6
+ mount_uploader :avatar, AvatarUploader
3
7
  end
@@ -0,0 +1,3 @@
1
+ class AvatarUploader < CarrierWave::Uploader::Base
2
+ storage :file
3
+ end
@@ -36,6 +36,12 @@ describe Sprig::Reap::Association do
36
36
 
37
37
  its(:klass) { should == User }
38
38
  end
39
+
40
+ context "given a polymorphic association" do
41
+ subject { described_class.new(polymorphic_association) }
42
+
43
+ its(:klass) { should == nil }
44
+ end
39
45
  end
40
46
 
41
47
  describe "#polymorphic_dependencies" do
@@ -72,15 +78,49 @@ describe Sprig::Reap::Association do
72
78
 
73
79
  describe "#dependencies" do
74
80
  context "when the association is polymorphic" do
75
- subject { described_class.new(standard_association) }
81
+ subject { described_class.new(polymorphic_association) }
76
82
 
77
83
  its(:dependencies) { should == [Post] }
78
84
  end
79
85
 
80
86
  context "when the association is not polymorphic" do
81
- subject { described_class.new(polymorphic_association) }
87
+ subject { described_class.new(standard_association) }
82
88
 
83
89
  its(:dependencies) { should == [Post] }
84
90
  end
85
91
  end
92
+
93
+ describe "#foreign_key" do
94
+ context "given a standard association" do
95
+ subject { described_class.new(standard_association) }
96
+
97
+ its(:foreign_key) { should == 'post_id' }
98
+ end
99
+
100
+ context "given a named association" do
101
+ subject { described_class.new(class_named_association) }
102
+
103
+ its(:foreign_key) { should == 'poster_id' }
104
+ end
105
+
106
+ context "given a polymorphic association" do
107
+ subject { described_class.new(polymorphic_association) }
108
+
109
+ its(:foreign_key) { should == 'votable_id' }
110
+ end
111
+ end
112
+
113
+ describe "#polymorphic_type" do
114
+ context "when the association is polymorphic" do
115
+ subject { described_class.new(polymorphic_association) }
116
+
117
+ its(:polymorphic_type) { should == 'votable_type' }
118
+ end
119
+
120
+ context "when the association is not polymorphic" do
121
+ subject { described_class.new(standard_association) }
122
+
123
+ its(:polymorphic_type) { should == nil }
124
+ end
125
+ end
86
126
  end
@@ -0,0 +1,201 @@
1
+ require 'spec_helper'
2
+
3
+ describe Sprig::Reap::FileAttribute do
4
+ let!(:user) do
5
+ User.create(:first_name => 'Bo',
6
+ :last_name => 'Janglez',
7
+ :avatar => File.open('spec/fixtures/images/avatar.png'))
8
+ end
9
+
10
+ let!(:carrierwave) { described_class.new(user.avatar) }
11
+ let!(:not_a_file) { described_class.new(user.first_name) }
12
+
13
+ before do
14
+ stub_rails_root
15
+ Sprig::Reap.stub(:target_env).and_return('dreamland')
16
+ end
17
+
18
+ after do
19
+ FileUtils.remove_dir('./uploads') # Generated by CarrierWave
20
+ end
21
+
22
+ describe "#file" do
23
+ around do |example|
24
+ setup_seed_folder('./spec/fixtures/db/seeds/dreamland/files', &example)
25
+ end
26
+
27
+ context "when the given input is a carrierwave uploader" do
28
+ subject { carrierwave }
29
+
30
+ its(:file) { should be_an_instance_of(Sprig::Reap::FileAttribute::LocalFile) }
31
+ end
32
+
33
+ context "when the given input is not a recognized file object" do
34
+ subject { not_a_file }
35
+
36
+ its(:file) { should == nil }
37
+ end
38
+ end
39
+
40
+ describe "#file?" do
41
+ context "when the given input is a carrierwave uploader" do
42
+ subject { carrierwave }
43
+
44
+ its(:file?) { should == true }
45
+ end
46
+
47
+ context "when the given input is not a recognized file object" do
48
+ subject { not_a_file }
49
+
50
+ its(:file?) { should == false }
51
+ end
52
+ end
53
+
54
+ describe "#existing_location" do
55
+ subject { carrierwave }
56
+
57
+ context "for a locally-stored file" do
58
+ its(:existing_location) { should == subject.input.path }
59
+ end
60
+
61
+ context "for a remotely-stored file" do
62
+ context "with an incomplete url (CarrierWave storage set to :file for dev/test)" do
63
+ before { subject.input.stub(:url).and_return('/carrierwave/storage/file') }
64
+
65
+ it "falls back to the local path in the case of " do
66
+ subject.existing_location.should == subject.input.path
67
+ end
68
+ end
69
+
70
+ context "with a valid url" do
71
+ before { mock_remote subject }
72
+
73
+ its(:existing_location) { should == sprig_logo_url }
74
+ end
75
+ end
76
+ end
77
+
78
+ describe "#filename" do
79
+ subject { carrierwave }
80
+
81
+ context "for a locally-stored file" do
82
+ its(:filename) { should == 'avatar.png' }
83
+ end
84
+
85
+ context "for a remotely-stored file" do
86
+ before { mock_remote subject }
87
+
88
+ its(:filename) { should == File.basename(sprig_logo_url) }
89
+ end
90
+ end
91
+
92
+ describe "#target_location" do
93
+ subject { carrierwave }
94
+
95
+ context "when the files folder does not exist" do
96
+ let(:files_folder) { './spec/fixtures/db/seeds/dreamland/files' }
97
+ let(:delete_folder) { FileUtils.remove_dir(files_folder) if Dir.exists?(files_folder) }
98
+
99
+ before { delete_folder }
100
+ after { delete_folder }
101
+
102
+ it "creates the folder and returns the path" do
103
+ Dir.exists?(files_folder).should == false
104
+
105
+ subject.target_location.to_s.should == files_folder + '/' + subject.filename
106
+
107
+ Dir.exists?(files_folder).should == true
108
+ end
109
+ end
110
+
111
+ context "when the files folder exists" do
112
+ around do |example|
113
+ setup_seed_folder('./spec/fixtures/db/seeds/dreamland/files', &example)
114
+ end
115
+
116
+ its(:target_location) { should == Rails.root.join('db', 'seeds', 'dreamland', 'files', subject.filename) }
117
+ end
118
+ end
119
+
120
+ describe "#local_file" do
121
+ around do |example|
122
+ setup_seed_folder('./spec/fixtures/db/seeds/dreamland/files', &example)
123
+ end
124
+
125
+ context "when the existing location is a url" do
126
+ subject { carrierwave }
127
+
128
+ let(:local_file) { subject.local_file }
129
+
130
+ before do
131
+ mock_remote subject
132
+ end
133
+
134
+ it "returns a LocalFile" do
135
+ local_file.should be_an_instance_of(Sprig::Reap::FileAttribute::LocalFile)
136
+ end
137
+
138
+ it "creates a file at the target location" do
139
+ local_file.path.should == subject.target_location.to_s
140
+ end
141
+
142
+ it "creates a file with the same contents as the file from the existing location" do
143
+ File.open(local_file.path, 'r') do |local_file|
144
+ open(subject.existing_location) do |existing_file|
145
+ local_file.should be_same_file_as(existing_file)
146
+ end
147
+ end
148
+ end
149
+
150
+ context "and a file already exists at the target location" do
151
+ before do
152
+ File.stub(:exist?).with(subject.target_location).and_return(true)
153
+ end
154
+
155
+ it "assigns a unique filename" do
156
+ local_file.path.should_not == subject.target_location.to_s
157
+ end
158
+ end
159
+ end
160
+
161
+ context "when the existing location is a path" do
162
+ subject { carrierwave }
163
+
164
+ let(:local_file) { subject.local_file }
165
+
166
+ it "returns a LocalFile" do
167
+ local_file.should be_an_instance_of(Sprig::Reap::FileAttribute::LocalFile)
168
+ end
169
+
170
+ it "creates a file at the target location" do
171
+ local_file.path.should == subject.target_location.to_s
172
+ end
173
+
174
+ it "creates a file with the same contents as the file from the existing location" do
175
+ File.open(local_file.path, 'r') do |local_file|
176
+ File.open(subject.existing_location, 'r') do |existing_file|
177
+ local_file.should be_same_file_as(existing_file)
178
+ end
179
+ end
180
+ end
181
+
182
+ context "and a file already exists at the target location" do
183
+ before do
184
+ File.stub(:exist?).with(subject.target_location).and_return(true)
185
+ end
186
+
187
+ it "assigns a unique filename" do
188
+ local_file.path.should_not == subject.target_location.to_s
189
+ end
190
+ end
191
+ end
192
+ end
193
+
194
+ def mock_remote(file_attr)
195
+ file_attr.input.stub(:url).and_return(sprig_logo_url)
196
+ end
197
+
198
+ def sprig_logo_url
199
+ 'https://camo.githubusercontent.com/ac48b093dc90330d2b9f3bb59671d384fe092166/687474703a2f2f692e696d6775722e636f6d2f5843753369564f2e706e67'
200
+ end
201
+ end
@@ -3,68 +3,116 @@ require 'spec_helper'
3
3
  class Very; end
4
4
 
5
5
  describe Sprig::Reap::Record do
6
- let(:record) { double('ActiveRecord::Base Instance') }
7
- let(:model) { double('Sprig::Reap::Model') }
8
- let(:reap_record) { double('Sprig::Reap::Record for class Very', :sprig_id => 5) }
9
- let(:association) do
10
- double('Sprig::Reap::Association',
11
- :foreign_key => "very_id",
12
- :klass => Very,
13
- :polymorphic? => false
14
- )
6
+ let!(:user) do
7
+ User.create(:first_name => 'Bo',
8
+ :last_name => 'Janglez',
9
+ :avatar => File.open('spec/fixtures/images/avatar.png'))
15
10
  end
16
- let(:sprig_record) { "<%= sprig_record(Very, 5).id %>" }
17
11
 
18
- subject { described_class.new(record, model) }
12
+ let!(:post) do
13
+ Post.create(:poster => user,
14
+ :title => 'Such Title',
15
+ :content => 'Very Content',
16
+ :published => true)
17
+ end
19
18
 
20
- before do
21
- attrs = {
22
- 'id' => 0,
23
- 'such' => 1,
24
- 'wow' => 2,
25
- 'very_id' => 3
26
- }
27
-
28
- attrs.each_pair do |attr, val|
29
- record.stub(attr).and_return(val)
30
- end
19
+ let!(:posterless_post) do
20
+ Post.create(:poster => nil,
21
+ :title => 'Wow Title',
22
+ :content => 'Much Content',
23
+ :published => false)
24
+ end
31
25
 
32
- model.stub(:attributes).and_return(attrs.keys)
33
- model.stub(:existing_sprig_ids).and_return([])
34
- model.stub(:associations).and_return([association])
26
+ let!(:models) { Sprig::Reap::Model.all }
27
+ let!(:model) { models.find { |model| model.klass == Post } }
28
+
29
+ before do
30
+ stub_rails_root
31
+ Sprig::Reap.stub(:target_env).and_return('dreamland')
32
+ end
35
33
 
36
- Sprig::Reap::Model.stub(:find).and_return(reap_record)
34
+ after do
35
+ FileUtils.remove_dir('./uploads')
37
36
  end
38
37
 
39
- its(:id) { should == 0 }
38
+ describe "#id" do
39
+ subject { described_class.new(post, model) }
40
+
41
+ its(:id) { should == post.id }
42
+ end
40
43
 
41
44
  describe "#attributes" do
45
+ subject { described_class.new(post, model) }
46
+
42
47
  it "returns an array of attributes from the given model sans id" do
43
48
  subject.attributes.should == %w(
44
- such
45
- wow
46
- very_id
49
+ title
50
+ content
51
+ published
52
+ poster_id
47
53
  )
48
54
  end
49
55
  end
50
56
 
51
57
  describe "#to_hash" do
58
+ subject { described_class.new(post, model) }
59
+
52
60
  it "returns its attributes and their values in a hash" do
53
61
  subject.to_hash.should == {
54
- 'sprig_id' => 0,
55
- 'such' => 1,
56
- 'wow' => 2,
57
- 'very_id' => sprig_record
62
+ 'sprig_id' => post.id,
63
+ 'title' => 'Such Title',
64
+ 'content' => 'Very Content',
65
+ 'published' => true,
66
+ 'poster_id' => "<%= sprig_record(User, #{user.id}).id %>"
58
67
  }
59
68
  end
69
+
70
+ context "when an association/foreign_key is nil" do
71
+ subject { described_class.new(posterless_post, model) }
72
+
73
+ it "does not list a sprig record for the nil association" do
74
+ subject.to_hash.should == {
75
+ 'sprig_id' => posterless_post.id,
76
+ 'title' => 'Wow Title',
77
+ 'content' => 'Much Content',
78
+ 'published' => false,
79
+ 'poster_id' => nil
80
+ }
81
+ end
82
+ end
83
+
84
+ context "when an attribute is wrapped in a CarrierWave uploader" do
85
+ let(:user_model) { models.find { |model| model.klass == User } }
86
+
87
+ subject { described_class.new(user, user_model) }
88
+
89
+ around do |example|
90
+ setup_seed_folder('./spec/fixtures/db/seeds/dreamland/files', &example)
91
+ end
92
+
93
+ it "provides a path for a locally-stored version of the file" do
94
+ subject.to_hash.should == {
95
+ 'sprig_id' => user.id,
96
+ 'first_name' => 'Bo',
97
+ 'last_name' => 'Janglez',
98
+ 'type' => user.type,
99
+ 'avatar' => "<%= sprig_file('avatar.png') %>"
100
+ }
101
+ end
102
+ end
103
+ end
104
+
105
+ describe "#local_file_for" do
60
106
  end
61
107
 
62
108
  describe "#sprig_id" do
63
- its(:sprig_id) { should == record.id }
109
+ subject { described_class.new(post, model) }
110
+
111
+ its(:sprig_id) { should == post.id }
64
112
 
65
113
  context "when an existing seed record has a sprig_id equal to the record's id" do
66
114
  before do
67
- model.stub(:existing_sprig_ids).and_return([record.id])
115
+ model.stub(:existing_sprig_ids).and_return([post.id])
68
116
  model.stub(:generate_sprig_id).and_return(25)
69
117
  end
70
118
 
data/spec/spec_helper.rb CHANGED
@@ -5,11 +5,13 @@ require "active_record"
5
5
  require "database_cleaner"
6
6
  require "pry"
7
7
  require "generator_spec"
8
+ require "carrierwave"
9
+ require 'carrierwave/orm/activerecord'
8
10
 
9
11
  require "sprig-reap"
10
12
 
11
13
  %w(
12
- /fixtures/models/*rb
14
+ /fixtures/**/*.rb
13
15
  /support/**/*.rb
14
16
  ).each do |file_set|
15
17
  Dir[File.dirname(__FILE__) + file_set].each { |file| require file }
@@ -39,7 +41,7 @@ end
39
41
  ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => "spec/db/activerecord.db")
40
42
 
41
43
  User.connection.execute "DROP TABLE IF EXISTS users;"
42
- User.connection.execute "CREATE TABLE users (id INTEGER PRIMARY KEY , first_name VARCHAR(255), last_name VARCHAR(255), type VARCHAR(255));"
44
+ User.connection.execute "CREATE TABLE users (id INTEGER PRIMARY KEY , first_name VARCHAR(255), last_name VARCHAR(255), type VARCHAR(255), avatar VARCHAR(225));"
43
45
 
44
46
  Post.connection.execute "DROP TABLE IF EXISTS posts;"
45
47
  Post.connection.execute "CREATE TABLE posts (id INTEGER PRIMARY KEY , title VARCHAR(255), content VARCHAR(255), published BOOLEAN , poster_id INTEGER);"
@@ -0,0 +1,21 @@
1
+ RSpec::Matchers.define(:be_same_file_as) do |exected_file|
2
+ match do |actual_file|
3
+ md5_hash(relevant_contents_of(actual_file)).should == md5_hash(relevant_contents_of(exected_file))
4
+ end
5
+
6
+ def md5_hash(string)
7
+ Digest::MD5.hexdigest(string)
8
+ end
9
+
10
+ def relevant_contents_of(file)
11
+ file.read.encode('UTF-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '').tap do |contents|
12
+ contents.sub!(/\/Title[^\n]*/, '')
13
+ contents.sub!(/\/CreationDate[^\n]*/, '')
14
+ contents.sub!(/\/ModDate[^\n]*/, '')
15
+ contents.sub!(/\/Producer[^\n]*/, '')
16
+ contents.sub!(/\/ID[^\]]*/, '')
17
+ contents.sub!(/\/DocChecksum[^\n]*/, '')
18
+ contents.sub!(/startxref\n[\d]+/, '')
19
+ end
20
+ end
21
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprig-reap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
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: 2014-06-24 00:00:00.000000000 Z
12
+ date: 2014-07-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -107,6 +107,22 @@ dependencies:
107
107
  - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: carrierwave
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 0.10.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 0.10.0
110
126
  description: Sprig-Reap is a gem that allows you to output your application's data
111
127
  state to seed files.
112
128
  email:
@@ -117,6 +133,7 @@ extra_rdoc_files: []
117
133
  files:
118
134
  - lib/sprig/reap/association.rb
119
135
  - lib/sprig/reap/configuration.rb
136
+ - lib/sprig/reap/file_attribute.rb
120
137
  - lib/sprig/reap/model.rb
121
138
  - lib/sprig/reap/railtie.rb
122
139
  - lib/sprig/reap/record.rb
@@ -130,10 +147,12 @@ files:
130
147
  - Rakefile
131
148
  - README.md
132
149
  - spec/db/activerecord.db
150
+ - spec/fixtures/images/avatar.png
133
151
  - spec/fixtures/models/comment.rb
134
152
  - spec/fixtures/models/post.rb
135
153
  - spec/fixtures/models/user.rb
136
154
  - spec/fixtures/models/vote.rb
155
+ - spec/fixtures/uploaders/avatar_uploader.rb
137
156
  - spec/fixtures/yaml/comment_seeds.yml
138
157
  - spec/fixtures/yaml/polymorphic_vote_record.yml
139
158
  - spec/fixtures/yaml/post_seeds.yml
@@ -142,6 +161,7 @@ files:
142
161
  - spec/fixtures/yaml/user_seeds.yml
143
162
  - spec/lib/sprig/reap/association_spec.rb
144
163
  - spec/lib/sprig/reap/configuration_spec.rb
164
+ - spec/lib/sprig/reap/file_attribute_spec.rb
145
165
  - spec/lib/sprig/reap/model_spec.rb
146
166
  - spec/lib/sprig/reap/record_spec.rb
147
167
  - spec/lib/sprig/reap/seed_file_spec.rb
@@ -149,6 +169,7 @@ files:
149
169
  - spec/lib/sprig_spec.rb
150
170
  - spec/spec_helper.rb
151
171
  - spec/support/file_setup.rb
172
+ - spec/support/matchers/be_same_file_as.rb
152
173
  - spec/support/rails_stubs.rb
153
174
  homepage: http://www.github.com/vigetlabs/sprig-reap
154
175
  licenses:
@@ -177,10 +198,12 @@ specification_version: 3
177
198
  summary: Automatic seed file generation for Rails apps using Sprig.
178
199
  test_files:
179
200
  - spec/db/activerecord.db
201
+ - spec/fixtures/images/avatar.png
180
202
  - spec/fixtures/models/comment.rb
181
203
  - spec/fixtures/models/post.rb
182
204
  - spec/fixtures/models/user.rb
183
205
  - spec/fixtures/models/vote.rb
206
+ - spec/fixtures/uploaders/avatar_uploader.rb
184
207
  - spec/fixtures/yaml/comment_seeds.yml
185
208
  - spec/fixtures/yaml/polymorphic_vote_record.yml
186
209
  - spec/fixtures/yaml/post_seeds.yml
@@ -189,6 +212,7 @@ test_files:
189
212
  - spec/fixtures/yaml/user_seeds.yml
190
213
  - spec/lib/sprig/reap/association_spec.rb
191
214
  - spec/lib/sprig/reap/configuration_spec.rb
215
+ - spec/lib/sprig/reap/file_attribute_spec.rb
192
216
  - spec/lib/sprig/reap/model_spec.rb
193
217
  - spec/lib/sprig/reap/record_spec.rb
194
218
  - spec/lib/sprig/reap/seed_file_spec.rb
@@ -196,4 +220,5 @@ test_files:
196
220
  - spec/lib/sprig_spec.rb
197
221
  - spec/spec_helper.rb
198
222
  - spec/support/file_setup.rb
223
+ - spec/support/matchers/be_same_file_as.rb
199
224
  - spec/support/rails_stubs.rb