I'm trying to make some simple model test:

/app/models/album.rb:

```
class Album < ActiveRecord::Base
    has_many :slides, dependent: :restrict_with_exception
    validates :name, presence: true
end

```

/spec/model/album\_spec.rb:

```
require 'spec_helper'

describe Album do
    before do
        @album = Album.new(name: 'Example Album')
    end

    describe "when album name is already taken" do
        before do
            another_album = @album.dup
            another_album.save
        end

        it { should_not be_valid }
    end
end

```

I was expecting it to fail first (as I have no `validates :uniqueness` and index on the name field) but it passed. So I changed:

`it { should_not be_valid }`
to
`it { should be_valid }`

To see what's going on and this is what I got:

```
 1) Album when album name is already taken should be valid
     Failure/Error: it { should be_valid }
       expected #<Album id: nil, name: nil, created_at: nil, updated_at: nil> to be valid, but got errors: Name can't be blank
     # ./spec/models/album_spec.rb:14:in `block (3 levels) in <top (required)>'

```

I would like to ask you what I did wrong.

One more thing is if I can/should use `expect` rather than `should` syntax here ? I read somewhere that `should` is a bit deprecated and not `expect` is recomended but I don't know how to use it for model testing (I have it on my Controller/View test in form of `expect(page)` or `expect(current_path)`. What argument can I use for model ?