Skip to content

Commit cb1984e

Browse files
author
Ryan Bigg
committed
Section 3.4.5: Add validation to ensure names are specified when creating projects
1 parent fba1ad9 commit cb1984e

File tree

4 files changed

+28
-5
lines changed

4 files changed

+28
-5
lines changed

ticketee/app/controllers/projects_controller.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ def create
1313
flash[:notice] = "Project has been created."
1414
redirect_to @project
1515
else
16-
# nothing, yet
16+
flash[:alert] = "Project has not been created."
17+
render "new"
1718
end
1819
end
1920

ticketee/app/models/project.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
class Project < ActiveRecord::Base
2+
validates :name, presence: true
23
end

ticketee/app/views/projects/new.html.erb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
<h2>New Project</h2>
22
<%= form_for(@project) do |f| %>
3+
<% if @project.errors.any? %>
4+
<div id="error_explanation">
5+
<h2><%= pluralize(@project.errors.count, "error") %>
6+
prohibited this project from being saved:</h2>
7+
8+
<ul>
9+
<% @project.errors.full_messages.each do |msg| %>
10+
<li><%= msg %></li>
11+
<% end %>
12+
</ul>
13+
</div>
14+
<% end %>
315
<p>
416
<%= f.label :name %><br>
517
<%= f.text_field :name %>
Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,31 @@
11
require 'rails_helper'
22

33
feature 'Creating Projects' do
4-
scenario 'can create a project' do
4+
before do
55
visit '/'
66

77
click_link 'New Project'
8+
end
89

10+
scenario 'can create a project' do
911
fill_in 'Name', with: 'Sublime Text 3'
10-
fill_in 'Description', with: 'A text-editor for everyone'
12+
fill_in 'Description', with: 'A text-editor for OS X'
1113
click_button 'Create Project'
1214

1315
expect(page).to have_content('Project has been created.')
1416

15-
project = Project.where(name: "Sublime Text 3").first
17+
project = Project.where(name: 'Sublime Text 3').first
1618

1719
expect(page.current_url).to eql(project_url(project))
1820

19-
title = "Sublime Text 3 - Projects - Ticketee"
21+
title = 'Sublime Text 3 - Projects - Ticketee'
2022
expect(page).to have_title(title)
2123
end
24+
25+
scenario "can not create a project without a name" do
26+
click_button 'Create Project'
27+
28+
expect(page).to have_content("Project has not been created.")
29+
expect(page).to have_content("Name can't be blank")
30+
end
2231
end

0 commit comments

Comments
 (0)