add entry requests, invite new users
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
require "test_helper"
|
||||
|
||||
class EntryRequestTest < ActiveSupport::TestCase
|
||||
test "entry requires at least one translation" do
|
||||
entry = Entry.new(
|
||||
category: :word,
|
||||
status: :requested
|
||||
)
|
||||
|
||||
assert_not entry.valid?
|
||||
assert_includes entry.errors[:base], "At least one language translation is required"
|
||||
end
|
||||
|
||||
test "entry is valid with one translation" do
|
||||
entry = Entry.new(
|
||||
category: :word,
|
||||
fi: "sana",
|
||||
status: :requested
|
||||
)
|
||||
|
||||
assert entry.valid?
|
||||
end
|
||||
|
||||
test "entry is valid with multiple translations" do
|
||||
entry = Entry.new(
|
||||
category: :word,
|
||||
fi: "sana",
|
||||
en: "word",
|
||||
sv: "ord",
|
||||
status: :requested
|
||||
)
|
||||
|
||||
assert entry.valid?
|
||||
end
|
||||
|
||||
test "entry status defaults to active" do
|
||||
entry = Entry.new(
|
||||
category: :word,
|
||||
fi: "test"
|
||||
)
|
||||
|
||||
assert_equal "active", entry.status
|
||||
end
|
||||
|
||||
test "requested scope returns only requested entries" do
|
||||
requested_entries = Entry.requested
|
||||
assert_includes requested_entries, entries(:requested_entry)
|
||||
assert_not_includes requested_entries, entries(:one)
|
||||
assert_not_includes requested_entries, entries(:approved_entry)
|
||||
end
|
||||
|
||||
test "approved scope returns only approved entries" do
|
||||
approved_entries = Entry.approved
|
||||
assert_includes approved_entries, entries(:approved_entry)
|
||||
assert_not_includes approved_entries, entries(:one)
|
||||
assert_not_includes approved_entries, entries(:requested_entry)
|
||||
end
|
||||
|
||||
test "active_entries scope returns only active entries" do
|
||||
active_entries = Entry.active_entries
|
||||
assert_includes active_entries, entries(:one)
|
||||
assert_includes active_entries, entries(:two)
|
||||
assert_not_includes active_entries, entries(:requested_entry)
|
||||
assert_not_includes active_entries, entries(:approved_entry)
|
||||
end
|
||||
|
||||
test "requested_by association" do
|
||||
entry = entries(:requested_entry)
|
||||
requester = users(:requester_user)
|
||||
|
||||
assert_equal requester, entry.requested_by
|
||||
end
|
||||
|
||||
test "user has requested_entries association" do
|
||||
requester = users(:requester_user)
|
||||
|
||||
assert_includes requester.requested_entries, entries(:requested_entry)
|
||||
end
|
||||
|
||||
test "can create entry with requested status" do
|
||||
user = users(:requester_user)
|
||||
entry = Entry.create!(
|
||||
category: :word,
|
||||
fi: "uusi",
|
||||
en: "new",
|
||||
status: :requested,
|
||||
requested_by: user
|
||||
)
|
||||
|
||||
assert_equal "requested", entry.status
|
||||
assert_equal user, entry.requested_by
|
||||
end
|
||||
|
||||
test "can transition entry from requested to approved to active" do
|
||||
entry = entries(:requested_entry)
|
||||
|
||||
assert_equal "requested", entry.status
|
||||
|
||||
entry.update!(status: :approved)
|
||||
assert_equal "approved", entry.status
|
||||
|
||||
entry.update!(status: :active)
|
||||
assert_equal "active", entry.status
|
||||
end
|
||||
|
||||
test "entries count does not include requested or approved" do
|
||||
total = Entry.count
|
||||
active = Entry.active_entries.count
|
||||
requested = Entry.requested.count
|
||||
approved = Entry.approved.count
|
||||
|
||||
assert_equal total, active + requested + approved
|
||||
assert requested > 0, "Should have at least one requested entry in fixtures"
|
||||
assert approved > 0, "Should have at least one approved entry in fixtures"
|
||||
end
|
||||
|
||||
test "blank translations are not counted as having translation" do
|
||||
entry = Entry.new(
|
||||
category: :word,
|
||||
fi: "",
|
||||
en: " ",
|
||||
sv: nil
|
||||
)
|
||||
|
||||
assert_not entry.valid?
|
||||
assert_includes entry.errors[:base], "At least one language translation is required"
|
||||
end
|
||||
end
|
||||
@@ -1,8 +1,8 @@
|
||||
require "test_helper"
|
||||
|
||||
class EntryTest < ActiveSupport::TestCase
|
||||
test "should be valid with a category" do
|
||||
entry = Entry.new(category: :word)
|
||||
test "should be valid with a category and at least one translation" do
|
||||
entry = Entry.new(category: :word, fi: "test")
|
||||
assert entry.valid?
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user