Sha256: e93b24b5dbd20a647aa6c5efcc500649f009268584f76a45ce9a7b77db19d420

Contents?: true

Size: 1.9 KB

Versions: 4

Compression:

Stored size: 1.9 KB

Contents

require_relative "helper"

describe Friends::Friend do
  let(:friend_name) { "Jacob Evelyn" }
  let(:friend) { Friends::Friend.new(name: friend_name) }

  describe ".deserialize" do
    subject { Friends::Friend.deserialize(serialized_str) }

    describe "when string is well-formed" do
      let(:serialized_str) do
        "#{Friends::Friend::SERIALIZATION_PREFIX}#{friend_name}"
      end

      it "creates a friend with the correct name" do
        subject.name.must_equal friend_name
      end
    end

    describe "when string is malformed" do
      let(:serialized_str) { "" }

      it { proc { subject }.must_raise Serializable::SerializationError }
    end
  end

  describe "#new" do
    subject { friend }

    it { subject.name.must_equal friend_name }
  end

  describe "#serialize" do
    subject { friend.serialize }

    it do
      subject.must_equal(
        "#{Friends::Friend::SERIALIZATION_PREFIX}#{friend_name}"
      )
    end
  end

  describe "#n_activities" do
    subject { friend.n_activities }

    it "defaults to zero" do
      subject.must_equal 0
    end

    it "is writable" do
      friend.n_activities += 1
      subject.must_equal 1
    end
  end

  describe "#likelihood_score" do
    subject { friend.likelihood_score }

    it "defaults to zero" do
      subject.must_equal 0
    end

    it "is writable" do
      friend.likelihood_score += 1
      subject.must_equal 1
    end
  end

  describe "#regexes_for_name" do
    subject { friend.regexes_for_name }

    it "generates appropriate regexes" do
      subject.must_equal [
        /(?<!\\)(?<!\*\*)(?<![A-z])Jacob\s+Evelyn(?![A-z])(?!\*\*)/i,
        /(?<!\\)(?<!\*\*)(?<![A-z])Jacob(?![A-z])(?!\*\*)/i
      ]
    end
  end

  describe "#<=>" do
    it "sorts alphabetically" do
      aaron = Friends::Friend.new(name: "Aaron")
      zeke = Friends::Friend.new(name: "Zeke")
      [zeke, aaron].sort.must_equal [aaron, zeke]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
friends-0.7 test/friend_spec.rb
friends-0.6 test/friend_spec.rb
friends-0.5 test/friend_spec.rb
friends-0.4 test/friend_spec.rb