shared_example_forを使ってすっきりしましたが、shared_example_forは本来名詞を引数に取り、it_behaves_likeでその名詞を指定して「〜のように振舞うこと」をチェックするものなので、shared_exqamle_forの本来の用途と少し使い方が異なるように思います。

masterにshoulda-matchersが取り込まれていますので、shoulda-matcherのallow_valueというマッチャを使って、

    describe Shop do
      ...
      it { should allow_value(1).for(:name) }
    end

のようにしてはどうでしょうか。