One minor point about this assertion is that it's a little bit brittle - as @rafaelfranca pointed out we try to reuse models in our test case wherever possible to the number of tables and fixtures to a manageable level. By asserting on `full_messages` your test will break if anyone else uses that model and adds a validation to it. Can you change it to assert on the error for the `:name` attribute, e.g:

``` ruby
assert_equal "can't be blank", ship.errors[:name].first
```

Otherwise, good job! :+1: