1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-07-29 10:09: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:
Lee McAlilly 2024-02-03 13:07:23 -06:00 committed by GitHub
parent 472746df06
commit 69698d0463
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 107 additions and 35 deletions

View file

@ -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: dylan_roth:
family: one family: dylan_family
name: MyString name: Bob's Roth IRA
balance: balance: 1200
two: richards_savings:
family: two family: richards_family
name: MyString name: Keef's HYSA
balance: balance: 1500

View file

@ -1,7 +1,7 @@
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one: dylan_family:
name: MyString name: The Dylan Family
two: richards_family:
name: MyString name: The Richards Family

View file

@ -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: jakob:
family: one family: dylan_family
first_name: MyString first_name: Jakob
last_name: MyString last_name: Dylan
email: MyString email: jakobdylan@yahoo.com
password_digest: MyString password_digest: <%= BCrypt::Password.create('password') %>
two: keith:
family: two family: richards_family
first_name: MyString first_name: Keith
last_name: MyString last_name: Richards
email: MyString email: keith@rollingstones.com
password_digest: MyString password_digest: <%= BCrypt::Password.create('password') %>

View file

@ -1,7 +1,11 @@
require "test_helper" require "test_helper"
class AccountTest < ActiveSupport::TestCase class AccountTest < ActiveSupport::TestCase
# test "the truth" do test "new account should be valid" do
# assert true depository = Account::Depository.create!
# end 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 end

View file

@ -1,7 +1,28 @@
require "test_helper" require "test_helper"
class FamilyTest < ActiveSupport::TestCase class FamilyTest < ActiveSupport::TestCase
# test "the truth" do def setup
# assert true @dylan_family = families(:dylan_family)
# end 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 end

View file

@ -1,7 +1,46 @@
require "test_helper" require "test_helper"
class UserTest < ActiveSupport::TestCase class UserTest < ActiveSupport::TestCase
# test "the truth" do def setup
# assert true @user = users(:bob)
# end 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 end