dotfiles/.todo.actions.d/pom/spec/task_spec.rb

107 lines
3.6 KiB
Ruby

require_relative '../lib/task'
describe Task do
context "Task#new" do
context "When task already includes pomodori" do
subject { Task.new(1, "Write Task spec (#pomo: 3/5)")}
specify { expect(subject.pomodori).to eq(3) }
specify { expect(subject.planned).to eq(5) }
specify { expect(subject.text).to eq("Write Task spec") }
specify { expect(subject.to_s).to eq("Write Task spec (#pomo: 3/5)") }
end
context "When task does not include pomodori" do
subject { Task.new(1, "Write Task spec")}
specify { expect(subject.pomodori).to eq(0) }
specify { expect(subject.planned).to eq(0) }
specify { expect(subject.text).to eq("Write Task spec") }
specify { expect(subject.to_s).to eq("Write Task spec (#pomo: 0/0)") }
end
end
context "Task#add_pomo" do
context "Prioritized task" do
subject { Task.new(1, "(A) Write Task spec (#pomo: 3/5)")}
specify { expect(subject.pomodori).to eq(3) }
context "Adding pomo to a tagged task" do
before { subject.add_pomo }
specify { expect(subject.pomodori).to eq(4) }
specify { expect(subject.to_s).to eq("Write Task spec (#pomo: 4/5)") }
specify { subject.add_pomo; expect(subject.to_s).to eq("Write Task spec (#pomo: 5/5)") }
end
end
context "Already tagged task" do
subject { Task.new(1, "Write Task spec (#pomo: 3/5)")}
specify { expect(subject.pomodori).to eq(3) }
context "Adding pomo to a tagged task" do
before { subject.add_pomo }
specify { expect(subject.pomodori).to eq(4) }
specify { expect(subject.to_s).to eq("Write Task spec (#pomo: 4/5)") }
end
end
context "Normal task" do
subject { Task.new(1, "Write Task spec")}
specify { expect(subject.pomodori).to eq(0) }
context "Adding pomo to a normal task" do
before { subject.add_pomo }
specify { expect(subject.pomodori).to eq(1) }
specify { expect(subject.to_s).to eq("Write Task spec (#pomo: 1/0)") }
end
end
end
context "Task#plan" do
context "When task already includes pomodori" do
subject { Task.new(1, "Write Task spec (#pomo: 3/5)")}
before { subject.plan(10) }
specify { expect(subject.pomodori).to eq(3) }
specify { expect(subject.planned).to eq(10) }
specify { expect(subject.text).to eq("Write Task spec") }
specify { expect(subject.to_s).to eq("Write Task spec (#pomo: 3/10)") }
end
context "When task does not include pomodori" do
subject { Task.new(1, "Write Task spec")}
before { subject.plan(10) }
specify { expect(subject.pomodori).to eq(0) }
specify { expect(subject.planned).to eq(10) }
specify { expect(subject.text).to eq("Write Task spec") }
specify { expect(subject.to_s).to eq("Write Task spec (#pomo: 0/10)") }
end
end
context "Task#status" do
subject { Task.new(1, "Write Task spec")}
context "new task" do
specify { expect(subject.status).to eq :new }
end
context "planned task" do
before { subject.plan(10) }
specify { expect(subject.status).to eq :planned }
end
context "in progress task" do
before { subject.plan(10); subject.add_pomo }
specify { expect(subject.status).to eq :in_progress }
end
context "completed task" do
before { subject.plan(1); subject.add_pomo }
specify { expect(subject.status).to eq :completed }
end
context "underestimated task" do
before { subject.plan(1); 2.times { subject.add_pomo } }
specify { expect(subject.status).to eq :underestimated }
end
end
end