Commit Graph

372 Commits

Author SHA1 Message Date
Marcin Kulik
e5f307cbbc Fix feature specs for doc pages 2014-12-17 15:25:13 +00:00
Marcin Kulik
4984c81e1b Fix homepage test - "Start Recording" is a button now 2014-12-17 10:45:10 +00:00
Marcin Kulik
03f9d1b1d3 Don't use command as title when command == shell 2014-12-15 16:33:17 +00:00
Marcin Kulik
9d6a01fa41 Differentiate avatar between unconfirmed users with the same tmp username 2014-11-29 12:26:11 +00:00
Marcin Kulik
45d1d6c18b Use retro gravatars for default avatars 2014-11-29 12:17:03 +00:00
Marcin Kulik
c9ccc1b066 Add ability to set custom thumbnail frame time 2014-11-27 12:30:08 +00:00
Marcin Kulik
8d496bd418 Make snapshot generation aware of custom snapshot time on asciicast 2014-11-27 11:48:41 +00:00
Marcin Kulik
3207c4a65f Update OS detection for 0.9.9 client's User-Agent format 2014-11-05 16:27:05 +00:00
Marcin Kulik
e9f4ed1f61 Accept api token as http basic auth password 2014-10-25 20:53:12 +02:00
Marcin Kulik
427c19638c Prompt for username after login 2014-10-17 20:24:23 +02:00
Marcin Kulik
feb9703620 Remove old authentication code (browser-id, github, twitter) 2014-10-17 20:24:23 +02:00
Marcin Kulik
7397e14a57 Remove old user sign up code 2014-10-17 20:24:23 +02:00
Marcin Kulik
0cd4559f5a Log in by email without Persona 2014-10-17 20:24:22 +02:00
Marcin Kulik
ca156564f5 Don't use "dummy" anywhere 2014-10-05 18:25:49 +02:00
Marcin Kulik
c4a4961553 Introduce ExpiringToken, a base for future authentication 2014-10-05 17:58:05 +02:00
Marcin Kulik
e06e72676e Drop "dummy" from users, replace it with temporary_username 2014-10-05 17:47:42 +02:00
Marcin Kulik
a27c27861f Fix playback spec - use "expect" syntax 2014-09-25 21:47:25 +02:00
Marcin Kulik
22922a4135 Exclude specs that need terminal binary compiled when it's missing 2014-09-23 21:30:04 +02:00
Marcin Kulik
59f73aad88 Print 5 slowest examples 2014-09-23 21:30:04 +02:00
Marcin Kulik
96e30031b2 Actually use spec_helper, lol 2014-09-23 21:30:04 +02:00
Marcin Kulik
411540d690 Exclude unstable specs on travis 2014-09-23 19:58:52 +02:00
Marcin Kulik
956975db38 Fix User.for_email to never return dummy users without email 2014-09-23 19:05:14 +02:00
Marcin Kulik
0beacb326e Support gzip compressed data files (to be used by new version of cli) 2014-09-15 20:34:35 +02:00
Marcin Kulik
130948ae3f Upgrate to Rails 4.1.5 2014-08-30 20:10:49 +02:00
Marcin Kulik
560e11f24e Introduce admin 2014-07-05 14:59:42 +02:00
Marcin Kulik
1633c94b91 Ensure correct theme is used for displaying embedded asciicast 2014-07-01 22:35:47 +02:00
Marcin Kulik
36362a14b5 Fix JS playback test 2014-07-01 21:53:29 +02:00
Marcin Kulik
6bb5f39f8b Add theme changing for whole user profile and single asciicast 2014-07-01 21:33:50 +02:00
Marcin Kulik
14648f11b7 Add ability to override theme via url param 2014-06-30 19:30:18 +02:00
Marcin Kulik
b6a23222d7 Integrate new React.js-based player 2014-06-24 20:49:26 +02:00
Marcin Kulik
c7e9974f47 Update a separate instance of current user 2014-04-12 12:39:59 +02:00
Marcin Kulik
ace357187c Well, 2 letter usernames are fine too 2014-04-10 22:22:33 +02:00
Marcin Kulik
a6bb7bf5ba Allow capital letters in usernames 2014-04-10 22:14:20 +02:00
Marcin Kulik
698767ad82 Validate username format 2014-04-10 22:03:21 +02:00
Marcin Kulik
c0d4f28b2f Check if updated_at of asciicasts and api tokens is touched when merging users 2014-04-10 21:08:22 +02:00
Marcin Kulik
411a14b570 Don't take a screenshot when running tests 2014-03-21 16:47:14 +01:00
Marcin Kulik
0cb57c0cdd Get rid of annoying "pending test" message 2014-03-16 18:37:45 +01:00
Marcin Kulik
82c6c034c5 Improve test coverage of UsersController 2014-03-16 18:34:37 +01:00
Marcin Kulik
4cd145cac7 Add feature test for profile updating 2014-03-16 16:03:37 +01:00
Marcin Kulik
56b99f11e3 Clean up test auth helpers 2014-03-16 16:03:33 +01:00
Marcin Kulik
72248d7b83 Add a (pending) test for X-Frame-Options removal 2014-03-16 11:34:25 +01:00
Marcin Kulik
06c19adaab Move emedded player related endpoints to API 2014-03-05 10:05:45 +01:00
Marcin Kulik
933c5d9801 Namespace the existing API as v0 2014-02-25 18:35:03 +01:00
Marcin Kulik
fe5907e96f Don't use AR API outside of AR classes 2014-02-20 23:31:49 +01:00
Marcin Kulik
f55ec05ae1 Use Warden for authentication 2014-02-20 23:31:48 +01:00
Marcin Kulik
28e0926fd6 Split User.for_api_token into separate lookup and create methods 2014-02-20 21:11:09 +01:00
Marcin Kulik
94817be1b3 Rename nickname to username 2014-02-12 20:51:01 +01:00
Marcin Kulik
81c8340bc1 Drop unused columns from asciicasts table 2014-02-12 20:36:51 +01:00
Marcin Kulik
24bad5e628 Use strong_parameters instead of protected_attributes 2014-02-12 20:22:20 +01:00
Marcin Kulik
9b32e2dc37 Prevent shadowing real user profiles by dummy ones 2014-02-12 19:51:25 +01:00
Marcin Kulik
5db7506823 Make "default legacy" asciicast user a dummy one 2014-02-12 17:46:09 +01:00
Marcin Kulik
1be5538e5c Merge dummy users into real ones when assigning api tokens 2014-02-12 17:41:06 +01:00
Marcin Kulik
2ceea32cc4 Create dummy users for new api tokens 2014-02-11 17:49:22 +01:00
Marcin Kulik
74d7bb0156 Make AsciicastCreator unaware of API subtleties 2014-02-10 17:39:37 +01:00
Marcin Kulik
0a47fd441f Remove unused recorded_at column 2014-02-10 16:42:50 +01:00
Marcin Kulik
9530c9d870 Ignore "recorded_at" from client 2014-02-09 19:35:30 +01:00
Marcin Kulik
633f514de8 Use Virtus for AsciicastParams 2014-02-09 19:12:15 +01:00
Marcin Kulik
13544d9d04 Rename user_token to api_token 2014-02-09 14:44:09 +01:00
Marcin Kulik
9c224ce894 Remove unused mailer 2014-02-01 11:17:12 +01:00
Marcin Kulik
0be6410acb Enable coveralls.io integration 2014-02-01 11:02:06 +01:00
Marcin Kulik
4908599204 Fix style violations 2014-02-01 10:29:49 +01:00
Marcin Kulik
105d11bfe7 Change naming convention for presenter objects 2014-02-01 01:26:58 +01:00
Marcin Kulik
463f18c207 Refactor user page to use a presenter object 2014-02-01 01:16:28 +01:00
Marcin Kulik
5dc857ed9e Rename AsciicastPresenter#user to #current_user 2014-02-01 01:14:37 +01:00
Marcin Kulik
d06801487c Set defaults for AsciicastListPresenter in .build 2014-02-01 01:10:54 +01:00
Marcin Kulik
585167089d Rename container_width option to max_width 2014-01-18 14:53:15 +01:00
Marcin Kulik
57bcab04c9 Use proper PlaybackOptions object for passing options to JS player 2014-01-18 14:12:10 +01:00
Marcin Kulik
2191dfe32a Use .decorate instead of manually creating decorator instances 2014-01-18 12:24:40 +01:00
Marcin Kulik
86f6af3d78 Introduce AsciicastPresenter 2014-01-18 11:44:13 +01:00
Marcin Kulik
d571be2bbd Introduce AsciicastListPresenter 2014-01-17 17:21:22 +01:00
Marcin Kulik
f6ad790a09 Introduce HomePresenter 2014-01-17 14:52:37 +01:00
Marcin Kulik
fe30c0282f It's "OS X", not "OSX".
(via @solnic)
2013-12-10 12:00:17 +01:00
Marcin Kulik
c9437524fb Move test routes definition from routes.rb to a test file 2013-12-09 23:16:41 +01:00
Marcin Kulik
ec2004713e Set test specific carrierwave storage dir prefix in spec_helper 2013-12-09 20:26:08 +01:00
Marcin Kulik
bf8b49b108 Move test specific carrierwave configuration to spec_helper 2013-12-09 19:16:09 +01:00
Marcin Kulik
8afb6f157f Use factory_girl helpers instead of FactoryGirl.build/create 2013-12-09 17:19:14 +01:00
Marcin Kulik
613621023c Use new rspec syntax in all specs
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index a115b7d..09d150b 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -46,12 +46,12 @@ def retrieve
   describe "action raise unauthorized" do

     context "when xhr" do
-      before { request.stub(:xhr?).and_return(true) }
+      before { allow(request).to receive(:xhr?).and_return(true) }

       it "response with 401" do
         get :foo

-        response.status.should == 401
+        expect(response.status).to eq(401)
       end

     end
@@ -59,11 +59,11 @@ def retrieve
     context "when typical request" do

       it "redirects to login_path" do
-        @controller.should_receive(:store_location)
+        expect(@controller).to receive(:store_location)

         get :foo

-        flash[:notice].should == "Please sign in to proceed"
+        expect(flash[:notice]).to eq("Please sign in to proceed")
         should redirect_to(login_path)
       end

@@ -72,12 +72,12 @@ def retrieve

   context "when action raise forbidden" do
     context "when xhr" do
-      before { request.stub(:xhr?).and_return(true) }
+      before { allow(request).to receive(:xhr?).and_return(true) }

       it "response with 401" do
         get :bar

-        response.status.should == 403
+        expect(response.status).to eq(403)
       end
     end

@@ -86,7 +86,7 @@ def retrieve
       it "redirects to root_path" do
         get :bar

-        flash[:alert].should == "This action is forbidden"
+        expect(flash[:alert]).to eq("This action is forbidden")
         should redirect_to(root_path)
       end

@@ -97,8 +97,8 @@ def retrieve
     it 'stores current request path to be later retrieved' do
       get :store
       get :retrieve
-      assigns[:location].should == '/fake/store'
-      assigns[:location_again].should == 'NOWAI!'
+      expect(assigns[:location]).to eq('/fake/store')
+      expect(assigns[:location_again]).to eq('NOWAI!')
     end
   end

@@ -106,7 +106,7 @@ def retrieve
     context 'when there is no stored location' do
       it 'redirects to given location' do
         path = double
-        @controller.should_receive(:redirect_to).with(path)
+        expect(@controller).to receive(:redirect_to).with(path)
         @controller.send(:redirect_back_or_to, path)
       end
     end
@@ -115,8 +115,8 @@ def retrieve
       it 'redirects to stored location' do
         stored_path = double
         path = double
-        @controller.stub(:get_stored_location => stored_path)
-        @controller.should_receive(:redirect_to).with(stored_path)
+        allow(@controller).to receive(:get_stored_location).and_return(stored_path)
+        expect(@controller).to receive(:redirect_to).with(stored_path)
         @controller.send(:redirect_back_or_to, path)
       end
     end
diff --git a/spec/controllers/asciicasts_controller_spec.rb b/spec/controllers/asciicasts_controller_spec.rb
index 5741ec2..c37e69b 100644
--- a/spec/controllers/asciicasts_controller_spec.rb
+++ b/spec/controllers/asciicasts_controller_spec.rb
@@ -2,12 +2,12 @@

 shared_examples_for 'guest user trying to modify' do
   it { should redirect_to(login_path) }
-  specify { flash[:notice].should =~ /sign in to proceed/ }
+  specify { expect(flash[:notice]).to match(/sign in to proceed/) }
 end

 shared_examples_for 'non-owner user trying to modify' do
   it { should redirect_to(asciicast_path(asciicast)) }
-  specify { flash[:alert].should =~ /can't/ }
+  specify { expect(flash[:alert]).to match(/can't/) }
 end

 describe AsciicastsController do
@@ -45,7 +45,7 @@

     before do
       allow(controller).to receive(:view_counter) { view_counter }
-      Asciicast.should_receive(:find).and_return(asciicast)
+      expect(Asciicast).to receive(:find).and_return(asciicast)
       asciicast.title = 'some tit'
     end

@@ -66,7 +66,7 @@
           with(asciicast, cookies)
       end

-      specify { assigns(:asciicast).should == asciicast_decorator }
+      specify { expect(assigns(:asciicast)).to eq(asciicast_decorator) }
     end

     context 'for json request' do
@@ -98,7 +98,7 @@
     let(:make_request) { get :edit, :id => asciicast.id }

     before do
-      Asciicast.should_receive(:find).and_return(asciicast)
+      expect(Asciicast).to receive(:find).and_return(asciicast)
       asciicast.user = user
     end

@@ -133,7 +133,7 @@
     let(:make_request) { put :update, :id => asciicast.id, :asciicast => { } }

     before do
-      Asciicast.should_receive(:find).and_return(asciicast)
+      expect(Asciicast).to receive(:find).and_return(asciicast)
       asciicast.user = user
     end

@@ -144,17 +144,17 @@

       context 'when update succeeds' do
         before do
-          asciicast.should_receive(:update_attributes).and_return(true)
+          expect(asciicast).to receive(:update_attributes).and_return(true)
           make_request
         end

         it { should redirect_to(asciicast_path(asciicast)) }
-        specify { flash[:notice].should =~ /was updated/ }
+        specify { expect(flash[:notice]).to match(/was updated/) }
       end

       context 'when update fails' do
         before do
-          asciicast.should_receive(:update_attributes).and_return(false)
+          expect(asciicast).to receive(:update_attributes).and_return(false)
           make_request
         end

@@ -184,7 +184,7 @@
     let(:make_request) { delete :destroy, :id => asciicast.id }

     before do
-      Asciicast.should_receive(:find).and_return(asciicast)
+      expect(Asciicast).to receive(:find).and_return(asciicast)
       asciicast.user = user
     end

@@ -195,22 +195,22 @@

       context 'when destroy succeeds' do
         before do
-          asciicast.should_receive(:destroy).and_return(true)
+          expect(asciicast).to receive(:destroy).and_return(true)
           make_request
         end

         it { should redirect_to(profile_path(user)) }
-        specify { flash[:notice].should =~ /was deleted/ }
+        specify { expect(flash[:notice]).to match(/was deleted/) }
       end

       context 'when destroy fails' do
         before do
-          asciicast.should_receive(:destroy).and_return(false)
+          expect(asciicast).to receive(:destroy).and_return(false)
           make_request
         end

         it { should redirect_to(asciicast_path(asciicast)) }
-        specify { flash[:alert].should =~ /again/ }
+        specify { expect(flash[:alert]).to match(/again/) }
       end
     end

diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb
index 6dcd6e7..e82d5ea 100644
--- a/spec/controllers/home_controller_spec.rb
+++ b/spec/controllers/home_controller_spec.rb
@@ -10,7 +10,7 @@

       it "returns http success" do
         get 'show'
-        response.should be_success
+        expect(response).to be_success
       end
     end

@@ -21,14 +21,14 @@

       it "returns http success" do
         get 'show'
-        response.should be_success
+        expect(response).to be_success
       end
     end

     describe 'when there are no casts at all' do
       it "returns http success" do
         get 'show'
-        response.should be_success
+        expect(response).to be_success
       end
     end
   end
diff --git a/spec/controllers/user_tokens_controller_spec.rb b/spec/controllers/user_tokens_controller_spec.rb
index 2a43c4a..6774f87 100644
--- a/spec/controllers/user_tokens_controller_spec.rb
+++ b/spec/controllers/user_tokens_controller_spec.rb
@@ -24,14 +24,14 @@
       let(:user) { nil }

       it { should redirect_to(login_path) }
-      specify { flash[:notice].should =~ /sign in to proceed/ }
+      specify { expect(flash[:notice]).to match(/sign in to proceed/) }
     end

     context "when # of claimed asciicasts is nil" do
       let(:claimed_num) { nil }

       it 'displays error page' do
-        response.should render_template(:error)
+        expect(response).to render_template(:error)
       end
     end

@@ -39,14 +39,14 @@
       let(:claimed_num) { 0 }

       it { should redirect_to(profile_path(user)) }
-      specify { flash[:notice].should =~ /Authenticated/ }
+      specify { expect(flash[:notice]).to match(/Authenticated/) }
     end

     context "when # of claimed asciicast is > 0" do
       let(:claimed_num) { 1 }

       it { should redirect_to(profile_path(user)) }
-      specify { flash[:notice].should =~ /Claimed #{claimed_num}/ }
+      specify { expect(flash[:notice]).to match(/Claimed #{claimed_num}/) }
     end
   end

diff --git a/spec/decorators/asciicast_decorator_spec.rb b/spec/decorators/asciicast_decorator_spec.rb
index 19e6af1..05264d7 100644
--- a/spec/decorators/asciicast_decorator_spec.rb
+++ b/spec/decorators/asciicast_decorator_spec.rb
@@ -230,7 +230,7 @@
     }

     before do
-      asciicast.stub(:id => 123)
+      allow(asciicast).to receive(:id).and_return(123)
     end

     it 'should be an async script tag including asciicast id' do
diff --git a/spec/features/playback_spec.rb b/spec/features/playback_spec.rb
index ce4f912..0bbfd6c 100644
--- a/spec/features/playback_spec.rb
+++ b/spec/features/playback_spec.rb
@@ -26,7 +26,7 @@ def inject_on_finished_callback
       visit asciicast_path(asciicast, speed: 5)
       find(".play-button").find(".arrow").click
       inject_on_finished_callback
-      page.should have_selector('body .finished')
+      expect(page).to have_selector('body .finished')
     end
   end

diff --git a/spec/models/comment_spec.rb b/spec/models/comment_spec.rb
index e6e128f..11f56e0 100644
--- a/spec/models/comment_spec.rb
+++ b/spec/models/comment_spec.rb
@@ -3,7 +3,7 @@
 describe Comment do

   it "factory should be valid" do
-    FactoryGirl.build(:comment).should be_valid
+    expect(FactoryGirl.build(:comment)).to be_valid
   end

 end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index a6c845e..88ee9a8 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -96,8 +96,8 @@

       it 'returns created UserToken' do
         ut = user.add_user_token(token)
-        ut.should be_kind_of(UserToken)
-        ut.id.should_not be(nil)
+        expect(ut).to be_kind_of(UserToken)
+        expect(ut.id).not_to be(nil)
       end
     end

@@ -107,7 +107,7 @@

       it 'returns existing UserToken' do
         ut = user.add_user_token(token)
-        ut.should == existing_token
+        expect(ut).to eq(existing_token)
       end
     end
   end
diff --git a/spec/models/user_token_spec.rb b/spec/models/user_token_spec.rb
index f1e76e6..a106311 100644
--- a/spec/models/user_token_spec.rb
+++ b/spec/models/user_token_spec.rb
@@ -2,6 +2,6 @@

 describe UserToken do
   it "has valid factory" do
-    FactoryGirl.build(:user_token).should be_valid
+    expect(FactoryGirl.build(:user_token)).to be_valid
   end
 end
diff --git a/spec/routing/connect_spec.rb b/spec/routing/connect_spec.rb
index 351f928..91f713f 100644
--- a/spec/routing/connect_spec.rb
+++ b/spec/routing/connect_spec.rb
@@ -2,7 +2,7 @@

 describe 'connect routing' do
   it 'routes /connect/:user_token to user_tokens#create for user_token' do
-    { :get => '/connect/jolka-misio' }.should route_to(
+    expect({ :get => '/connect/jolka-misio' }).to route_to(
       :controller => 'user_tokens',
       :action     => 'create',
       :user_token => 'jolka-misio'
diff --git a/spec/support/controller_macros.rb b/spec/support/controller_macros.rb
index 6b26434..fa31720 100644
--- a/spec/support/controller_macros.rb
+++ b/spec/support/controller_macros.rb
@@ -1,7 +1,7 @@
 module Asciinema
   module ControllerMacros
     def login_as(user)
-      controller.stub(:current_user => user)
+      allow(controller).to receive(:current_user).and_return(user)
     end
   end
 end
2013-12-09 17:16:38 +01:00
Marcin Kulik
d8de171f66 Add "Contributing" page 2013-12-03 20:11:47 +01:00
Marcin Kulik
e2e117ce84 Refactor profile link helpers and decorators 2013-12-01 00:55:31 +01:00
Marcin Kulik
b6126167a3 Prefer gravatar over old omniauth provided avatar 2013-11-30 11:15:41 +01:00
Marcin Kulik
66a2eae3b4 Use FG shortcut helpers in home controller spec 2013-11-30 10:58:38 +01:00
Marcin Kulik
c785e1a1ff Fix asciicasts_controller spec 2013-11-28 23:20:01 +01:00
Marcin Kulik
2dbc811caf Fix the condition for displaying edit/delete links 2013-11-22 22:33:14 +01:00
Marcin Kulik
4b9c33f228 Add fake host pages with an embedded asciicast 2013-11-22 21:45:45 +01:00
Marcin Kulik
38cde2d172 Avoid AR chains outside of AR models 2013-11-20 21:33:30 +01:00
Marcin Kulik
dd9488d56f Add fullname_and_nickname to UserDecorator 2013-11-20 21:33:29 +01:00
Marcin Kulik
3a2692f70f Add test for UserDecorator#avatar_url 2013-11-20 21:33:27 +01:00
Marcin Kulik
af02d5e0b2 Dasherize how-it-works and getting-started doc paths 2013-11-20 21:33:26 +01:00
Marcin Kulik
100273f5bf Update browse page to new layout and add sorting 2013-11-20 21:33:26 +01:00
Marcin Kulik
08d17f28e3 Redesign asciicast page 2013-11-20 21:33:25 +01:00
Marcin Kulik
f9717f1aa5 Update profile page to new layout 2013-11-20 21:33:24 +01:00
Marcin Kulik
3362da04dc Update information on "About" page 2013-11-20 21:33:22 +01:00
Marcin Kulik
76ddc94561 Update docs pages for new layout 2013-11-20 21:33:22 +01:00
Marcin Kulik
c0473dc217 Redesign homepage (and layout in general) 2013-11-20 21:33:22 +01:00
Marcin Kulik
6009250a36 Display "asciicast:<id>" as a title for title-less asciicasts 2013-11-20 21:29:43 +01:00
Marcin Kulik
88e2e54477 Add privacy policy 2013-10-25 20:01:56 +02:00
Marcin Kulik
888f3b7c80 Don't take current user's email from current profile page's user 2013-10-23 21:54:11 +02:00
Marcin Kulik
431fd87002 Use auth token for permanent sessions 2013-10-22 19:16:18 +02:00
Marcin Kulik
3e1feff84e Auto-strip whitespace from email and nickname 2013-10-22 17:58:15 +02:00
Marcin Kulik
5bd8b05a93 Validate presence and uniqueness of both nickname and email 2013-10-22 17:52:04 +02:00