kinney 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/README.markdown +2 -2
  2. data/Rakefile +4 -0
  3. data/app/admin/clips.rb +40 -1
  4. data/app/assets/javascripts/kinney/admin/video_preview.js +1 -1
  5. data/app/controllers/kinney/tracker_controller.rb +0 -34
  6. data/app/helpers/kinney/general_helper.rb +1 -1
  7. data/app/models/kinney/clip.rb +5 -2
  8. data/app/models/kinney/person.rb +11 -11
  9. data/app/views/{kinney/tracker → admin/kinney_clips}/_video_engagement_chart.html.erb +15 -0
  10. data/app/views/{kinney/tracker/analyze.html.erb → admin/kinney_clips/analyze_tracker.html.erb} +5 -3
  11. data/app/views/kinney/clips/show.html.erb +1 -1
  12. data/app/views/kinney/people/index.html.erb +4 -3
  13. data/app/views/kinney/sitemap/index.xml.builder +1 -1
  14. data/config/routes.rb +1 -1
  15. data/lib/kinney/version.rb +1 -1
  16. data/test/dummy/db/development.sqlite3 +0 -0
  17. data/test/dummy/db/test.sqlite3 +0 -0
  18. data/test/dummy/log/development.log +33694 -0
  19. data/test/dummy/log/test.log +29895 -0
  20. data/test/dummy/tmp/cache/assets/CBF/9B0/sprockets%2Fe283548d3ef4505c82279198e09b53fa +0 -0
  21. data/test/dummy/tmp/cache/assets/D0B/560/sprockets%2F33db47d8bb65ee7457b03336420a55fd +0 -0
  22. data/test/functional/kinney/admin_clips_controller_test.rb +24 -0
  23. data/test/functional/kinney/clips_controller_test.rb +5 -3
  24. data/test/functional/kinney/people_controller_test.rb +5 -3
  25. data/test/functional/kinney/tracker_controller_test.rb +0 -6
  26. data/test/integration/admin_clip_test.rb +14 -11
  27. data/test/integration/admin_images_test.rb +8 -7
  28. data/test/integration/clips_index_test.rb +9 -6
  29. data/test/integration/clips_show_test.rb +11 -8
  30. data/test/integration/microdata_test.rb +40 -0
  31. data/test/integration/navigation_test.rb +7 -5
  32. data/test/integration/people_index_test.rb +7 -4
  33. data/test/integration/people_show_test.rb +14 -12
  34. data/test/support/test_with_cassette.rb +38 -0
  35. data/test/test_helper.rb +18 -2
  36. data/test/unit/clip_test.rb +5 -0
  37. data/test/vcr_cassettes/admin_clip/add_a_description_for_a_clip.yml +272 -0
  38. data/test/vcr_cassettes/admin_clip/admin_user_can_create_new_clip.yml +114 -0
  39. data/test/vcr_cassettes/admin_clip/display_whether_there_is_a_VTT_file_for_a_clip.yml +613 -0
  40. data/test/vcr_cassettes/admin_clip/do_not_allow_submission_of_clip_if_there_is_no_webvtt_file.yml +567 -0
  41. data/test/vcr_cassettes/admin_images/user_should_not_be_able_to_create_slug.yml +967 -0
  42. data/test/vcr_cassettes/admin_images/user_should_see_associated_name_for_image_on_index_view.yml +561 -0
  43. data/test/vcr_cassettes/admin_images/user_should_see_associated_name_for_image_on_show_view.yml +162 -0
  44. data/test/vcr_cassettes/admin_images/user_should_see_image_for_valid_image_on_edit_page.yml +186 -0
  45. data/test/vcr_cassettes/admin_images/user_should_see_image_for_valid_image_on_new_image_page.yml +374 -0
  46. data/test/vcr_cassettes/admin_images/user_should_see_image_for_valid_image_on_show_page.yml +193 -0
  47. data/test/vcr_cassettes/clips_controller/should_assign_a_webvtt_variable.yml +154 -0
  48. data/test/vcr_cassettes/clips_controller/should_assign_title_for_a_show_view.yml +136 -0
  49. data/test/vcr_cassettes/clips_controller/should_get_show.yml +136 -0
  50. data/test/vcr_cassettes/clips_index/clicking_on_a_video_thumbnail_should_go_to_a_video_clip.yml +154 -0
  51. data/test/vcr_cassettes/clips_show/should_expand/collapse_the_transcript.yml +154 -0
  52. data/test/vcr_cassettes/clips_show/should_have_link_to_other_videos_by_the_same_person.yml +136 -0
  53. data/test/vcr_cassettes/clips_show/should_have_link_to_profile.yml +136 -0
  54. data/test/vcr_cassettes/clips_show/should_not_see_More_videos_on_topics_with_link_under_video.yml +136 -0
  55. data/test/vcr_cassettes/clips_show/should_not_see_Video_Topics_section_on_page.yml +136 -0
  56. data/test/vcr_cassettes/clips_show/should_show_basic_information_about_a_clip.yml +136 -0
  57. data/test/vcr_cassettes/clips_show/should_show_other_clips_related_by_topic.yml +136 -0
  58. data/test/vcr_cassettes/clips_show/should_show_the_transcript.yml +154 -0
  59. data/test/vcr_cassettes/microdata/clip_show_view_should_have_microdata.yml +136 -0
  60. data/test/vcr_cassettes/microdata/person_show_view_should_have_microdata.yml +399 -0
  61. data/test/vcr_cassettes/navigation/there_should_be_a_link_to_People_in_the_global_navigation.yml +267 -0
  62. data/test/vcr_cassettes/people_controller/should_get_index.yml +267 -0
  63. data/test/vcr_cassettes/people_controller/should_get_show.yml +399 -0
  64. data/test/vcr_cassettes/people_controller/show_view_should_have_a_title.yml +399 -0
  65. data/test/vcr_cassettes/people_index/links_to_show_view_for_person_with_video.yml +663 -0
  66. data/test/vcr_cassettes/people_index/links_to_show_view_for_person_without_video.yml +267 -0
  67. data/test/vcr_cassettes/people_index/shows_people.yml +267 -0
  68. data/test/vcr_cassettes/people_index/sort_profile_images.yml +267 -0
  69. data/test/vcr_cassettes/people_show/if_there_is_only_one_image_and_it_is_a_top_pick_then_do_not_show_the_image_section_of_the_page.yml +135 -0
  70. data/test/vcr_cassettes/people_show/should_display_a_map_if_the_location_the_person_grew_up_is_known.yml +399 -0
  71. data/test/vcr_cassettes/people_show/should_display_the_information_like_description__interview_date_and_time_below_video_clip.yml +136 -0
  72. data/test/vcr_cassettes/people_show/should_give_a_link_to_other_videos_with_the_same_person.yml +534 -0
  73. data/test/vcr_cassettes/people_show/should_not_display_a_map_if_the_location_the_person_grew_up_is_not_known.yml +135 -0
  74. data/test/vcr_cassettes/people_show/should_not_see_the_top_pick_image_with_the_other_images.yml +399 -0
  75. data/test/vcr_cassettes/people_show/should_provide_a_link_to_a_video_as_an_image_and_make_it_a_top_pick.yml +399 -0
  76. data/test/vcr_cassettes/people_show/should_provide_a_link_to_other_videos_as_text_links.yml +399 -0
  77. data/test/vcr_cassettes/people_show/should_show_a_top_pick_image_near_the_biography.yml +399 -0
  78. data/test/vcr_cassettes/people_show/should_show_name_suffix_if_present.yml +135 -0
  79. data/test/vcr_cassettes/people_show/shows_person_content.yml +399 -0
  80. metadata +180 -59
  81. checksums.yaml +0 -7
  82. data/test/dummy/tmp/cache/assets/D36/B10/sprockets%2F3a3013990e54d3e944c21c6a9ed0b5de +0 -0
  83. data/test/dummy/tmp/cache/assets/D55/830/sprockets%2Fbd750c0ba01430d321ae77fbc2b238f9 +0 -0
  84. data/test/dummy/tmp/capybara/capybara-201209271510033933274391.html +0 -13
  85. data/test/dummy/tmp/capybara/capybara-201209271512386994415403.html +0 -13
  86. data/test/dummy/tmp/capybara/capybara-201209271515157873796042.html +0 -165
  87. data/test/dummy/tmp/capybara/capybara-201209271517053504547394.html +0 -165
  88. data/test/dummy/tmp/capybara/capybara-201209271520578220954785.html +0 -165
  89. data/test/dummy/tmp/capybara/capybara-201209271522457231789910.html +0 -165
  90. data/test/dummy/tmp/capybara/capybara-201209271524374294425819.html +0 -165
  91. data/test/dummy/tmp/capybara/capybara-201209271526597280429369.html +0 -165
  92. data/test/dummy/tmp/capybara/capybara-201209271529595570902080.html +0 -165
@@ -0,0 +1,24 @@
1
+ require 'test_helper'
2
+
3
+ class Kinney::AdminClipsControllerTest < ActionController::TestCase
4
+ # set_fixture_class :admin_users => Kinney::AdminUser
5
+ # fixtures :admin_users
6
+
7
+ include Devise::TestHelpers
8
+
9
+ setup do
10
+ @controller = ::Admin::KinneyClipsController.new
11
+ end
12
+
13
+ # test "should get track" do
14
+ # get :track
15
+ # assert_response :success
16
+ # end
17
+
18
+ test "should get analyze" do
19
+ sign_in kinney_admin_users(:first)
20
+ get :analyze_tracker, :use_route => :kinney, :id => 'tolson-roots'
21
+ assert_response :success
22
+ end
23
+
24
+ end
@@ -1,25 +1,27 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class Kinney::ClipsControllerTest < ActionController::TestCase
4
+ extend TestWithCassette
5
+
4
6
  test "should get index" do
5
7
  get :index, :use_route => :kinney
6
8
  assert_response :success
7
9
  assert assigns(:people)
8
10
  end
9
11
 
10
- test "should get show" do
12
+ test_with_cassette "should get show", 'clips_controller' do
11
13
  get :show, :id => kinney_clips(:tolson_roots), :use_route => :kinney
12
14
  assert_response :success
13
15
  assert assigns(:clip)
14
16
  end
15
17
 
16
- test "should assign a webvtt variable" do
18
+ test_with_cassette "should assign a webvtt variable", 'clips_controller' do
17
19
  get :show, :id => kinney_clips(:atkins_fire), :use_route => :kinney
18
20
  assert assigns(:webvtt)
19
21
  assert assigns(:webvtt).respond_to?(:cues)
20
22
  end
21
23
 
22
- test 'should assign title for a show view' do
24
+ test_with_cassette 'should assign title for a show view', 'clips_controller' do
23
25
  get :show, :id => kinney_clips(:tolson_roots), :use_route => :kinney
24
26
  assert_equal "This is a description of the Roots clip.", assigns(:meta_description)
25
27
  end
@@ -1,17 +1,19 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class Kinney::PeopleControllerTest < ActionController::TestCase
4
- test "should get index" do
4
+ extend TestWithCassette
5
+
6
+ test "should get index", :people_controller do
5
7
  get :index, :use_route => :kinney
6
8
  assert_response :success
7
9
  end
8
10
 
9
- test "should get show" do
11
+ test "should get show", :people_controller do
10
12
  get :show, :id => kinney_people(:tolson), :use_route => :kinney
11
13
  assert_response :success
12
14
  end
13
15
 
14
- test "show view should have a title" do
16
+ test "show view should have a title", :people_controller do
15
17
  get :show, :id => kinney_people(:tolson), :use_route => :kinney
16
18
  assert_equal "Norris Tolson grew up in Edgecombe County.", assigns(:meta_description)
17
19
  end
@@ -15,10 +15,4 @@ class Kinney::TrackerControllerTest < ActionController::TestCase
15
15
  # assert_response :success
16
16
  # end
17
17
 
18
- test "should get analyze" do
19
- sign_in kinney_admin_users(:first)
20
- get :analyze, :use_route => :kinney, :video => 'tolson-roots'
21
- assert_response :success
22
- end
23
-
24
18
  end
@@ -1,7 +1,8 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class AdminClipTest < ActionDispatch::IntegrationTest
4
-
4
+ extend TestWithCassette
5
+
5
6
  setup do
6
7
  browser_start
7
8
  admin_login
@@ -11,7 +12,7 @@ class AdminClipTest < ActionDispatch::IntegrationTest
11
12
  browser_end
12
13
  end
13
14
 
14
- test "admin user can create new clip" do
15
+ test "admin user can create new clip", :admin_clip do
15
16
  visit('/admin/kinney_clips')
16
17
  click_link('New Kinney Clip')
17
18
  end
@@ -28,22 +29,24 @@ class AdminClipTest < ActionDispatch::IntegrationTest
28
29
  # # assert_equal '44', page.find_field('clip_duration').value
29
30
  # end
30
31
 
31
- test "add a description for a clip" do
32
+ test "add a description for a clip", :admin_clip do
32
33
  visit(new_admin_kinney_clip_path)
33
34
  assert page.find_field('kinney_clip_description')
34
35
  fill_in 'Description', :with => 'This is a description of a new clip.'
35
36
  end
36
37
 
37
- test "display whether there is a VTT file for a clip" do
38
- visit(new_admin_kinney_clip_path)
39
- fill_in 'Filename', :with => 'atkins-campuslife_fire'
40
- page.execute_script("$('#kinney_clip_filename').trigger('focus')") # to make sure focus is triggered
41
- assert page.has_content?('WEBVTT Found')
42
- fill_in 'Filename', :with => 'some-garbage'
43
- assert page.has_content?('WEBVTT Not Found')
38
+ test "display whether there is a VTT file for a clip", :admin_clip do
39
+ pending
40
+ # How to use something like VCR for ajax requests?
41
+ # visit(new_admin_kinney_clip_path)
42
+ # fill_in 'Filename', :with => 'atkins-campuslife_fire'
43
+ # page.execute_script("$('#kinney_clip_filename').trigger('focus')") # to make sure focus is triggered
44
+ # assert page.has_content?('WEBVTT Found')
45
+ # fill_in 'Filename', :with => 'some-garbage'
46
+ # assert page.has_content?('WEBVTT Not Found')
44
47
  end
45
48
 
46
- test "do not allow submission of clip if there is no webvtt file" do
49
+ test "do not allow submission of clip if there is no webvtt file", :admin_clip do
47
50
  visit(new_admin_kinney_clip_path)
48
51
  assert page.has_selector?("#kinney_clip_submit_action input[@disabled='disabled']")
49
52
  fill_in 'Filename', :with => 'atkins-campuslife_fire'
@@ -1,7 +1,8 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class AdminImagesTest < ActionDispatch::IntegrationTest
4
-
4
+ extend TestWithCassette
5
+
5
6
  setup do
6
7
  browser_start
7
8
  admin_login
@@ -11,38 +12,38 @@ class AdminImagesTest < ActionDispatch::IntegrationTest
11
12
  browser_end
12
13
  end
13
14
 
14
- test "user should not be able to create slug" do
15
+ test "user should not be able to create slug", :admin_images do
15
16
  visit(admin_kinney_images_path)
16
17
  click_link('New Kinney Image')
17
18
  fill_in 'Filename', :with => '000001'
18
19
  check 'Top Pick?'
19
20
  end
20
21
 
21
- test "user should see image for valid image on show page" do
22
+ test "user should see image for valid image on show page", :admin_images do
22
23
  visit admin_kinney_image_path(kinney_images(:tolson1))
23
24
  assert page.has_selector?("div img")
24
25
  assert page.find("div img")[:src].include?(kinney_images(:tolson1).filename)
25
26
  end
26
27
 
27
- test "user should see image for valid image on edit page" do
28
+ test "user should see image for valid image on edit page", :admin_images do
28
29
  visit edit_admin_kinney_image_path(kinney_images(:tolson1))
29
30
  assert page.find("#preview_image").has_selector?('img')
30
31
  assert page.find("#preview_image img")[:src].include?(kinney_images(:tolson1).filename)
31
32
  end
32
33
 
33
- test "user should see image for valid image on new image page" do
34
+ test "user should see image for valid image on new image page", :admin_images do
34
35
  visit new_admin_kinney_image_path
35
36
  fill_in 'Filename', :with => '0000001'
36
37
  assert page.find("#preview_image").has_selector?('img')
37
38
  assert page.find("#preview_image img")[:src].include?('0000001')
38
39
  end
39
40
 
40
- test "user should see associated name for image on show view" do
41
+ test "user should see associated name for image on show view", :admin_images do
41
42
  visit admin_kinney_image_path(kinney_images(:tolson1))
42
43
  assert page.has_content?('Edward Norris Tolson')
43
44
  end
44
45
 
45
- test "user should see associated name for image on index view" do
46
+ test "user should see associated name for image on index view", :admin_images do
46
47
  visit admin_kinney_images_path
47
48
  assert page.has_content?('Edward Norris Tolson')
48
49
  end
@@ -1,7 +1,10 @@
1
1
  require 'test_helper'
2
2
 
3
- class ClipsIndexTest < ActionDispatch::IntegrationTest
4
- test "clip index page should list all of the people with videos and the titles of their videos" do
3
+ class ClipsIndexTest < ActionDispatch::IntegrationTest
4
+
5
+ extend TestWithCassette
6
+
7
+ test "clip index page should list all of the people with videos and the titles of their videos", :clips_index do
5
8
  visit(kinney.clips_path)
6
9
  assert page.has_content?('Tolson')
7
10
  assert page.has_content?('Growing Up in Edgecombe County')
@@ -10,23 +13,23 @@ class ClipsIndexTest < ActionDispatch::IntegrationTest
10
13
  assert page.has_content?('Pullen Fire')
11
14
  end
12
15
 
13
- test "clip index page should list the name_suffix of a person" do
16
+ test "clip index page should list the name_suffix of a person", :clips_index do
14
17
  visit(kinney.clips_path)
15
18
  assert page.has_content?('John Leslie Atkins, III')
16
19
  end
17
20
 
18
- test "clip index page should list the graduating class of a person next to the name" do
21
+ test "clip index page should list the graduating class of a person next to the name", :clips_index do
19
22
  visit(kinney.clips_path)
20
23
  assert page.has_content?('John Leslie Atkins, III (1965)')
21
24
  end
22
25
 
23
- test "clicking on a video thumbnail should go to a video clip" do
26
+ test "clicking on a video thumbnail should go to a video clip", :clips_index do
24
27
  visit(kinney.clips_path)
25
28
  page.first('.thumbnail_video').click
26
29
  assert page.has_selector?('body.kinney_clips video')
27
30
  end
28
31
 
29
- test "the first text link should be the same as the video thumbnail link" do
32
+ test "the first text link should be the same as the video thumbnail link", :clips_index do
30
33
  visit(kinney.clips_path)
31
34
  atkins_section = page.first('#clip_profiles li')
32
35
  image_link = atkins_section.find('.thumbnail_video')[:href]
@@ -1,31 +1,34 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class ClipsShowTest < ActionDispatch::IntegrationTest
4
- test "should show basic information about a clip" do
4
+
5
+ extend TestWithCassette
6
+
7
+ test "should show basic information about a clip", :clips_show do
5
8
  visit(kinney.clip_path(kinney_clips(:tolson_roots)))
6
9
  assert page.has_selector?('h1', :text => 'Tolson')
7
10
  assert page.has_selector?('h1', :text => 'Growing Up in Edgecombe County')
8
11
  assert page.has_selector?('video')
9
12
  end
10
13
 
11
- test "should have link to other videos by the same person" do
14
+ test "should have link to other videos by the same person", :clips_show do
12
15
  visit(kinney.clip_path(kinney_clips(:tolson_roots)))
13
16
  assert page.has_selector?('#person_videos a', :text => 'Mentors')
14
17
  end
15
18
 
16
- test "should have link to profile" do
19
+ test "should have link to profile", :clips_show do
17
20
  visit(kinney.clip_path(kinney_clips(:tolson_roots)))
18
21
  assert page.has_selector?('#related_people a', :text => 'Edward Norris Tolson')
19
22
  assert page.has_selector?('#related_people a img')
20
23
  end
21
24
 
22
- test "should show the transcript" do
25
+ test "should show the transcript", :clips_show do
23
26
  visit(kinney.clip_path(kinney_clips(:atkins_fire)))
24
27
  assert page.has_selector?('h2', :text => 'Transcript')
25
28
  assert page.has_content?('It was a frightening time')
26
29
  end
27
30
 
28
- test "should expand/collapse the transcript" do
31
+ test "should expand/collapse the transcript", :clips_show do
29
32
  browser_start
30
33
  # stubs out saving the tracker to work around a sqlite database locking issue
31
34
  Kinney::Tracker.any_instance.stubs(:save).returns(true)
@@ -41,17 +44,17 @@ class ClipsShowTest < ActionDispatch::IntegrationTest
41
44
  browser_end
42
45
  end
43
46
 
44
- test "should show other clips related by topic" do
47
+ test "should show other clips related by topic", :clips_show do
45
48
  visit(kinney.clip_path(kinney_clips(:tolson_roots)))
46
49
  assert page.has_selector?('#topic_clips a', :text => 'Applying to NC State')
47
50
  end
48
51
 
49
- test "should not see Video Topics section on page" do
52
+ test "should not see Video Topics section on page", :clips_show do
50
53
  visit(kinney.clip_path(kinney_clips(:tolson_roots)))
51
54
  assert page.has_no_content?('Video Topics')
52
55
  end
53
56
 
54
- test "should not see More videos on topics with link under video" do
57
+ test "should not see More videos on topics with link under video", :clips_show do
55
58
  visit(kinney.clip_path(kinney_clips(:tolson_roots)))
56
59
  assert page.has_no_content?('More videos on Roots')
57
60
  end
@@ -0,0 +1,40 @@
1
+ require 'test_helper'
2
+
3
+ class MicrodataTest < ActionDispatch::IntegrationTest
4
+
5
+ extend TestWithCassette
6
+
7
+ test "clip show view should have microdata", :microdata do
8
+ path = kinney.clip_path(kinney_clips(:tolson_roots))
9
+ visit(path)
10
+ items = Microdata::Document.new(page.body, path).extract_items
11
+ item = items[0]
12
+ assert_equal(['http://schema.org/VideoObject'], item.type)
13
+ assert_equal(['http://siskel.lib.ncsu.edu/SLI/tolson/tolson-roots/tolson-roots.mp4'], item.properties['contentUrl'])
14
+ assert_equal(["T44S"], item.properties['duration'])
15
+ assert_equal(["http://siskel.lib.ncsu.edu/SLI/tolson/tolson-roots/tolson-roots.png"], item.properties['thumbnailUrl'])
16
+ assert item.properties['uploadDate']
17
+ assert item.properties['image']
18
+ assert item.properties['image'].first.include?('scrc.lib.ncsu.edu')
19
+ assert_equal(["272"], item.properties['height'])
20
+ assert_equal(["480"], item.properties['width'])
21
+ assert_equal(["This is a description of the Roots clip. Interview on June 4, 2011. (0:44)"], item.properties['description'])
22
+ end
23
+
24
+ test "person show view should have microdata", :microdata do
25
+ path = kinney.person_path(kinney_people(:tolson))
26
+ visit(path)
27
+ items = Microdata::Document.new(page.body, path).extract_items
28
+ item = items[0]
29
+ assert_equal(['http://schema.org/Person'], item.type)
30
+ assert_equal(['Edward Norris Tolson'], item.properties['name'])
31
+ assert_equal(2, item.properties['description'].length)
32
+ assert item.properties['description'].include?("Norris Tolson grew up in Edgecombe County.")
33
+ assert_equal(3, item.properties['image'].length)
34
+ assert item.properties['image'].first.include?('scrc.lib.ncsu.edu')
35
+ assert item.properties['alumniOf']
36
+ assert_equal ['http://schema.org/EducationalOrganization'], item.properties['alumniOf'].first.type
37
+ assert_equal(['North Carolina State University'], item.properties['alumniOf'].first.properties['name'])
38
+ end
39
+
40
+ end
@@ -2,30 +2,32 @@ require 'test_helper'
2
2
 
3
3
  class NavigationTest < ActionDispatch::IntegrationTest
4
4
 
5
- test "there should be a global nav" do
5
+ extend TestWithCassette
6
+
7
+ test "there should be a global nav", :navigation do
6
8
  visit(kinney.root_path)
7
9
  assert page.has_selector?('#global_nav')
8
10
  end
9
11
 
10
- test "there should be a Videos link in the global navigation" do
12
+ test "there should be a Videos link in the global navigation", :navigation do
11
13
  visit(kinney.root_path)
12
14
  assert page.has_selector?('a', :text => 'Videos')
13
15
  end
14
16
 
15
- test "topics navigation in navbar should only include topics with clips" do
17
+ test "topics navigation in navbar should only include topics with clips", :navigation do
16
18
  visit(kinney.root_path)
17
19
  assert page.has_selector?('#global_nav #topics_nav li a', :text => 'Mentors')
18
20
  assert page.has_no_selector?('#global_nav #topics_nav li', :text => 'Academics')
19
21
  end
20
22
 
21
- test "topics navigation should highlight the current page in the dropdown menu if on a topic page" do
23
+ test "topics navigation should highlight the current page in the dropdown menu if on a topic page", :navigation do
22
24
  visit(kinney.topic_path(kinney_topics(:mentors)))
23
25
  assert page.has_selector?('#topics_nav li.active a', :text => 'Mentors')
24
26
  assert page.has_selector?('#topics_nav li a', :text => 'Roots')
25
27
  assert page.has_no_selector?('#topics_nav li.active a', :text => 'Roots')
26
28
  end
27
29
 
28
- test "there should be a link to People in the global navigation" do
30
+ test "there should be a link to People in the global navigation", :navigation do
29
31
  visit(kinney.root_path)
30
32
  assert page.has_selector?('#global_nav ul li a', :text => 'People')
31
33
  page.find('#global_nav ul li a', :text => 'People').click
@@ -1,11 +1,14 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class PeopleIndexTest < ActionDispatch::IntegrationTest
4
+
5
+ extend TestWithCassette
6
+
4
7
  setup do
5
8
 
6
9
  end
7
10
 
8
- test 'shows people' do
11
+ test 'shows people', :people_index do
9
12
  visit(kinney.people_path)
10
13
  assert page.has_content?('People')
11
14
  assert page.has_content?('Tolson')
@@ -13,19 +16,19 @@ class PeopleIndexTest < ActionDispatch::IntegrationTest
13
16
  assert page.has_content?('Atkins, III')
14
17
  end
15
18
 
16
- test 'links to show view for person with video' do
19
+ test 'links to show view for person with video', :people_index do
17
20
  visit(kinney.people_path)
18
21
  click_link('Edward Norris Tolson')
19
22
  assert current_path == kinney.person_path(kinney_people(:tolson))
20
23
  end
21
24
 
22
- test 'links to show view for person without video' do
25
+ test 'links to show view for person without video', :people_index do
23
26
  visit(kinney.people_path)
24
27
  page.find('#people_no_clips').click_link('William Williams')
25
28
  assert current_path == kinney.person_path(kinney_people(:williams))
26
29
  end
27
30
 
28
- test 'sort profile images' do
31
+ test 'sort profile images', :people_index do
29
32
  browser_start
30
33
  visit(kinney.people_path)
31
34
  assert page.find('.thumbnails li:first').has_content?('Atkins')
@@ -1,11 +1,13 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class PeopleShowTest < ActionDispatch::IntegrationTest
4
+ extend TestWithCassette
5
+
4
6
  setup do
5
7
  #Capybara.current_driver = Capybara.javascript_driver # :selenium by default
6
8
  end
7
9
 
8
- test 'shows person content' do
10
+ test_with_cassette 'shows person content', :people_show do
9
11
  visit(kinney.person_path(kinney_people(:tolson)))
10
12
  assert page.has_content?('Edward Norris Tolson')
11
13
 
@@ -32,7 +34,7 @@ class PeopleShowTest < ActionDispatch::IntegrationTest
32
34
  assert page.has_content?("This is a citation.")
33
35
  end
34
36
 
35
- test 'does not show headings for content fields when content is not present' do
37
+ test_with_cassette 'does not show headings for content fields when content is not present', :people_show do
36
38
  visit(kinney.person_path(kinney_people(:williams)))
37
39
  assert page.has_content?('William Williams')
38
40
  assert page.has_no_selector?('h2', :text => 'Years at State')
@@ -43,61 +45,61 @@ class PeopleShowTest < ActionDispatch::IntegrationTest
43
45
  assert page.has_no_selector?('h2', :text => 'Citations')
44
46
  end
45
47
 
46
- test 'if there is only one image and it is a top pick then do not show the image section of the page' do
48
+ test_with_cassette 'if there is only one image and it is a top pick then do not show the image section of the page', :people_show do
47
49
  visit(kinney.person_path(kinney_people(:atkins)))
48
50
  assert page.has_no_selector?('h2', :text => 'Images of Jonh Leslie Atkins')
49
51
  end
50
52
 
51
- test 'should give a link to other videos with the same person' do
53
+ test_with_cassette 'should give a link to other videos with the same person', :people_show do
52
54
  visit(kinney.person_path(kinney_people(:tolson)))
53
55
  assert page.has_selector?('#person_videos a', :text => 'Growing Up in Edgecombe County')
54
56
  page.find('#person_videos a', :text => 'Mentors').click
55
57
  assert page.has_selector?('h1', :text => 'Mentors')
56
58
  end
57
59
 
58
- test "should show a top pick image near the biography" do
60
+ test_with_cassette "should show a top pick image near the biography", :people_show do
59
61
  visit(kinney.person_path(kinney_people(:tolson)))
60
62
  assert page.find('#image_top_pick img')[:src].include?('si-ag1962-p408-tolson')
61
63
  end
62
64
 
63
- test "should not see the top pick image with the other images" do
65
+ test_with_cassette "should not see the top pick image with the other images", :people_show do
64
66
  visit(kinney.person_path(kinney_people(:tolson)))
65
67
  page.all('#other_images img').each do |image|
66
68
  assert_false image[:src].include?('si-ag1962-p408-tolson')
67
69
  end
68
70
  end
69
71
 
70
- test "should show name_suffix if present" do
72
+ test_with_cassette "should show name_suffix if present", :people_show do
71
73
  visit(kinney.person_path(kinney_people(:atkins)))
72
74
  assert page.has_selector?('h1', :text => 'John Leslie Atkins, III')
73
75
  end
74
76
 
75
- test "should provide a link to a video as an image and make it a top pick" do
77
+ test_with_cassette "should provide a link to a video as an image and make it a top pick", :people_show do
76
78
  visit(kinney.person_path(kinney_people(:tolson)))
77
79
  image_link = page.find('.thumbnail_video:first')[:href]
78
80
  assert_equal kinney.clip_path(kinney_clips(:tolson_roots)), image_link
79
81
  end
80
82
 
81
- test "should provide a link to other videos as text links" do
83
+ test_with_cassette "should provide a link to other videos as text links", :people_show do
82
84
  visit(kinney.person_path(kinney_people(:tolson)))
83
85
  assert page.has_selector?('#person_videos a', :text => 'Growing Up in Edgecombe County')
84
86
  assert page.has_selector?('#person_videos a', :text => '0:44')
85
87
  assert page.has_selector?('#person_videos a', :text => 'Mentors')
86
88
  end
87
89
 
88
- test "should display the information like description, interview date and time below video clip" do
90
+ test_with_cassette "should display the information like description, interview date and time below video clip", :people_show do
89
91
  visit(kinney.clip_path(kinney_clips(:tolson_roots)))
90
92
  assert page.has_content?('This is a description of the Roots clip. Interview on June 4, 2011. (0:44)')
91
93
  end
92
94
 
93
- test "should display a map if the location the person grew up is known" do
95
+ test_with_cassette "should display a map if the location the person grew up is known", :people_show do
94
96
  visit(kinney.person_path(kinney_people(:tolson)))
95
97
  assert page.has_selector?('#static_map')
96
98
  assert page.has_content?('Grew up in')
97
99
  assert page.has_content?('Edgecombe County, NC')
98
100
  end
99
101
 
100
- test "should not display a map if the location the person grew up is not known" do
102
+ test_with_cassette "should not display a map if the location the person grew up is not known", :people_show do
101
103
  visit(kinney.person_path(kinney_people(:atkins)))
102
104
  assert page.has_no_content?('Grew up in')
103
105
  assert page.has_no_selector?('#static_map')
@@ -0,0 +1,38 @@
1
+ # Copied from jrochkind's bento search.
2
+ # TODO: Investigate a DRYer way to copy from jrochkind's bento search.
3
+ module TestWithCassette
4
+ def test_with_cassette(name, group = nil, vcr_options ={}, &block)
5
+ # cribbed from Rails and modified for VCR
6
+ # https://github.com/rails/rails/blob/b451de0d6de4df6bc66b274cec73b919f823d5ae/activesupport/lib/active_support/testing/declarative.rb#L25
7
+
8
+ test_name_safe = name.gsub(/\s+/,'_')
9
+
10
+ test_method_name = "test_#{test_name_safe}".to_sym
11
+
12
+ raise "#{test_method_name} is already defined in #{self}" if methods.include?(test_method_name)
13
+
14
+ cassette_name = vcr_options.delete(:cassette)
15
+ unless cassette_name
16
+ # calculate default cassette name from test name
17
+ cassette_name = test_name_safe
18
+ # put in group subdir if group
19
+ cassette_name = "#{group}/#{cassette_name}" if group
20
+ end
21
+
22
+ # default tag with groupname, can be over-ridden.
23
+ vcr_options = {:tag => group}.merge(vcr_options) if group
24
+ # vcr_options.merge!(:serialize_with => :json)
25
+ if block_given?
26
+ define_method(test_method_name) do
27
+ VCR.use_cassette(cassette_name , vcr_options) do
28
+ instance_eval &block
29
+ end
30
+ end
31
+ else
32
+ define_method(test_method_name) do
33
+ flunk "No implementation provided for #{name}"
34
+ end
35
+ end
36
+ end
37
+ alias_method :test, :test_with_cassette
38
+ end
data/test/test_helper.rb CHANGED
@@ -5,9 +5,22 @@ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
5
  require "rails/test_help"
6
6
  require 'capybara/rails'
7
7
  #require 'capybara/webkit'
8
- require 'mocha'
8
+ require 'mocha/setup'
9
9
  require 'selenium-webdriver'
10
10
  require 'pry'
11
+ require 'microdata'
12
+
13
+ require 'vcr'
14
+ VCR.configure do |c|
15
+ c.hook_into :webmock
16
+ c.cassette_library_dir = 'test/vcr_cassettes'
17
+ c.ignore_request do |request|
18
+ URI(request.uri).path.include?('__identify__') or
19
+ URI(request.uri).path.include?('hub/session')
20
+ end
21
+ c.allow_http_connections_when_no_cassette = true
22
+ c.ignore_localhost = false
23
+ end
11
24
 
12
25
 
13
26
  Rails.backtrace_cleaner.remove_silencers!
@@ -63,7 +76,10 @@ DatabaseCleaner.strategy = :truncation
63
76
  class ActionDispatch::IntegrationTest
64
77
  # Make the Capybara DSL available in all integration tests
65
78
  include Capybara::DSL
66
- Selenium::WebDriver::Firefox.path= "/opt/firefox17/firefox"
79
+
80
+ if File.exist? "/opt/firefox17/firefox"
81
+ Selenium::WebDriver::Firefox.path= "/opt/firefox17/firefox"
82
+ end
67
83
  # Stop ActiveRecord from wrapping tests in transactions
68
84
  #self.use_transactional_fixtures = false
69
85
 
@@ -56,6 +56,11 @@ class ClipTest < ActiveSupport::TestCase
56
56
  clip.reload
57
57
  assert_equal "Third Man, Edward Norris Tolson, and William Williams", clip.full_people_names
58
58
  end
59
+
60
+ test "clip should return title with full people names" do
61
+ clip = kinney_clips(:tolson_roots)
62
+ assert_equal "Growing Up in Edgecombe County with Edward Norris Tolson", clip.title_with_full_people_names
63
+ end
59
64
 
60
65
  test "clip should return the full URL for the poster image" do
61
66
  assert_equal "http://siskel.lib.ncsu.edu/SLI/tolson/tolson-roots/tolson-roots.png",