spec/models/flyboy/ability_spec.rb in flyboy-0.0.1 vs spec/models/flyboy/ability_spec.rb in flyboy-0.0.2
- old
+ new
@@ -4,46 +4,129 @@
let(:ability){
Flyboy::Ability.new
}
describe Flyboy::Goal do
+ it "can create goals" do
+ expect(ability.can?(:create, Flyboy::Goal.new)).to be true
+ end
+
+ it "can read goals" do
+ expect(ability.can?(:read, Flyboy::Goal.new)).to be true
+ end
+
+ it "can update open goals" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "open")
+ expect(ability.can?(:update, goal)).to be true
+ end
+
+ it "can't update closed goals" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "closed")
+ expect(ability.can?(:update, goal)).to be false
+ end
+
+ it "can delete open goals" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "open")
+ expect(ability.can?(:delete, goal)).to be true
+ end
+
+ it "can't delete closed goals" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "closed")
+ expect(ability.can?(:delete, goal)).to be false
+ end
+
+ it "can close open goal" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "open")
+ expect(ability.can?(:close, goal)).to be true
+ end
+
it "can't close already closed goal" do
goal = FactoryGirl.create(:flyboy_goal, status: "closed")
expect(ability.can?(:close, goal)).to be false
end
- it "can't open already open goal" do
- goal = FactoryGirl.create(:flyboy_goal, status: "open")
- expect(ability.can?(:open, goal)).to be false
+ it "can open closed goal" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "closed")
+ expect(ability.can?(:open, goal)).to be true
end
it "can't close goals with undone tasks" do
task = FactoryGirl.create(:flyboy_task, done: false)
goal = task.goal
expect(ability.can?(:close, goal)).to be false
end
+
+ it "can't open already open goal" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "open")
+ expect(ability.can?(:open, goal)).to be false
+ end
end
describe Flyboy::Task do
+ it "can create task in an open goal" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "open")
+ task = goal.tasks.new
+ expect(ability.can?(:create, task)).to be true
+ end
+
it "can't create task in a closed goal" do
goal = FactoryGirl.create(:flyboy_goal, status: "closed")
task = goal.tasks.new
expect(ability.can?(:create, task)).to be false
end
+ it "can read task" do
+ task = FactoryGirl.create(:flyboy_task)
+ expect(ability.can?(:read, task)).to be true
+ end
+
+ it "can update task in an open goal" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "open")
+ task = FactoryGirl.create(:flyboy_task, goal: goal)
+ expect(ability.can?(:update, task)).to be true
+ end
+
+ it "can't update task in an closed goal" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "closed")
+ task = FactoryGirl.create(:flyboy_task, goal: goal)
+ expect(ability.can?(:update, task)).to be false
+ end
+
+ it "can delete task in an open goal" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "open")
+ task = FactoryGirl.create(:flyboy_task, goal: goal)
+ expect(ability.can?(:delete, task)).to be true
+ end
+
+ it "can't delete task in an closed goal" do
+ goal = FactoryGirl.create(:flyboy_goal, status: "closed")
+ task = FactoryGirl.create(:flyboy_task, goal: goal)
+ expect(ability.can?(:delete, task)).to be false
+ end
+
+ it "can complete a undone task" do
+ task = FactoryGirl.create(:flyboy_task, done: false)
+ expect(ability.can?(:complete, task)).to be true
+ end
+
it "can't complete a done task" do
task = FactoryGirl.create(:flyboy_task, done: true)
expect(ability.can?(:complete, task)).to be false
end
+ it "can snooze a done task" do
+ task = FactoryGirl.create(:flyboy_task, done: false)
+ expect(ability.can?(:snooze, task)).to be true
+ end
+
it "can't snooze a done task" do
task = FactoryGirl.create(:flyboy_task, done: true)
expect(ability.can?(:snooze, task)).to be false
end
it "can't snooze if reminder >= today" do
task = FactoryGirl.create(:flyboy_task, reminder: Date.today, term: Date.tomorrow)
expect(ability.can?(:snooze, task)).to be false
end
-
end
+
end