require File.dirname(__FILE__) + '/spec_helper.rb'

require 'tempfile'

FULL_REGRESSION = false

# Time to add your specs!
# http://rspec.info/

describe "Dvdprofiler2xbmc" do

  before(:all) do
    logger = Log4r::Logger.new('dvdprofiler2xbmc')
    logger.outputters = Log4r::StdoutOutputter.new(:console)
    Log4r::Outputter[:console].formatter  = Log4r::PatternFormatter.new(:pattern => "%m")
    logger.level = Log4r::WARN
    AppConfig.default
    AppConfig[:logger] = logger
    AppConfig.load
    AppConfig[:collection_filespec] = 'spec/samples/Collection.xml'
    File.mkdirs(TMPDIR)
    AppConfig[:logger].warn { "\nDvdprofiler2xbmc Specs" }

    # the ignore_isbns array contain ISBNs for titles that can not be looked up on IMDB,
    # i.e., sets ands really low volume/special interest titles.
    @ignore_isbns = [
      '837101098915', # mexico whitetails
      '018713811837.4', # pearl harbor payback appointment in tokyo
      '084296403196', # rodeo racketeers john wayne young duke series
      '018111247894', # seabiscuit america s legendary racehorse
      '097360612547', # the adventures of indiana jones the complete dvd movie collection
      '096009099596', # the great american western volume 6
      '025192829925', # the mummy collector s set
      '707729138280'  # topper topper and topper returns
      ]
  end

  unless FULL_REGRESSION
    it "should find some titles (quick regression)" do
      titles = [
#           'Alexander the Great',
#           'Anastasia',
#           'About a Boy',
#           'Gung Ho',
#           'Hot Shots',
#           'Meltdown',
#           'Oklahoma!',
#           'The Man From Snowy River',
#           'Rooster Cogburn',
#           'Call Me The Rise And Fall of Heidi Fleiss',
#           'batteries not included',
          'Flyboys',
          "Captain Corelli's Mandolin",
        ].collect{|title| Collection.title_pattern(title)}
      buf = regression(titles)
      buf.should be_empty
    end
  end

  if FULL_REGRESSION
    it "should find all Collection titles (full regression)" do
      profiles = Dvdprofiler.all
      titles = profiles.collect{|profile| profile.title}
      buf = regression(titles.sort)
      buf.should be_empty
    end
  end

  def regression(titles)
    buf = []
    count = 0
    titles.each do |title|
      AppConfig[:logger].debug "title => #{title}"
      dvdprofiler_profiles = DvdprofilerProfile.all(:title => title)
      if dvdprofiler_profiles.blank?
        buf << "Can not find profile for #{title}"
      else
        dvdprofiler_profile = dvdprofiler_profiles.first
        isbn = dvdprofiler_profile.isbn
        AppConfig[:logger].debug "ISBN => #{isbn}"
        unless @ignore_isbns.include?(isbn.to_s)
          dvd_hash = dvdprofiler_profile.dvd_hash
          unless dvd_hash[:genres].include?('Television')
            count += 1
            imdb_profile = ImdbProfile.first(:titles => [dvd_hash[:title], title],
                                     :production_years => dvd_hash[:productionyear],
                                     :released_years => dvd_hash[:released])
            if imdb_profile.blank?
              buf << "Can not find IMDB ID for #{isbn} #{title}"
            else
              AppConfig[:logger].debug "IMDB ID => #{imdb_profile.imdb_id}"
            end
          end
        end
      end
    end
    AppConfig[:logger].debug buf.join("\n") + "\n\m# movies: #{count}\n# missing IMDB ID: #{buf.size}"
    buf
  end

end