diff --git a/app/assets/stylesheets/users.sass b/app/assets/stylesheets/users.sass index 551c140..ebfa960 100644 --- a/app/assets/stylesheets/users.sass +++ b/app/assets/stylesheets/users.sass @@ -2,7 +2,7 @@ .new_user margin-top: 30px - #user_nickname + #user_username width: 200px .returning-user diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 3e363ca..0cee018 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -9,7 +9,7 @@ class UsersController < ApplicationController end def show - user = User.real_for_nickname!(params[:nickname]) + user = User.real_for_username!(params[:username]) render locals: { page: UserPagePresenter.build(user, current_user) } end @@ -53,11 +53,11 @@ class UsersController < ApplicationController end def create_params - params.fetch(:user, {}).permit(:nickname, :name) + params.fetch(:user, {}).permit(:username, :name) end def update_params - params.require(:user).permit(:nickname, :name, :email) + params.require(:user).permit(:username, :name, :email) end end diff --git a/app/decorators/helpers/avatar_helper.rb b/app/decorators/helpers/avatar_helper.rb index db22143..b6e59d8 100644 --- a/app/decorators/helpers/avatar_helper.rb +++ b/app/decorators/helpers/avatar_helper.rb @@ -1,7 +1,7 @@ module AvatarHelper def avatar_image_tag - h.image_tag avatar_url, alt: model.nickname, class: 'avatar' + h.image_tag avatar_url, alt: model.username, class: 'avatar' end private diff --git a/app/decorators/user_decorator.rb b/app/decorators/user_decorator.rb index 1cdddce..63b8ef2 100644 --- a/app/decorators/user_decorator.rb +++ b/app/decorators/user_decorator.rb @@ -2,7 +2,7 @@ class UserDecorator < ApplicationDecorator include AvatarHelper def link - wrap_with_link(nickname) + wrap_with_link(username) end def img_link @@ -11,9 +11,9 @@ class UserDecorator < ApplicationDecorator def full_name if model.name.present? - "#{model.name} (#{model.nickname})" + "#{model.name} (#{model.username})" else - model.nickname + model.username end end @@ -27,7 +27,7 @@ class UserDecorator < ApplicationDecorator if dummy html else - h.link_to html, h.profile_path(model), title: nickname + h.link_to html, h.profile_path(model), title: username end end diff --git a/app/models/asciicast.rb b/app/models/asciicast.rb index 1270516..c995f46 100644 --- a/app/models/asciicast.rb +++ b/app/models/asciicast.rb @@ -51,7 +51,7 @@ class Asciicast < ActiveRecord::Base end def user - super || self.user = User.new(nickname: 'anonymous').tap { |u| u.dummy = true } + super || self.user = User.new(username: 'anonymous').tap { |u| u.dummy = true } end def stdout diff --git a/app/models/user.rb b/app/models/user.rb index 9a23eef..7140e7e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -8,8 +8,8 @@ class User < ActiveRecord::Base has_many :asciicasts, :dependent => :destroy has_many :comments, :dependent => :destroy - validates :nickname, presence: true - validates :nickname, uniqueness: { scope: :dummy }, unless: :dummy + validates :username, presence: true + validates :username, uniqueness: { scope: :dummy }, unless: :dummy validates :email, presence: true, uniqueness: true, unless: :dummy scope :real, -> { where(dummy: false) } @@ -24,8 +24,8 @@ class User < ActiveRecord::Base where(email: email).first end - def self.real_for_nickname!(nickname) - real.where(nickname: nickname).first! + def self.real_for_username!(username) + real.where(username: username).first! end def self.for_api_token(token, username) @@ -41,7 +41,7 @@ class User < ActiveRecord::Base transaction do |tx| user = User.new user.dummy = true - user.nickname = username + user.username = username user.save! user.api_tokens.create!(token: token) user @@ -52,7 +52,7 @@ class User < ActiveRecord::Base SecureRandom.urlsafe_base64 end - def nickname=(value) + def username=(value) value ? super(value.strip) : super end @@ -61,7 +61,7 @@ class User < ActiveRecord::Base end def to_param - nickname + username end def assign_api_token(token) diff --git a/app/presenters/user_page_presenter.rb b/app/presenters/user_page_presenter.rb index 5ece3cb..7b357ef 100644 --- a/app/presenters/user_page_presenter.rb +++ b/app/presenters/user_page_presenter.rb @@ -16,7 +16,7 @@ class UserPagePresenter end def title - "#{user.nickname}'s profile".html_safe + "#{user.username}'s profile".html_safe end def user_full_name @@ -37,11 +37,11 @@ class UserPagePresenter def asciicast_count_text(h) count = h.pluralize(user.asciicast_count, 'asciicast') - "#{count} by #{user.nickname}" + "#{count} by #{user.username}" end - def user_nickname - user.nickname + def user_username + user.username end def asciicasts diff --git a/app/views/layouts/_header.html.slim b/app/views/layouts/_header.html.slim index f28dbfe..72fc07c 100644 --- a/app/views/layouts/_header.html.slim +++ b/app/views/layouts/_header.html.slim @@ -22,7 +22,7 @@ header.navbar.navbar-default[role="navigation"] li.dropdown a.dropdown-toggle[href="#" data-toggle="dropdown"] = current_user.avatar_image_tag - = current_user.nickname + = current_user.username b.caret ul.dropdown-menu li diff --git a/app/views/users/edit.html.slim b/app/views/users/edit.html.slim index 8198546..0bc4af7 100644 --- a/app/views/users/edit.html.slim +++ b/app/views/users/edit.html.slim @@ -3,8 +3,8 @@ legend Your account .form-group - = f.label :nickname, 'Username *', class: 'col-sm-2 control-label' - .col-sm-4 = f.text_field :nickname, class: 'form-control' + = f.label :username, 'Username *', class: 'col-sm-2 control-label' + .col-sm-4 = f.text_field :username, class: 'form-control' .form-group = f.label :email, 'E-mail *', class: 'col-sm-2 control-label' diff --git a/app/views/users/new.html.slim b/app/views/users/new.html.slim index 56883f0..3d01ce4 100644 --- a/app/views/users/new.html.slim +++ b/app/views/users/new.html.slim @@ -13,8 +13,8 @@ = form_for @user, url: user_path do |f| .form-group - = f.label :nickname, 'Pick a username:' - = f.text_field :nickname, required: true, 'class' => 'form-control', 'data-behavior' => 'focus' + = f.label :username, 'Pick a username:' + = f.text_field :username, required: true, 'class' => 'form-control', 'data-behavior' => 'focus' .form-group = f.submit 'Start recording', class: 'btn btn-primary' diff --git a/app/views/users/show.html.slim b/app/views/users/show.html.slim index 8f21b92..917154e 100644 --- a/app/views/users/show.html.slim +++ b/app/views/users/show.html.slim @@ -30,4 +30,4 @@ code asciinema auth ' in your terminal. - else - ' #{page.user_nickname} hasn't recorded anything yet. + ' #{page.user_username} hasn't recorded anything yet. diff --git a/config/routes.rb b/config/routes.rb index 58a33c6..d64e208 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -11,7 +11,7 @@ Asciinema::Application.routes.draw do end end - get "/~:nickname" => "users#show", :as => :profile + get "/~:username" => "users#show", :as => :profile get "/docs" => "docs#show", :page => 'getting-started', :as => :docs_index get "/docs/:page" => "docs#show", :as => :docs diff --git a/db/migrate/20140212194017_rename_users_nickname_to_username.rb b/db/migrate/20140212194017_rename_users_nickname_to_username.rb new file mode 100644 index 0000000..8652d61 --- /dev/null +++ b/db/migrate/20140212194017_rename_users_nickname_to_username.rb @@ -0,0 +1,5 @@ +class RenameUsersNicknameToUsername < ActiveRecord::Migration + def change + rename_column :users, :nickname, :username + end +end diff --git a/db/schema.rb b/db/schema.rb index 7dc4feb..547793c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20140212193024) do +ActiveRecord::Schema.define(version: 20140212194017) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -90,7 +90,7 @@ ActiveRecord::Schema.define(version: 20140212193024) do t.string "avatar_url" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.string "nickname", null: false + t.string "username", null: false t.string "auth_token" t.boolean "dummy", default: false, null: false end @@ -98,7 +98,7 @@ ActiveRecord::Schema.define(version: 20140212193024) do add_index "users", ["auth_token"], name: "index_users_on_auth_token", using: :btree add_index "users", ["dummy"], name: "index_users_on_dummy", using: :btree add_index "users", ["email"], name: "index_users_on_email", using: :btree - add_index "users", ["nickname"], name: "index_users_on_nickname", using: :btree add_index "users", ["provider", "uid"], name: "index_users_on_provider_and_uid", unique: true, using: :btree + add_index "users", ["username"], name: "index_users_on_username", using: :btree end diff --git a/spec/controllers/asciicasts_controller_spec.rb b/spec/controllers/asciicasts_controller_spec.rb index 5eb6e31..bf2d6e7 100644 --- a/spec/controllers/asciicasts_controller_spec.rb +++ b/spec/controllers/asciicasts_controller_spec.rb @@ -12,7 +12,7 @@ end describe AsciicastsController do - let(:user) { stub_model(User, :nickname => 'nick') } + let(:user) { stub_model(User, username: 'nick') } let(:asciicast) { stub_model(Asciicast, :id => 666) } subject { response } diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index 4318b6a..54432a5 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -27,11 +27,11 @@ describe UsersController do describe "#create" do let!(:user) { stub_model(User) } - subject { post :create, user: { nickname: 'jola' } } + subject { post :create, user: { username: 'jola' } } before do allow(controller).to receive(:current_user=) - allow(User).to receive(:new).with('nickname' => 'jola') { user } + allow(User).to receive(:new).with('username' => 'jola') { user } store[:new_user_email] = 'foo@bar.com' end @@ -86,15 +86,15 @@ describe UsersController do end describe '#show' do - subject { get :show, nickname: nickname } + subject { get :show, username: username } - let(:nickname) { user.nickname } + let(:username) { user.username } before do subject end - context "when real user nickname given" do + context "when real user username given" do let(:user) { create(:user) } it 'renders "show" template with HomePagePresenter as page' do @@ -102,7 +102,7 @@ describe UsersController do end end - context "when dummy user nickname given" do + context "when dummy user username given" do let(:user) { create(:dummy_user) } it "responds with 404" do @@ -110,8 +110,8 @@ describe UsersController do end end - context "when fictional nickname given" do - let(:nickname) { 'nononono-no' } + context "when fictional username given" do + let(:username) { 'nononono-no' } it "responds with 404" do expect(subject).to be_not_found diff --git a/spec/decorators/helpers/avatar_helper_spec.rb b/spec/decorators/helpers/avatar_helper_spec.rb index 1b3a19f..50f41dc 100644 --- a/spec/decorators/helpers/avatar_helper_spec.rb +++ b/spec/decorators/helpers/avatar_helper_spec.rb @@ -8,7 +8,7 @@ describe AvatarHelper do let(:decorator) { double('decorator', h: h, model: model). extend(described_class) } - let(:model) { double('model', nickname: 'satyr', avatar_url: avatar_url, + let(:model) { double('model', username: 'satyr', avatar_url: avatar_url, email: email) } describe '#avatar_image_tag' do diff --git a/spec/decorators/user_decorator_spec.rb b/spec/decorators/user_decorator_spec.rb index abac7b1..45482e4 100644 --- a/spec/decorators/user_decorator_spec.rb +++ b/spec/decorators/user_decorator_spec.rb @@ -7,7 +7,7 @@ describe UserDecorator do describe '#link' do subject { decorator.link } - let(:user) { User.new(nickname: 'satyr') } + let(:user) { User.new(username: 'satyr') } before do allow(h).to receive(:profile_path).with(user) { '/path' } @@ -18,7 +18,7 @@ describe UserDecorator do user.dummy = false end - it "is a nickname link to user's profile" do + it "is a username link to user's profile" do expect(subject).to eq('satyr') end end @@ -28,7 +28,7 @@ describe UserDecorator do user.dummy = true end - it "is user's nickname" do + it "is user's username" do expect(subject).to eq('satyr') end end @@ -37,7 +37,7 @@ describe UserDecorator do describe '#img_link' do subject { decorator.img_link } - let(:user) { User.new(nickname: 'satyr') } + let(:user) { User.new(username: 'satyr') } before do allow(h).to receive(:profile_path).with(user) { '/path' } @@ -68,7 +68,7 @@ describe UserDecorator do describe '#full_name' do subject { decorator.full_name } - let(:user) { double('user', nickname: 'sickill', name: name) } + let(:user) { double('user', username: 'sickill', name: name) } context "when full name is present" do let(:name) { 'Marcin Kulik' } diff --git a/spec/factories/users.rb b/spec/factories/users.rb index 89c91a7..d1205cd 100644 --- a/spec/factories/users.rb +++ b/spec/factories/users.rb @@ -2,12 +2,12 @@ FactoryGirl.define do sequence(:uid) { |n| n } - sequence(:nickname) { |n| "user#{n}" } + sequence(:username) { |n| "user#{n}" } factory :user do provider "twitter" uid - sequence(:nickname) { generate(:nickname) } + sequence(:username) { generate(:username) } sequence(:email) { |n| "foo#{n}@bar.com" } name nil avatar_url nil @@ -15,6 +15,6 @@ FactoryGirl.define do factory :dummy_user, class: User do dummy true - sequence(:nickname) { generate(:nickname) } + sequence(:username) { generate(:username) } end end diff --git a/spec/features/asciicast_spec.rb b/spec/features/asciicast_spec.rb index b14c195..3428047 100644 --- a/spec/features/asciicast_spec.rb +++ b/spec/features/asciicast_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' feature "Asciicast page", :js => true do - let!(:user) { create(:user, nickname: 'aaron') } + let!(:user) { create(:user, username: 'aaron') } let!(:asciicast) { create(:asciicast, user: user, title: 'the title') } let!(:other_asciicast) { create(:asciicast, user: user) } diff --git a/spec/features/user_spec.rb b/spec/features/user_spec.rb index 5b6ab20..895cd54 100644 --- a/spec/features/user_spec.rb +++ b/spec/features/user_spec.rb @@ -8,7 +8,7 @@ feature "User's profile" do scenario 'Visiting' do visit profile_path(user) - expect(page).to have_content(/1 asciicast by #{user.nickname}/i) + expect(page).to have_content(/1 asciicast by #{user.username}/i) expect(page).to have_link('Tricks!') expect(page).to have_selector('.asciicast-list .play-button') end diff --git a/spec/models/asciicast_spec.rb b/spec/models/asciicast_spec.rb index f1cd065..b88276e 100644 --- a/spec/models/asciicast_spec.rb +++ b/spec/models/asciicast_spec.rb @@ -72,8 +72,8 @@ describe Asciicast do expect(asciicast.user).to be_dummy end - it 'is a user with "anonymous" as nickname' do - expect(asciicast.user.nickname).to eq('anonymous') + it 'is a user with "anonymous" as username' do + expect(asciicast.user.username).to eq('anonymous') end end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 60a2b28..f0c8e56 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -18,17 +18,17 @@ describe User do let!(:existing_user) { create(:user) } let(:user) { described_class.new } - it { should validate_presence_of(:nickname) } + it { should validate_presence_of(:username) } context "when user is dummy" do before do user.dummy = true end - it "doesn't check for nickname uniqueness" do - user.nickname = existing_user.nickname + it "doesn't check for username uniqueness" do + user.username = existing_user.username user.valid? - expect(user.errors[:nickname]).to be_empty + expect(user.errors[:username]).to be_empty end it "doesn't check for email presence" do @@ -49,10 +49,10 @@ describe User do user.dummy = false end - it "checks for nickname uniqueness" do - user.nickname = existing_user.nickname + it "checks for username uniqueness" do + user.username = existing_user.username user.valid? - expect(user.errors[:nickname]).to_not be_empty + expect(user.errors[:username]).to_not be_empty end it "checks for email presence" do @@ -132,7 +132,7 @@ describe User do end it "assigns given username to the user" do - expect(subject.nickname).to eq(username) + expect(subject.username).to eq(username) end it "assigns given api token to the user" do @@ -147,7 +147,7 @@ describe User do end it "assigns 'anonymous' as username to the user" do - expect(subject.nickname).to eq('anonymous') + expect(subject.username).to eq('anonymous') end end @@ -159,7 +159,7 @@ describe User do end it "assigns 'anonymous' as username to the user" do - expect(subject.nickname).to eq('anonymous') + expect(subject.username).to eq('anonymous') end end end @@ -185,11 +185,11 @@ describe User do end end - describe '#nickname=' do + describe '#username=' do it 'strips the whitespace' do - user = described_class.new(nickname: ' sickill ') + user = described_class.new(username: ' sickill ') - expect(user.nickname).to eq('sickill') + expect(user.username).to eq('sickill') end end diff --git a/spec/presenters/user_page_presenter_spec.rb b/spec/presenters/user_page_presenter_spec.rb index 396aa71..93e6cbb 100644 --- a/spec/presenters/user_page_presenter_spec.rb +++ b/spec/presenters/user_page_presenter_spec.rb @@ -45,7 +45,7 @@ describe UserPagePresenter do end let(:presenter) { described_class.new(user, current_user, page, per_page) } - let(:user) { double('user', nickname: 'cartman') } + let(:user) { double('user', username: 'cartman') } let(:current_user) { double('current_user') } let(:page) { 2 } let(:per_page) { 5 } @@ -112,8 +112,8 @@ describe UserPagePresenter do it { should eq('3 asciicasts by cartman') } end - describe '#user_nickname' do - subject { presenter.user_nickname } + describe '#user_username' do + subject { presenter.user_username } it { should eq('cartman') } end diff --git a/spec/support/feature_helpers.rb b/spec/support/feature_helpers.rb index 1a6da5c..77bda84 100644 --- a/spec/support/feature_helpers.rb +++ b/spec/support/feature_helpers.rb @@ -22,7 +22,7 @@ module Asciinema OmniAuth.config.mock_auth[provider] = OmniAuth::AuthHash.new({ :provider => provider.to_s, :uid => '123456', - :info => { :nickname => opts[:nickname] }, + :info => { :username => opts[:username] }, :extra => { :raw_info => { :avatar_url =>