spec/base_spec.rb in upholsterer-1.3.0 vs spec/base_spec.rb in upholsterer-1.4.0

- old
+ new

@@ -260,9 +260,40 @@ specify { expect(subject.user.name).to eq 'Peter' } specify { expect(subject.user.email).to eq 'peter@email.com' } its(:to_json) { should be_json_with(id: 1, user: { name: 'Peter', email: 'peter@email.com'}, comment: nil) } end + + context 'when presenter is anonym class' do + let(:anonym_presenter) do + Class.new(Presenter).tap do |presenter| + presenter.expose :name + presenter.expose :email + end + end + + let(:presenter) do + Class.new(Presenter).tap do |presenter| + presenter.expose :id + presenter.expose :user, presenter: anonym_presenter + presenter.expose :comment, presenter: anonym_presenter + end + end + + let(:user) { double name: 'Peter', email: 'peter@email.com' } + let(:post) { double user: user, comment: nil, id: 1} + + subject { presenter.new(post) } + + its(:id) { should eq 1 } + its(:comment) { should be_nil } + + specify { expect(subject.user.name).to eq 'Peter' } + specify { expect(subject.user.email).to eq 'peter@email.com' } + + its(:to_json) { should be_json_with(id: 1, user: { name: 'Peter', email: 'peter@email.com'}, comment: nil) } + its(:as_json) { should eq('id' => 1, 'user' => { 'name' => 'Peter', 'email' => 'peter@email.com'}, 'comment' => nil) } + end end describe 'custom subject' do let(:presenter) do Class.new(Presenter) do