Skip to content

Commit 22e923f

Browse files
committedOct 13, 2015
Add achievement model
1 parent 0ef6eac commit 22e923f

7 files changed

+78
-1
lines changed
 

‎app/models/achievement.rb

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class Achievement < ActiveRecord::Base
2+
validates :title, presence: true, uniqueness: true
3+
validates :description, presence: true, uniqueness: true
4+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class CreateAchievements < ActiveRecord::Migration
2+
def change
3+
create_table :achievements do |t|
4+
5+
t.timestamps null: false
6+
end
7+
end
8+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class AddTitleToAchievements < ActiveRecord::Migration
2+
def change
3+
add_column :achievements, :title, :string
4+
end
5+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class AddDescriptionToAchievements < ActiveRecord::Migration
2+
def change
3+
add_column :achievements, :description, :string
4+
end
5+
end

‎db/schema.rb

+7-1
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,15 @@
1111
#
1212
# It's strongly recommended that you check this file into your version control system.
1313

14-
ActiveRecord::Schema.define(version: 0) do
14+
ActiveRecord::Schema.define(version: 20151005154736) do
1515

1616
# These are extensions that must be enabled in order to support this database
1717
enable_extension "plpgsql"
1818

19+
create_table "achievements", force: :cascade do |t|
20+
t.datetime "created_at", null: false
21+
t.datetime "updated_at", null: false
22+
t.string "title"
23+
t.string "description"
24+
end
1925
end

‎spec/factories/achievements.rb

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
FactoryGirl.define do
2+
factory :achievement do
3+
title { Faker::Name.title }
4+
description { Faker::Lorem.sentence(5) }
5+
end
6+
end

‎spec/models/achievement_spec.rb

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
require 'rails_helper'
2+
3+
RSpec.describe Achievement, type: :model do
4+
5+
it { should respond_to(:id) }
6+
it { should respond_to(:title) }
7+
it { should respond_to(:description) }
8+
it { should respond_to(:created_at) }
9+
it { should respond_to(:updated_at) }
10+
11+
describe "validation" do
12+
13+
let(:achievement) { build(:achievement) }
14+
15+
it "accepts valid attributes" do
16+
expect(achievement).to be_valid
17+
end
18+
19+
it "rejects blank title" do
20+
achievement.title = " "
21+
expect(achievement).to_not be_valid
22+
end
23+
24+
it "rejects blank description" do
25+
achievement.description = " "
26+
expect(achievement).to_not be_valid
27+
end
28+
29+
it "rejects duplicate title" do
30+
achievement.save
31+
duplicate_achievement = build(:achievement)
32+
duplicate_achievement.title = achievement.title
33+
expect(duplicate_achievement).to_not be_valid
34+
end
35+
36+
it "rejects duplicate description" do
37+
achievement.save
38+
duplicate_achievement = build(:achievement)
39+
duplicate_achievement.description = achievement.description
40+
expect(duplicate_achievement).to_not be_valid
41+
end
42+
end
43+
end

0 commit comments

Comments
 (0)
Please sign in to comment.