diff --git a/app/models/bubble/draftable.rb b/app/models/bubble/draftable.rb index 1f2879eeb..0a42856e6 100644 --- a/app/models/bubble/draftable.rb +++ b/app/models/bubble/draftable.rb @@ -2,9 +2,9 @@ module Bubble::Draftable extend ActiveSupport::Concern included do - enum :status, %w[ drafted published ].index_by(&:itself) + enum :status, %w[ creating drafted published ].index_by(&:itself) - scope :published_or_drafted_by, ->(user) { where(status: :published).or(where(creator: user)) } + scope :published_or_drafted_by, ->(user) { where(status: :published).or(where(status: :drafted, creator: user)) } end def publish diff --git a/db/migrate/20250206141302_change_bubbles_status_default_to_creating.rb b/db/migrate/20250206141302_change_bubbles_status_default_to_creating.rb new file mode 100644 index 000000000..004fe75d0 --- /dev/null +++ b/db/migrate/20250206141302_change_bubbles_status_default_to_creating.rb @@ -0,0 +1,5 @@ +class ChangeBubblesStatusDefaultToCreating < ActiveRecord::Migration[8.1] + def change + change_column_default :bubbles, :status, :creating + end +end diff --git a/db/schema.rb b/db/schema.rb index e81962738..d264baed9 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[8.1].define(version: 2025_02_04_211520) do +ActiveRecord::Schema[8.1].define(version: 2025_02_06_141302) do create_table "accesses", force: :cascade do |t| t.integer "bucket_id", null: false t.integer "user_id", null: false @@ -106,7 +106,7 @@ ActiveRecord::Schema[8.1].define(version: 2025_02_04_211520) do t.integer "stage_id" t.integer "comments_count", default: 0, null: false t.integer "activity_score", default: 0, null: false - t.text "status", default: "drafted", null: false + t.text "status", default: "creating", null: false t.index ["bucket_id"], name: "index_bubbles_on_bucket_id" t.index ["stage_id"], name: "index_bubbles_on_stage_id" end diff --git a/test/models/bubble/draftable_test.rb b/test/models/bubble/draftable_test.rb index 5a13f1f66..648da92d5 100644 --- a/test/models/bubble/draftable_test.rb +++ b/test/models/bubble/draftable_test.rb @@ -1,19 +1,26 @@ require "test_helper" class Bubble::DraftableTest < ActiveSupport::TestCase - test "bubbles are only visible to the creator by default" do - bubble = buckets(:writebook).bubbles.create! creator: users(:kevin), title: "Drafted Bubble" + test "bubbles start out in a `creating` state" do + bubble = buckets(:writebook).bubbles.create! creator: users(:kevin), title: "Newly created bubble" + + assert bubble.creating? + assert_not_includes Bubble.published_or_drafted_by(users(:kevin)), bubble + assert_not_includes Bubble.published_or_drafted_by(users(:jz)), bubble + end + + test "bubbles are only visible to the creator when drafted" do + bubble = buckets(:writebook).bubbles.create! creator: users(:kevin), title: "Drafted Bubble" + bubble.drafted! - assert bubble.drafted? assert_includes Bubble.published_or_drafted_by(users(:kevin)), bubble assert_not_includes Bubble.published_or_drafted_by(users(:jz)), bubble end test "bubbles are visible to everyone when published" do - bubble = buckets(:writebook).bubbles.create! creator: users(:kevin), title: "Drafted Bubble" + bubble = buckets(:writebook).bubbles.create! creator: users(:kevin), title: "Published Bubble" bubble.published! - assert bubble.published? assert_includes Bubble.published_or_drafted_by(users(:kevin)), bubble assert_includes Bubble.published_or_drafted_by(users(:jz)), bubble end