mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-29 18:19:39 +02:00
Add initial model tests with starter fixtures for User, Family, and Account (#281)
* Add initial user fixture * Add initial tests for the User model * Add initial tests for Family and a valid Account * Pass rubocop
This commit is contained in:
parent
472746df06
commit
69698d0463
6 changed files with 107 additions and 35 deletions
21
test/fixtures/accounts.yml
vendored
21
test/fixtures/accounts.yml
vendored
|
@ -1,11 +1,14 @@
|
|||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
dylan_checking:
|
||||
family: dylan_family
|
||||
name: Bob's Checking
|
||||
balance: 1200
|
||||
|
||||
one:
|
||||
family: one
|
||||
name: MyString
|
||||
balance:
|
||||
dylan_roth:
|
||||
family: dylan_family
|
||||
name: Bob's Roth IRA
|
||||
balance: 1200
|
||||
|
||||
two:
|
||||
family: two
|
||||
name: MyString
|
||||
balance:
|
||||
richards_savings:
|
||||
family: richards_family
|
||||
name: Keef's HYSA
|
||||
balance: 1500
|
8
test/fixtures/families.yml
vendored
8
test/fixtures/families.yml
vendored
|
@ -1,7 +1,7 @@
|
|||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
name: MyString
|
||||
dylan_family:
|
||||
name: The Dylan Family
|
||||
|
||||
two:
|
||||
name: MyString
|
||||
richards_family:
|
||||
name: The Richards Family
|
||||
|
|
31
test/fixtures/users.yml
vendored
31
test/fixtures/users.yml
vendored
|
@ -1,15 +1,20 @@
|
|||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
bob:
|
||||
family: dylan_family
|
||||
first_name: Bob
|
||||
last_name: Dylan
|
||||
email: bob@bobdylan.com
|
||||
password_digest: <%= BCrypt::Password.create('password') %>
|
||||
|
||||
one:
|
||||
family: one
|
||||
first_name: MyString
|
||||
last_name: MyString
|
||||
email: MyString
|
||||
password_digest: MyString
|
||||
jakob:
|
||||
family: dylan_family
|
||||
first_name: Jakob
|
||||
last_name: Dylan
|
||||
email: jakobdylan@yahoo.com
|
||||
password_digest: <%= BCrypt::Password.create('password') %>
|
||||
|
||||
two:
|
||||
family: two
|
||||
first_name: MyString
|
||||
last_name: MyString
|
||||
email: MyString
|
||||
password_digest: MyString
|
||||
keith:
|
||||
family: richards_family
|
||||
first_name: Keith
|
||||
last_name: Richards
|
||||
email: keith@rollingstones.com
|
||||
password_digest: <%= BCrypt::Password.create('password') %>
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
require "test_helper"
|
||||
|
||||
class AccountTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
test "new account should be valid" do
|
||||
depository = Account::Depository.create!
|
||||
account = Account.create!(family: families(:dylan_family), name: "Explicit Checking", balance: 1200, accountable: depository)
|
||||
assert account.valid?
|
||||
assert_not_nil account.accountable_id
|
||||
assert_not_nil account.accountable
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,7 +1,28 @@
|
|||
require "test_helper"
|
||||
|
||||
class FamilyTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
def setup
|
||||
@dylan_family = families(:dylan_family)
|
||||
end
|
||||
|
||||
test "should have many users" do
|
||||
assert_equal 2, @dylan_family.users.size
|
||||
assert @dylan_family.users.include?(users(:bob))
|
||||
end
|
||||
|
||||
test "should have many accounts" do
|
||||
assert_equal 2, @dylan_family.accounts.size
|
||||
end
|
||||
|
||||
test "should destroy dependent users" do
|
||||
assert_difference("User.count", -@dylan_family.users.count) do
|
||||
@dylan_family.destroy
|
||||
end
|
||||
end
|
||||
|
||||
test "should destroy dependent accounts" do
|
||||
assert_difference("Account.count", -@dylan_family.accounts.count) do
|
||||
@dylan_family.destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,7 +1,46 @@
|
|||
require "test_helper"
|
||||
|
||||
class UserTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
def setup
|
||||
@user = users(:bob)
|
||||
end
|
||||
|
||||
test "should be valid" do
|
||||
assert @user.valid?, @user.errors.full_messages.to_sentence
|
||||
end
|
||||
|
||||
# email
|
||||
test "email must be present" do
|
||||
potential_user = User.new(
|
||||
email: "david@davidbowie.com",
|
||||
password_digest: BCrypt::Password.create("password"),
|
||||
first_name: "David",
|
||||
last_name: "Bowie"
|
||||
)
|
||||
potential_user.email = " "
|
||||
assert_not potential_user.valid?
|
||||
end
|
||||
|
||||
test "has email address" do
|
||||
assert_equal "bob@bobdylan.com", @user.email
|
||||
end
|
||||
|
||||
test "can update email" do
|
||||
@user.update(email: "new_email@example.com")
|
||||
assert_equal "new_email@example.com", @user.email
|
||||
end
|
||||
|
||||
test "email addresses must be unique" do
|
||||
duplicate_user = @user.dup
|
||||
duplicate_user.email = @user.email.upcase
|
||||
@user.save
|
||||
assert_not duplicate_user.valid?
|
||||
end
|
||||
|
||||
test "email addresses are be saved as lower-case" do
|
||||
mixed_case_email = "Foo@ExAMPle.CoM"
|
||||
@user.email = mixed_case_email
|
||||
@user.save
|
||||
assert_equal mixed_case_email.downcase, @user.reload.email
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue