Skip to content

Commit ba1282f

Browse files
committed
[Test] Set up Unit Test Framework
1 parent c585014 commit ba1282f

File tree

6 files changed

+71
-34
lines changed

6 files changed

+71
-34
lines changed

Gemfile

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ gem "bootsnap", require: false
3939
group :development, :test do
4040
# See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
4141
gem "debug", platforms: %i[ mri mswin mswin64 mingw x64_mingw ], require: "debug/prelude"
42-
gem "rspec-rails"
43-
gem "factory_bot_rails"
44-
gem "faker"
45-
gem "pry-rails"
42+
gem "rspec-rails", "~> 6.0"
43+
gem "factory_bot_rails", "~> 6.2"
44+
gem "shoulda-matchers", "~> 5.3"
45+
gem "database_cleaner-active_record", "~> 2.1"
4646

4747
# Static analysis for security vulnerabilities [https://brakemanscanner.org/]
4848
gem "brakeman", require: false
@@ -64,7 +64,6 @@ group :test do
6464
# Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
6565
gem "capybara"
6666
gem "selenium-webdriver"
67-
gem "shoulda-matchers"
6867
gem "rails-controller-testing"
6968
end
7069

Gemfile.lock

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,13 @@ GEM
9797
cgi (0.4.2)
9898
childprocess (5.1.0)
9999
logger (~> 1.5)
100-
coderay (1.1.3)
101100
concurrent-ruby (1.3.5)
102101
connection_pool (2.5.3)
103102
crass (1.0.6)
103+
database_cleaner-active_record (2.2.1)
104+
activerecord (>= 5.a)
105+
database_cleaner-core (~> 2.0.0)
106+
database_cleaner-core (2.0.1)
104107
date (3.4.1)
105108
debug (1.10.0)
106109
irb (~> 1.10)
@@ -126,8 +129,6 @@ GEM
126129
factory_bot_rails (6.4.4)
127130
factory_bot (~> 6.5)
128131
railties (>= 5.0.0)
129-
faker (3.5.1)
130-
i18n (>= 1.8.11, < 2)
131132
ffi (1.17.2)
132133
globalid (1.2.1)
133134
activesupport (>= 6.1)
@@ -180,7 +181,6 @@ GEM
180181
net-smtp
181182
marcel (1.0.4)
182183
matrix (0.4.2)
183-
method_source (1.1.0)
184184
mini_magick (5.2.0)
185185
benchmark
186186
logger
@@ -214,11 +214,6 @@ GEM
214214
prettyprint
215215
prettyprint (0.2.0)
216216
prism (1.4.0)
217-
pry (0.15.2)
218-
coderay (~> 1.1)
219-
method_source (~> 1.0)
220-
pry-rails (0.3.11)
221-
pry (>= 0.13.0)
222217
psych (5.2.6)
223218
date
224219
stringio
@@ -287,10 +282,10 @@ GEM
287282
rspec-mocks (3.13.5)
288283
diff-lcs (>= 1.2.0, < 2.0)
289284
rspec-support (~> 3.13.0)
290-
rspec-rails (8.0.0)
291-
actionpack (>= 7.2)
292-
activesupport (>= 7.2)
293-
railties (>= 7.2)
285+
rspec-rails (6.1.5)
286+
actionpack (>= 6.1)
287+
activesupport (>= 6.1)
288+
railties (>= 6.1)
294289
rspec-core (~> 3.13)
295290
rspec-expectations (~> 3.13)
296291
rspec-mocks (~> 3.13)
@@ -339,7 +334,7 @@ GEM
339334
websocket (~> 1.0)
340335
sendgrid-ruby (6.7.0)
341336
ruby_http_client (~> 3.4)
342-
shoulda-matchers (6.5.0)
337+
shoulda-matchers (5.3.0)
343338
activesupport (>= 5.2.0)
344339
sprockets (4.2.2)
345340
concurrent-ruby (~> 1.0)
@@ -393,27 +388,26 @@ DEPENDENCIES
393388
bootsnap
394389
brakeman
395390
capybara
391+
database_cleaner-active_record (~> 2.1)
396392
debug
397393
devise
398394
dotenv-rails
399395
error_highlight (>= 0.4.0)
400-
factory_bot_rails
401-
faker
396+
factory_bot_rails (~> 6.2)
402397
image_processing (~> 1.2)
403398
importmap-rails
404399
jbuilder
405400
kaminari
406401
letter_opener
407402
pg (~> 1.1)
408-
pry-rails
409403
puma (>= 5.0)
410404
rails (~> 7.2.2, >= 7.2.2.1)
411405
rails-controller-testing
412-
rspec-rails
406+
rspec-rails (~> 6.0)
413407
rubocop-rails-omakase
414408
selenium-webdriver
415409
sendgrid-ruby
416-
shoulda-matchers
410+
shoulda-matchers (~> 5.3)
417411
sprockets-rails
418412
stimulus-rails
419413
tailwindcss-rails (~> 2.0)

spec/factories/blog_posts.rb

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
FactoryBot.define do
22
factory :blog_post do
3-
title { "MyString" }
4-
content { "MyText" }
5-
author_name { "MyString" }
6-
author_email { "MyString" }
3+
title { "Sample Blog Post" }
4+
content { "Haluuu, this is a sample content" }
5+
association :author, factory: :user
76
end
87
end

spec/factories/feedbacks.rb

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
FactoryBot.define do
22
factory :feedback do
3-
name { "MyString" }
4-
email { "MyString" }
5-
message { "MyText" }
6-
blog_post { nil }
3+
message { "Niceee!!! :))" }
4+
association :user
5+
association :blog_post
76
end
87
end

spec/factories/users.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
FactoryBot.define do
22
factory :user do
3-
3+
name { "Test User" }
4+
sequence(:email) { |n| "user#{n}@example.com" }
5+
password { 'password' }
46
end
57
end

spec/rails_helper.rb

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# This file is copied to spec/ when you run 'rails generate rspec:install'
2-
require 'spec_helper'
2+
require 'devise'
3+
require 'warden'
4+
35
ENV['RAILS_ENV'] ||= 'test'
46
require_relative '../config/environment'
57
# Prevent database truncation if the environment is production
@@ -34,6 +36,7 @@
3436
rescue ActiveRecord::PendingMigrationError => e
3537
abort e.to_s.strip
3638
end
39+
3740
RSpec.configure do |config|
3841
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
3942
config.fixture_paths = [
@@ -69,4 +72,45 @@
6972
config.filter_rails_from_backtrace!
7073
# arbitrary gems may also be filtered via:
7174
# config.filter_gems_from_backtrace("gem name")
75+
76+
# Include FactoryBot methods
77+
config.include FactoryBot::Syntax::Methods
78+
79+
# Include Devise test helpers
80+
config.include Devise::Test::IntegrationHelpers, type: :request
81+
config.include Devise::Test::IntegrationHelpers, type: :controller
82+
config.include Warden::Test::Helpers
83+
84+
# Database Cleaner configuration
85+
config.before(:suite) do
86+
DatabaseCleaner.clean_with(:truncation)
87+
end
88+
89+
config.before(:each) do
90+
DatabaseCleaner.strategy = :transaction
91+
end
92+
93+
config.before(:each, js: true) do
94+
DatabaseCleaner.strategy = :truncation
95+
end
96+
97+
config.before(:each) do
98+
DatabaseCleaner.start
99+
end
100+
101+
config.after(:each) do
102+
DatabaseCleaner.clean
103+
end
104+
105+
config.after(:each) do
106+
Warden.test_reset!
107+
end
108+
end
109+
110+
# Shoulda Matchers configuration
111+
Shoulda::Matchers.configure do |config|
112+
config.integrate do |with|
113+
with.test_framework :rspec
114+
with.library :rails
115+
end
72116
end

0 commit comments

Comments
 (0)