Skip to content

Commit ed7084e

Browse files
authored
Merge pull request #38 from merlos/feature/add-tests
Add unit testing to model
2 parents 6c3548c + 671a2b0 commit ed7084e

6 files changed

Lines changed: 75 additions & 3 deletions

File tree

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,9 @@
3232

3333
# Ignore master key for decrypting credentials and more.
3434
/config/master.key
35+
36+
# ignore coverage
37+
/coverage
38+
39+
# Ignore Mac system files
40+
.DS_Store

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,5 @@ group :test do
6464
# Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
6565
gem "capybara"
6666
gem "selenium-webdriver"
67+
gem "simplecov", require: false
6768
end

Gemfile.lock

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ GEM
110110
delayed_job_active_record (4.1.11)
111111
activerecord (>= 3.0, < 9.0)
112112
delayed_job (>= 3.0, < 5)
113+
docile (1.4.1)
113114
dotenv (3.1.4)
114115
drb (2.2.1)
115116
ed25519 (1.3.0)
@@ -287,6 +288,12 @@ GEM
287288
rexml (~> 3.2, >= 3.2.5)
288289
rubyzip (>= 1.2.2, < 3.0)
289290
websocket (~> 1.0)
291+
simplecov (0.22.0)
292+
docile (~> 1.1)
293+
simplecov-html (~> 0.11)
294+
simplecov_json_formatter (~> 0.1)
295+
simplecov-html (0.13.1)
296+
simplecov_json_formatter (0.1.4)
290297
solid_cable (3.0.4)
291298
actioncable (>= 7.2)
292299
activejob (>= 7.2)
@@ -382,6 +389,7 @@ DEPENDENCIES
382389
rails (~> 8.0.0)
383390
rubocop-rails-omakase
384391
selenium-webdriver
392+
simplecov
385393
solid_cable
386394
solid_cache
387395
solid_queue

test/models/message_test.rb

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,53 @@
11
require "test_helper"
22

33
class MessageTest < ActiveSupport::TestCase
4-
# test "the truth" do
5-
# assert true
6-
# end
4+
include ActiveJob::TestHelper
5+
def setup
6+
@message = Message.new(
7+
views_remaining: 10,
8+
encrypted_content: "encrypted content",
9+
)
10+
end
11+
12+
test "should be valid with valid attributes" do
13+
assert @message.valid?
14+
end
15+
16+
test "should not be valid with views_remaining less than 1" do
17+
@message.views_remaining = 0
18+
assert_not @message.valid?
19+
end
20+
21+
test "should not be valid with views_remaining greater than 50" do
22+
@message.views_remaining = 51
23+
assert_not @message.valid?
24+
end
25+
26+
test "should not be valid with expiration_time beyond limit" do
27+
@message.expiration_time = Time.current + Message::MAX_ALLOWED_TIME + 1.day
28+
assert_not @message.valid?
29+
end
30+
31+
test "should set defaults before create" do
32+
@message.save
33+
assert_not_nil @message.id
34+
end
35+
36+
test "should auto delete expired messages" do
37+
@message.expiration_time = Time.current - 1.day
38+
@message.save
39+
# fixtures has 2 messages + this one
40+
assert_difference("Message.count", -3) do
41+
Message.auto_delete_expired
42+
end
43+
end
44+
45+
test "should destroy message if it has expired" do
46+
@message.expiration_time = Time.current - 1.day
47+
@message.save
48+
assert @message.has_expired
49+
assert_difference("Message.count", -1) do
50+
@message.auto_delete_expired
51+
end
52+
end
753
end

test/simplecov_helper.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
require "simplecov"
2+
SimpleCov.start "rails" do
3+
add_filter "/bin/"
4+
add_filter "/db/"
5+
add_filter "/spec/"
6+
add_filter "/test/"
7+
8+
# Set minimum coverage percentage
9+
# minimum_coverage 90
10+
end

test/test_helper.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
ENV["RAILS_ENV"] ||= "test"
2+
require_relative "simplecov_helper"
23
require_relative "../config/environment"
34
require "rails/test_help"
45

0 commit comments

Comments
 (0)