about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAkihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>2018-03-24 20:51:28 +0900
committerEugen Rochko <eugen@zeonfederated.com>2018-03-24 12:51:28 +0100
commitb2a4ffd3a91abc5030baf2ede97c0867924d8fbc (patch)
tree6755edc959aa310dd5e9e388e72eb6763f2ce3e6
parentfa310695fa0b5fe76739232dd6acee81da6cd401 (diff)
Change columns in notifications nonnullable (#6764)
-rw-r--r--app/models/notification.rb8
-rw-r--r--db/migrate/20180310000000_change_columns_in_notifications_nonnullable.rb8
-rw-r--r--db/schema.rb10
-rw-r--r--spec/fabricators/notification_fabricator.rb4
-rw-r--r--spec/models/notification_spec.rb10
5 files changed, 23 insertions, 17 deletions
diff --git a/app/models/notification.rb b/app/models/notification.rb
index 7f8dae5ec..be9964087 100644
--- 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
new file mode 100644
index 000000000..05ffd0501
--- /dev/null
+++ 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
index c52a6f0d4..18c61dbe0 100644
--- 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
index b92af0683..638844e0f 100644
--- 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
index 8444c8f63..c781f2a29 100644
--- 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