require 'rails_helper' describe User do subject { build(:user) } it "is valid" do expect(subject).to be_valid end describe 'use_nickname' do describe 'when true' do before { subject.use_nickname = true } it "activates the validation of nickname" do subject.nickname = nil expect(subject).to_not be_valid subject.nickname = "dredd" expect(subject).to be_valid end it "calculates the name using the nickname" do subject.nickname = "dredd" expect(subject.name).to eq("dredd") end end describe 'when false' do before { subject.use_nickname = false } it "activates the validation of first_name and last_name" do subject.first_name = nil subject.last_name = nil expect(subject).to_not be_valid subject.first_name = "Joseph" subject.last_name = "Dredd" expect(subject).to be_valid end it "calculates the name using first_name and last_name" do subject.first_name = "Joseph" subject.last_name = "Dredd" expect(subject.name).to eq("Joseph Dredd") end end end end