Sha256: cf60107a88dd946bd9903522fdc627b8ee0a523c7254ee691ac285a702604371

Contents?: true

Size: 1.72 KB

Versions: 4

Compression:

Stored size: 1.72 KB

Contents

require 'spec_helper'
require 'puppet-strings/yard'

describe PuppetStrings::Yard::Parsers::JSON::Parser do
  subject { PuppetStrings::Yard::Parsers::JSON::Parser.new(source, file) }
  let(:file) { 'test.json' }

  describe 'initialization of the parser' do
    let(:source) { '{}' }

    it 'should store the original source' do
      expect(subject.source).to eq(source)
    end

    it 'should store the original file name' do
      expect(subject.file).to eq(file)
    end

    it 'should have no relevant statements' do
      subject.parse

      expect(subject.enumerator.empty?).to be_truthy
    end
  end

  describe 'parsing invalid JSON' do
    let(:source) { <<SOURCE
class foo {
SOURCE
    }

    it 'should raise an exception' do
      expect{ subject.parse }.to output(/\[error\]: Failed to parse test.json/).to_stdout_from_any_process
    end
  end


  describe 'parsing valid task metadata JSON' do
    let(:source) { <<SOURCE
{
  "description": "Allows you to backup your database to local file.",
  "input_method": "stdin",
  "parameters": {
    "database": {
      "description": "Database to connect to",
      "type": "Optional[String[1]]"
    },
    "user": {
      "description": "The user",
      "type": "Optional[String[1]]"
    },
    "password": {
      "description": "The password",
      "type": "Optional[String[1]]"
    },
     "sql": {
      "description": "Path to file you want backup to",
      "type": "String[1]"
    }
  }
}
SOURCE
    }
    it 'should parse the JSON and extract a TaskStatement' do
      subject.parse

      expect(subject.enumerator.size).to eq(1)
      statement = subject.enumerator.first
      expect(statement).to be_instance_of(PuppetStrings::Yard::Parsers::JSON::TaskStatement)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
puppet-strings-2.4.0 spec/unit/puppet-strings/yard/parsers/json/parser_spec.rb
puppet-strings-2.3.1 spec/unit/puppet-strings/yard/parsers/json/parser_spec.rb
puppet-strings-2.3.0 spec/unit/puppet-strings/yard/parsers/json/parser_spec.rb
puppet-strings-2.2.0 spec/unit/puppet-strings/yard/parsers/json/parser_spec.rb