imdb 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,87 +7,109 @@ require File.dirname(__FILE__) + '/../spec_helper.rb'
7
7
 
8
8
  describe "Imdb::Movie" do
9
9
 
10
- before(:each) do
11
- # Get Die Hard (1988)
12
- @movie = Imdb::Movie.new("0095016")
13
- end
10
+ describe "valid movie" do
11
+
12
+ before(:each) do
13
+ # Get Die Hard (1988)
14
+ @movie = Imdb::Movie.new("0095016")
15
+ end
14
16
 
15
- it "should find the cast members" do
16
- cast = @movie.cast_members
17
+ it "should find the cast members" do
18
+ cast = @movie.cast_members
17
19
 
18
- cast.should be_an(Array)
19
- cast.should include("Bruce Willis")
20
- cast.should include("Bonnie Bedelia")
21
- cast.should include("Alan Rickman")
22
- end
20
+ cast.should be_an(Array)
21
+ cast.should include("Bruce Willis")
22
+ cast.should include("Bonnie Bedelia")
23
+ cast.should include("Alan Rickman")
24
+ end
23
25
 
24
- it "should find the director" do
25
- @movie.director.should be_an(Array)
26
- @movie.director.size.should eql(1)
27
- @movie.director.first.should =~ /John McTiernan/
28
- end
26
+ it "should find the director" do
27
+ @movie.director.should be_an(Array)
28
+ @movie.director.size.should eql(1)
29
+ @movie.director.first.should =~ /John McTiernan/
30
+ end
29
31
 
30
- it "should find the genres" do
31
- genres = @movie.genres
32
+ it "should find the genres" do
33
+ genres = @movie.genres
32
34
 
33
- genres.should be_an(Array)
34
- genres.should include('Action')
35
- genres.should include('Crime')
36
- genres.should include('Drama')
37
- genres.should include('Thriller')
38
- end
39
-
40
- it "should find the length (in minutes)" do
41
- @movie.length.should eql(131)
42
- end
35
+ genres.should be_an(Array)
36
+ genres.should include('Action')
37
+ genres.should include('Crime')
38
+ genres.should include('Drama')
39
+ genres.should include('Thriller')
40
+ end
43
41
 
44
- it "should find the plot" do
45
- @movie.plot.should eql("New York cop John McClane gives terrorists a dose of their own medicine as they hold hostages in an LA office building.")
46
- end
42
+ it "should find the length (in minutes)" do
43
+ @movie.length.should eql(131)
44
+ end
47
45
 
48
- it "should find the poster" do
49
- @movie.poster.should eql("http://ia.media-imdb.com/images/M/MV5BMTIxNTY3NjM0OV5BMl5BanBnXkFtZTcwNzg5MzY0MQ@@.jpg")
50
- end
46
+ it "should find the plot" do
47
+ @movie.plot.should eql("New York cop John McClane gives terrorists a dose of their own medicine as they hold hostages in an LA office building.")
48
+ end
51
49
 
52
- it "should find the rating" do
53
- @movie.rating.should eql(8.3)
54
- end
50
+ it "should find the poster" do
51
+ @movie.poster.should eql("http://ia.media-imdb.com/images/M/MV5BMTIxNTY3NjM0OV5BMl5BanBnXkFtZTcwNzg5MzY0MQ@@.jpg")
52
+ end
55
53
 
56
- it "should find the title" do
57
- @movie.title.should =~ /Die Hard/
58
- end
54
+ it "should find the rating" do
55
+ @movie.rating.should eql(8.3)
56
+ end
59
57
 
60
- it "should find the tagline" do
61
- @movie.tagline.should =~ /It will blow you through the back wall of the theater/
62
- end
58
+ it "should find the title" do
59
+ @movie.title.should =~ /Die Hard/
60
+ end
63
61
 
64
- it "should find the year" do
65
- @movie.year.should eql(1988)
66
- end
62
+ it "should find the tagline" do
63
+ @movie.tagline.should =~ /It will blow you through the back wall of the theater/
64
+ end
67
65
 
68
- describe "special scenarios" do
66
+ it "should find the year" do
67
+ @movie.year.should eql(1988)
68
+ end
69
69
 
70
- it "should find multiple directors" do
71
- # The Matrix Revolutions (2003)
72
- movie = Imdb::Movie.new("0242653")
70
+ describe "special scenarios" do
71
+
72
+ it "should find multiple directors" do
73
+ # The Matrix Revolutions (2003)
74
+ movie = Imdb::Movie.new("0242653")
73
75
 
74
- movie.director.should be_an(Array)
75
- movie.director.size.should eql(2)
76
- movie.director.should include("Larry Wachowski")
77
- movie.director.should include("Andy Wachowski")
76
+ movie.director.should be_an(Array)
77
+ movie.director.size.should eql(2)
78
+ movie.director.should include("Larry Wachowski")
79
+ movie.director.should include("Andy Wachowski")
80
+ end
78
81
  end
79
- end
80
82
 
81
- it "should provide a convenience method to search" do
82
- movies = Imdb::Movie.search("Star Trek")
83
- movies.should respond_to(:each)
84
- movies.each { |movie| movie.should be_an_instance_of(Imdb::Movie) }
85
- end
83
+ it "should provide a convenience method to search" do
84
+ movies = Imdb::Movie.search("Star Trek")
85
+ movies.should respond_to(:each)
86
+ movies.each { |movie| movie.should be_an_instance_of(Imdb::Movie) }
87
+ end
86
88
 
87
- it "should provide a convenience method to top 250" do
88
- movies = Imdb::Movie.top_250
89
- movies.should respond_to(:each)
90
- movies.each { |movie| movie.should be_an_instance_of(Imdb::Movie) }
89
+ it "should provide a convenience method to top 250" do
90
+ movies = Imdb::Movie.top_250
91
+ movies.should respond_to(:each)
92
+ movies.each { |movie| movie.should be_an_instance_of(Imdb::Movie) }
93
+ end
91
94
  end
92
95
 
96
+ describe "with no submitted poster" do
97
+
98
+ before(:each) do
99
+ # Grotesque (2009)
100
+ @movie = Imdb::Movie.new("1352369")
101
+ end
102
+
103
+ it "should have a title" do
104
+ @movie.title(true).should =~ /Gurotesuku/
105
+ end
106
+
107
+ it "should have a year" do
108
+ @movie.year.should eql(2009)
109
+ end
110
+
111
+ it "should return nil as poster url" do
112
+ @movie.poster.should be_nil
113
+ end
114
+ end
93
115
  end
@@ -2,7 +2,7 @@
2
2
  # run they will hit recorded responses. However, if you don't have
3
3
  # the FakeWeb gem installed or you set the environment variable
4
4
  # LIVE_TEST then the tests will hit the live site IMDB.com.
5
- ###
5
+ #
6
6
  # Having both methods available for testing allows you to quickly
7
7
  # refactor and add features, while also being able to make sure that
8
8
  # no changes to the IMDB.com interface have affected the parser.
@@ -23,21 +23,25 @@ def read_fixture(path)
23
23
  File.read(File.expand_path(File.join(File.dirname(__FILE__), "fixtures", path)))
24
24
  end
25
25
 
26
+ IMDB_SAMPLES = {
27
+ "http://www.imdb.com:80/find?q=Matrix+Revolutions;s=tt" => "search_matrix_revolutions",
28
+ "http://www.imdb.com:80/find?q=Star+Trek;s=tt" => "search_star_trek",
29
+ "http://www.imdb.com:80/title/tt0117731/" => "tt0117731",
30
+ "http://www.imdb.com:80/title/tt0095016/" => "tt0095016",
31
+ "http://www.imdb.com:80/title/tt0242653/" => "tt0242653",
32
+ "http://www.imdb.com/title/tt0242653/?fr=c2M9MXxsbT01MDB8ZmI9dXx0dD0xfG14PTIwfGh0bWw9MXxjaD0xfGNvPTF8cG49MHxmdD0xfGt3PTF8cXM9TWF0cml4IFJldm9sdXRpb25zfHNpdGU9ZGZ8cT1NYXRyaXggUmV2b2x1dGlvbnN8bm09MQ__;fc=1;ft=20" => "tt0242653",
33
+ "http://www.imdb.com:80/chart/top" => "top_250",
34
+ "http://www.imdb.com/title/tt0111161/" => "tt0111161",
35
+ "http://www.imdb.com/title/tt1352369/" => "tt1352369"
36
+ }
37
+
26
38
  unless ENV['LIVE_TEST']
27
39
  begin
28
40
  require 'rubygems'
29
41
  require 'fakeweb'
30
42
 
31
43
  FakeWeb.allow_net_connect = false
32
- { "http://www.imdb.com:80/find?q=Matrix+Revolutions;s=tt" => "search_matrix_revolutions",
33
- "http://www.imdb.com:80/find?q=Star+Trek;s=tt" => "search_star_trek",
34
- "http://www.imdb.com:80/title/tt0117731/" => "tt0117731",
35
- "http://www.imdb.com:80/title/tt0095016/" => "tt0095016",
36
- "http://www.imdb.com:80/title/tt0242653/" => "tt0242653",
37
- "http://www.imdb.com:80/title/tt0242653/?fr=c2M9MXxsbT01MDB8ZmI9dXx0dD0xfG14PTIwfHFzPU1hdHJpeCBSZXZvbHV0aW9uc3xodG1sPTF8c2l0ZT1kZnxxPU1hdHJpeCBSZXZvbHV0aW9uc3xwbj0w;fc=1;ft=20" => "tt0242653",
38
- "http://www.imdb.com:80/chart/top" => "top_250",
39
- "http://www.imdb.com/title/tt0111161/" => "tt0111161",
40
- }.each do |url, response|
44
+ IMDB_SAMPLES.each do |url, response|
41
45
  FakeWeb.register_uri(:get, url, :response => read_fixture(response))
42
46
  end
43
47
  rescue LoadError
@@ -0,0 +1,15 @@
1
+ namespace :fixtures do
2
+ desc "Refresh spec fixtures with fresh data from IMDB.com"
3
+ task :refresh do
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec/spec_helper")
5
+
6
+ IMDB_SAMPLES.each_pair do |url, fixture|
7
+ page = `curl -is #{url}`
8
+
9
+ File.open(File.expand_path(File.dirname(__FILE__) + "/../spec/fixtures/#{fixture}"), 'w') do |f|
10
+ f.write(page)
11
+ end
12
+
13
+ end
14
+ end
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ariejan de Vroom
@@ -9,9 +9,19 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-17 00:00:00 +02:00
13
- default_executable:
12
+ date: 2009-11-25 00:00:00 +01:00
13
+ default_executable: imdb
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
15
25
  - !ruby/object:Gem::Dependency
16
26
  name: hpricot
17
27
  type: :runtime
@@ -23,42 +33,43 @@ dependencies:
23
33
  version: 0.8.1
24
34
  version:
25
35
  - !ruby/object:Gem::Dependency
26
- name: newgem
36
+ name: fakeweb
27
37
  type: :development
28
38
  version_requirement:
29
39
  version_requirements: !ruby/object:Gem::Requirement
30
40
  requirements:
31
41
  - - ">="
32
42
  - !ruby/object:Gem::Version
33
- version: 1.3.0
43
+ version: "0"
34
44
  version:
35
45
  - !ruby/object:Gem::Dependency
36
- name: hoe
46
+ name: rspec
37
47
  type: :development
38
48
  version_requirement:
39
49
  version_requirements: !ruby/object:Gem::Requirement
40
50
  requirements:
41
51
  - - ">="
42
52
  - !ruby/object:Gem::Version
43
- version: 1.8.0
53
+ version: "0"
44
54
  version:
45
- description: This packages allows you to easy access publicly available data from IMDB.
46
- email:
47
- - ariejan@ariejan.net
55
+ description: Easily use Ruby or the command line to find information on IMDB.com.
56
+ email: ariejan@ariejan.net
48
57
  executables:
49
58
  - imdb
50
59
  extensions: []
51
60
 
52
61
  extra_rdoc_files:
53
- - History.txt
54
- - Manifest.txt
55
62
  - README.rdoc
56
63
  files:
64
+ - .gitignore
57
65
  - History.txt
58
66
  - Manifest.txt
59
67
  - README.rdoc
60
68
  - Rakefile
69
+ - VERSION
61
70
  - bin/imdb
71
+ - config/website.yml
72
+ - imdb.gemspec
62
73
  - lib/imdb.rb
63
74
  - lib/imdb/cli.rb
64
75
  - lib/imdb/movie.rb
@@ -76,19 +87,22 @@ files:
76
87
  - spec/fixtures/tt0111161
77
88
  - spec/fixtures/tt0117731
78
89
  - spec/fixtures/tt0242653
90
+ - spec/fixtures/tt1352369
79
91
  - spec/imdb/cli_spec.rb
80
92
  - spec/imdb/movie_spec.rb
81
93
  - spec/imdb/search_spec.rb
82
94
  - spec/imdb/top_250_spec.rb
83
95
  - spec/spec.opts
84
96
  - spec/spec_helper.rb
97
+ - tasks/fixtures.rake
85
98
  - tasks/rspec.rake
86
99
  has_rdoc: true
87
- homepage: "The code, issue tracker and wiki can be found at:"
100
+ homepage: http://github.com/ariejan/imdb
101
+ licenses: []
102
+
88
103
  post_install_message:
89
104
  rdoc_options:
90
- - --main
91
- - README.rdoc
105
+ - --charset=UTF-8
92
106
  require_paths:
93
107
  - lib
94
108
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -105,10 +119,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
119
  version:
106
120
  requirements: []
107
121
 
108
- rubyforge_project: imdb
109
- rubygems_version: 1.3.1
122
+ rubyforge_project:
123
+ rubygems_version: 1.3.5
110
124
  signing_key:
111
- specification_version: 2
112
- summary: This packages allows you to easy access publicly available data from IMDB.
113
- test_files: []
114
-
125
+ specification_version: 3
126
+ summary: Easily access the publicly available information on IMDB.
127
+ test_files:
128
+ - spec/imdb/cli_spec.rb
129
+ - spec/imdb/movie_spec.rb
130
+ - spec/imdb/search_spec.rb
131
+ - spec/imdb/top_250_spec.rb
132
+ - spec/spec_helper.rb