mirror of
https://github.com/hkalexling/Mango.git
synced 2025-08-02 10:55:30 -04:00
105 lines
2.3 KiB
Crystal
105 lines
2.3 KiB
Crystal
require "./spec_helper"
|
|
|
|
include MangaDex
|
|
|
|
describe Queue do
|
|
it "creates DB at given path" do
|
|
with_queue do |_, path|
|
|
File.exists?(path).should be_true
|
|
end
|
|
end
|
|
|
|
it "pops nil when empty" do
|
|
with_queue do |queue|
|
|
queue.pop.should be_nil
|
|
end
|
|
end
|
|
|
|
it "inserts multiple jobs" do
|
|
with_queue do |queue|
|
|
j1 = Job.new "1", "1", "title", "manga_title", JobStatus::Error,
|
|
Time.utc
|
|
j2 = Job.new "2", "2", "title", "manga_title", JobStatus::Completed,
|
|
Time.utc
|
|
j3 = Job.new "3", "3", "title", "manga_title", JobStatus::Pending,
|
|
Time.utc
|
|
j4 = Job.new "4", "4", "title", "manga_title",
|
|
JobStatus::Downloading, Time.utc
|
|
count = queue.push [j1, j2, j3, j4]
|
|
count.should eq 4
|
|
end
|
|
end
|
|
|
|
it "pops pending job" do
|
|
with_queue do |queue|
|
|
job = queue.pop
|
|
job.should_not be_nil
|
|
job.not_nil!.id.should eq "3"
|
|
end
|
|
end
|
|
|
|
it "correctly counts jobs" do
|
|
with_queue do |queue|
|
|
queue.count.should eq 4
|
|
end
|
|
end
|
|
|
|
it "deletes job" do
|
|
with_queue do |queue|
|
|
queue.delete "4"
|
|
queue.count.should eq 3
|
|
end
|
|
end
|
|
|
|
it "sets status" do
|
|
with_queue do |queue|
|
|
job = queue.pop.not_nil!
|
|
queue.set_status JobStatus::Downloading, job
|
|
job = queue.pop
|
|
job.should_not be_nil
|
|
job.not_nil!.status.should eq JobStatus::Downloading
|
|
end
|
|
end
|
|
|
|
it "sets number of pages" do
|
|
with_queue do |queue|
|
|
job = queue.pop.not_nil!
|
|
queue.set_pages 100, job
|
|
job = queue.pop
|
|
job.should_not be_nil
|
|
job.not_nil!.pages.should eq 100
|
|
end
|
|
end
|
|
|
|
it "adds fail/success counts" do
|
|
with_queue do |queue|
|
|
job = queue.pop.not_nil!
|
|
queue.add_success job
|
|
queue.add_success job
|
|
queue.add_fail job
|
|
job = queue.pop
|
|
job.should_not be_nil
|
|
job.not_nil!.success_count.should eq 2
|
|
job.not_nil!.fail_count.should eq 1
|
|
end
|
|
end
|
|
|
|
it "appends status message" do
|
|
with_queue do |queue|
|
|
job = queue.pop.not_nil!
|
|
queue.add_message "hello", job
|
|
queue.add_message "world", job
|
|
job = queue.pop
|
|
job.should_not be_nil
|
|
job.not_nil!.status_message.should eq "\nhello\nworld"
|
|
end
|
|
end
|
|
|
|
it "cleans up" do
|
|
with_queue do
|
|
true
|
|
end
|
|
State.reset
|
|
end
|
|
end
|