| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- require 'test_helper'
- require 'docs'
- class ManifestTest < MiniTest::Spec
- let :doc do
- doc = Class.new Docs::Scraper
- doc.name = 'TestDoc'
- doc.options[:attribution] = 'foo'
- doc
- end
- let :store do
- Docs::NullStore.new
- end
- let :manifest do
- Docs::Manifest.new store, [doc]
- end
- describe "#store" do
- before do
- stub(manifest).as_json
- end
- it "stores a file" do
- mock(store).write.with_any_args
- manifest.store
- end
- describe "the file" do
- it "is named ::FILENAME" do
- mock(store).write Docs::Manifest::FILENAME, anything
- manifest.store
- end
- it "contains the manifest's JSON dump" do
- stub(manifest).to_json { 'json' }
- mock(store).write anything, 'json'
- manifest.store
- end
- end
- end
- describe "#as_json" do
- let :meta_path do
- 'meta_path'
- end
- before do
- stub(doc).meta_path { meta_path }
- end
- it "returns an array" do
- manifest = Docs::Manifest.new store, []
- assert_instance_of Array, manifest.as_json
- end
- context "when the doc has a meta file" do
- before do
- stub(store).exist?(meta_path) { true }
- stub(store).read(meta_path) { '{"name":"Test", "db_size": 776533}' }
- end
- it "includes the doc's meta representation" do
- json = manifest.as_json
- assert_equal 1, json.length
- assert_equal "{\"name\"=>\"Test\", \"db_size\"=>776533, :attribution=>\"foo\"}", json[0].to_s
- end
- end
- context "when the doc doesn't have a meta file" do
- it "doesn't include the doc" do
- stub(store).exist?(meta_path) { false }
- assert_empty manifest.as_json
- end
- end
- end
- describe "#to_json" do
- it "returns the JSON string for #as_json" do
- stub(manifest).as_json { { test: 'ok' } }
- assert_equal "{\n \"test\": \"ok\"\n}", manifest.to_json
- end
- end
- end
|