spec/lib/hackpad/cli/store_spec.rb in hackpad-cli-0.0.7 vs spec/lib/hackpad/cli/store_spec.rb in hackpad-cli-0.1.0
- old
+ new
@@ -1,53 +1,134 @@
# encoding: utf-8
require 'spec_helper'
-require "hackpad/cli/store"
+require 'hackpad/cli/store'
+require 'hackpad/cli/pad'
describe Hackpad::Cli::Store do
let(:configdir) { File.expand_path('../../../../files', __FILE__) }
let(:options) { { configdir: configdir, workspace: 'default' } }
before :each do
subject.prepare options
end
- describe ".read_list" do
+ describe '.read_list' do
before { File.stub(:read).and_return("gy23ui first one\ngy3u4 second one\n23489g [some time] third") }
let(:list) { subject.read_list }
it { expect(list).to be_an Array }
it { expect(list[0]).to be_an OpenStruct }
- it { expect(list[0].id).to eq "gy23ui" }
- it { expect(list[0].title).to eq "first one" }
- it { expect(list[2].id).to eq "23489g" }
- it { expect(list[2].title).to eq "third" }
- it { expect(list[2].cached_at).to eq "some time" }
+ it { expect(list[0].id).to eq 'gy23ui' }
+ it { expect(list[0].title).to eq 'first one' }
+ it { expect(list[2].id).to eq '23489g' }
+ it { expect(list[2].title).to eq 'third' }
+ it { expect(list[2].cached_at).to eq 'some time' }
end
- describe ".exists?" do
+ describe '.exists?' do
- context "when refresh option is set," do
+ context 'when refresh option is set,' do
let(:options) { { configdir: configdir, workspace: 'default', refresh: true } }
- before {
+ before do
subject.prepare options
FileUtils.touch File.join(configdir, 'default', 'pads', 'txt', 'xxx')
- }
+ end
after { FileUtils.rm File.join(configdir, 'default', 'pads', 'txt', 'xxx') }
it { expect(subject.exists? 'txt', 'xxx').to be false }
end
- context "when refresh option is not set," do
+ context 'when refresh option is not set,' do
context "when config file don't exist," do
it { expect(subject.exists? 'txt', 'xxx').to be false }
end
- context "when configfile exists," do
+ context 'when configfile exists,' do
before { FileUtils.touch File.join(configdir, 'default', 'pads', 'txt', 'xxx') }
after { FileUtils.rm File.join(configdir, 'default', 'pads', 'txt', 'xxx') }
it { expect(subject.exists? 'txt', 'xxx').to be true }
end
end
+ end
+
+ describe '.save' do
+ let(:padfile) { File.join(configdir, 'default', 'pads', 'txt', 'xxx') }
+ let(:content) { "This is content\n" }
+ before { subject.prepare options }
+ let(:pad) { double Hackpad::Cli::Pad }
+ before { pad.stub(:id).and_return 'xxx' }
+ before { pad.stub(:content).and_return content }
+ after { FileUtils.rm padfile }
+ it do
+ subject.save pad, 'txt'
+ expect(File.read(padfile)).to eq content
+ end
+ end
+
+ describe '.save_options' do
+ let(:padfile) { File.join(configdir, 'default', 'pads', 'meta', 'xxx') }
+ let(:content) { { thing: '123', other: 'option' } }
+ before { subject.prepare options }
+ after { FileUtils.rm padfile }
+ it do
+ subject.save_options 'xxx', content
+ expect(File.read(padfile)).to eq "{\n \"thing\": \"123\",\n \"other\": \"option\"\n}\n"
+ end
+ end
+
+ describe '.save_list' do
+ let(:padfile) { File.join(configdir, 'default', 'pads', 'padlist') }
+ let(:pads) { [OpenStruct.new(id: '123', cached_at: 'some time', title: 'title1')] }
+ before { subject.prepare options }
+ after { FileUtils.rm padfile }
+ it do
+ subject.save_list pads
+ expect(File.read(padfile)).to eq "123 [some time] title1\n"
+ end
+ end
+
+ describe '.read' do
+ let(:padfile) { File.join(configdir, 'default', 'pads', 'txt', 'xxx') }
+ let(:content) { "This is content\n" }
+ before { subject.prepare options }
+ let(:pad) { double Hackpad::Cli::Pad }
+ before { pad.stub(:id).and_return 'xxx' }
+ before { pad.stub(:content).and_return content }
+ before { subject.save pad, 'txt' }
+ after { FileUtils.rm padfile }
+
+ it { expect(subject.read 'xxx', 'txt').to eq content }
+ end
+
+ describe '.read_option' do
+ let(:padfile) { File.join(configdir, 'default', 'pads', 'meta', 'xxx') }
+ let(:content) { { 'thing' => '123', 'other' => 'option' } }
+ before { subject.prepare options }
+ before { subject.save_options 'xxx', content }
+ after { FileUtils.rm padfile }
+ it { expect(subject.read_options 'xxx').to eq content }
+ end
+
+ describe '.count_pads' do
+ let(:padfile) { File.join(configdir, 'default', 'pads', 'meta', 'xxx') }
+ let(:content) { { 'thing' => '123', 'other' => 'option' } }
+ before { subject.prepare options }
+ before { subject.save_options 'xxx', content }
+ after { FileUtils.rm padfile }
+ it { expect(subject.count_pads).to be 1 }
+ end
+
+ describe '.last_refresh' do
+ let(:timestamp) { Time.new(2012, 10, 31) }
+ let(:padlist) { File.join(configdir, 'default', 'pads', 'padlist') }
+ let(:pads) { [OpenStruct.new(id: '123', cached_at: 'some time', title: 'title1')] }
+ before { subject.prepare options }
+ before do
+ subject.save_list pads
+ FileUtils.touch padlist, mtime: timestamp
+ end
+ after { FileUtils.rm padlist }
+ it { expect(subject.last_refresh).to eq timestamp }
end
end