Class: ScraperWiki::API::Matchers::DatastoreMatcher

Inherits:
CustomMatcher
  • Object
show all
Defined in:
lib/scraperwiki-api/matchers.rb

Overview

Datastore matchers -----------------------------------------------------

Direct Known Subclasses

FieldMatcher, SetAnyOf

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from ScraperWiki::API::Matchers::CustomMatcher

Instance Method Details

#does_not_match?(actual) ⇒ Boolean

Returns:

  • (Boolean)


426
427
428
429
430
# File 'lib/scraperwiki-api/matchers.rb', line 426

def does_not_match?(actual)
  super
  @matches = matches
  @matches.empty?
end

#failure_descriptionObject

Raises:

  • (NotImplementerError)


464
465
466
# File 'lib/scraperwiki-api/matchers.rb', line 464

def failure_description
  raise NotImplementerError, 'Subclasses must implement this method'
end

#failure_messageObject



456
457
458
# File 'lib/scraperwiki-api/matchers.rb', line 456

def failure_message
  "#{failure_size} of #{items.size} #{failure_description}\n#{failures.map(&:inspect).join "\n"}"
end

#failure_sizeObject



448
449
450
451
452
453
454
# File 'lib/scraperwiki-api/matchers.rb', line 448

def failure_size
  if @mismatches
    @mismatches.size
  else
    @matches.size
  end
end

#failuresObject



440
441
442
443
444
445
446
# File 'lib/scraperwiki-api/matchers.rb', line 440

def failures
  if @mismatches
    @mismatches
  else
    @matches
  end
end

#itemsObject



400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
# File 'lib/scraperwiki-api/matchers.rb', line 400

def items
  @items ||= if Array === @actual
    @actual
  elsif Hash === @actual
    if @actual['data']
      @actual['data'].map do |array|
        hash = {}
        @actual['keys'].each_with_index do |key,index|
          hash[key] = array[index]
        end
        hash
      end
    else
      {}
    end
  else
    raise NotImplementerError, "Can only handle jsondict or jsonlist formats"
  end
end

#matchesObject

Raises:

  • (NotImplementerError)


432
433
434
# File 'lib/scraperwiki-api/matchers.rb', line 432

def matches
  raise NotImplementerError, 'Subclasses must implement this method'
end

#matches?(actual) ⇒ Boolean

Returns:

  • (Boolean)


420
421
422
423
424
# File 'lib/scraperwiki-api/matchers.rb', line 420

def matches?(actual)
  super
  @mismatches = mismatches
  @mismatches.empty?
end

#mismatchesObject

Raises:

  • (NotImplementerError)


436
437
438
# File 'lib/scraperwiki-api/matchers.rb', line 436

def mismatches
  raise NotImplementerError, 'Subclasses must implement this method'
end

#negative_failure_descriptionObject

Raises:

  • (NotImplementerError)


468
469
470
# File 'lib/scraperwiki-api/matchers.rb', line 468

def negative_failure_description
  raise NotImplementerError, 'Subclasses must implement this method'
end

#negative_failure_messageObject



460
461
462
# File 'lib/scraperwiki-api/matchers.rb', line 460

def negative_failure_message
  "#{failure_size} of #{items.size} #{negative_failure_description}\n#{failures.map(&:inspect).join "\n"}"
end