commit: b2a4ffd3a91abc5030baf2ede97c0867924d8fbc
parent: fa310695fa0b5fe76739232dd6acee81da6cd401
Author: Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Date: Sat, 24 Mar 2018 20:51:28 +0900
Change columns in notifications nonnullable (#6764)
Diffstat:
5 files changed, 23 insertions(+), 17 deletions(-)
diff --git a/app/models/notification.rb b/app/models/notification.rb
@@ -4,12 +4,12 @@
# Table name: notifications
#
# id :integer not null, primary key
-# activity_id :integer
-# activity_type :string
+# activity_id :integer not null
+# activity_type :string not null
# created_at :datetime not null
# updated_at :datetime not null
-# account_id :integer
-# from_account_id :integer
+# account_id :integer not null
+# from_account_id :integer not null
#
class Notification < ApplicationRecord
diff --git a/db/migrate/20180310000000_change_columns_in_notifications_nonnullable.rb b/db/migrate/20180310000000_change_columns_in_notifications_nonnullable.rb
@@ -0,0 +1,8 @@
+class ChangeColumnsInNotificationsNonnullable < ActiveRecord::Migration[5.1]
+ def change
+ change_column_null :notifications, :activity_id, false
+ change_column_null :notifications, :activity_type, false
+ change_column_null :notifications, :account_id, false
+ change_column_null :notifications, :from_account_id, false
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20180304013859) do
+ActiveRecord::Schema.define(version: 20180310000000) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -274,12 +274,12 @@ ActiveRecord::Schema.define(version: 20180304013859) do
end
create_table "notifications", force: :cascade do |t|
- t.bigint "activity_id"
- t.string "activity_type"
+ t.bigint "activity_id", null: false
+ t.string "activity_type", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
- t.bigint "account_id"
- t.bigint "from_account_id"
+ t.bigint "account_id", null: false
+ t.bigint "from_account_id", null: false
t.index ["account_id", "activity_id", "activity_type"], name: "account_activity", unique: true
t.index ["account_id", "id"], name: "index_notifications_on_account_id_and_id", order: { id: :desc }
t.index ["activity_id", "activity_type"], name: "index_notifications_on_activity_id_and_activity_type"
diff --git a/spec/fabricators/notification_fabricator.rb b/spec/fabricators/notification_fabricator.rb
@@ -1,4 +1,4 @@
Fabricator(:notification) do
- activity_id 1
- activity_type 'Favourite'
+ activity fabricator: [:mention, :status, :follow, :follow_request, :favourite].sample
+ account
end
diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb
@@ -6,14 +6,13 @@ RSpec.describe Notification, type: :model do
end
describe '#target_status' do
- let(:notification) { Fabricate(:notification, activity_type: type, activity: activity) }
+ let(:notification) { Fabricate(:notification, activity: activity) }
let(:status) { Fabricate(:status) }
let(:reblog) { Fabricate(:status, reblog: status) }
let(:favourite) { Fabricate(:favourite, status: status) }
let(:mention) { Fabricate(:mention, status: status) }
- context 'type is :reblog' do
- let(:type) { :reblog }
+ context 'activity is reblog' do
let(:activity) { reblog }
it 'returns status' do
@@ -21,7 +20,7 @@ RSpec.describe Notification, type: :model do
end
end
- context 'type is :favourite' do
+ context 'activity is favourite' do
let(:type) { :favourite }
let(:activity) { favourite }
@@ -30,8 +29,7 @@ RSpec.describe Notification, type: :model do
end
end
- context 'type is :mention' do
- let(:type) { :mention }
+ context 'activity is mention' do
let(:activity) { mention }
it 'returns status' do