Question re assert_equal

In Agile Web Development with Rails, the following statement is given:

assert_equal "has already been taken", product.errors[:title].join(';
')

My question is: Why is the join(...) needed and what exactly does it
do here?

If it does what I assume, join an array of strings and use "; " as the
separator, then I wonder how the assert_equal statement could ever
evaluate to true as the first parameter is a static string without ";
"

Can you shed some light for me?

If there is only supposed to be one error on title (ie the
errors[:title] contains a single string) then join will just return
that string. Hard to say without knowing the wider context, but this
seems a fairly succinct way of saying that there should only be one
error for the title attribute and that it should be the one that comes
from the uniqueness validation.

Fred

24z wrote in post #961471:

In Agile Web Development with Rails, the following statement is given:

assert_equal "has already been taken", product.errors[:title].join(';
')

My question is: Why is the join(...) needed and what exactly does it
do here?

If it does what I assume, join an array of strings and use "; " as the
separator, then I wonder how the assert_equal statement could ever
evaluate to true as the first parameter is a static string without ";
"

That seems like a strangely written assertion. Obviously, the only way
it could return true is if product.errors[:title] has only one element.

Can you shed some light for me?

Best,