# -*- encoding : utf-8 -*-

describe Card::Set::Right::Email do
  context "<User>+*email" do
    before do
      @card = Card.fetch "u1+*email"
      @format = @card.format
    end

    it "allows Decko Bot to read" do
      Card::Auth.as_bot do
        expect(@format.render_raw).to eq("u1@user.com")
      end
    end

    it "allows self to read" do
      Card::Auth.as Card["u1"] do
        expect(@format.render_raw).to eq("u1@user.com")
      end
    end

    it "hides from other users" do
      expect(@card).not_to be_ok(:read)
      expect(@format.render_raw).to match(/denied/)
    end
  end

  context "+*account+*email" do
    context "update" do
      before do
        @email_card = Card["u1"].account.email_card
      end

      it "downcases email" do
        Card::Auth.as_bot do
          @email_card.update! content: "QuIrE@example.com"
          expect(@email_card.db_content).to eq("quire@example.com")
        end
      end

      it "requires valid email" do
        @email_card.update content: "boop"
        expect(@email_card.errors[:content].first)
          .to match(/must be valid address/)
      end

      it "requires unique email" do
        @email_card.update content: "joe@user.com"
        expect(@email_card.errors[:content].first).to match(/must be unique/)
      end
    end
  end
end
