From a1f512e49e66fd53b972b8b3cc87543dc95eac8c Mon Sep 17 00:00:00 2001 From: Michael Kohl Date: Fri, 15 Oct 2021 20:31:08 +0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=82=E2=9C=82=E2=9C=82=20Remove=20events?= =?UTF-8?q?=20(#15062)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove events * Fix schema * Fix specs * More removal --- app/controllers/admin/events_controller.rb | 56 ---------- app/controllers/events_controller.rb | 15 --- app/models/event.rb | 49 --------- app/services/edge_cache/bust_events.rb | 9 -- app/uploaders/cover_image_uploader.rb | 2 - app/views/admin/events/_event_form.html.erb | 58 ---------- app/views/admin/events/edit.html.erb | 4 - app/views/admin/events/index.html.erb | 38 ------- app/views/admin/events/new.html.erb | 4 - app/views/events/_event.html.erb | 100 ------------------ app/views/events/index.html.erb | 42 -------- app/views/events/show.html.erb | 77 -------------- app/workers/events/bust_cache_worker.rb | 9 -- config/routes.rb | 3 - config/routes/admin.rb | 1 - db/migrate/20211013060449_drop_events.rb | 22 ++++ db/schema.rb | 21 +--- spec/factories/events.rb | 9 -- spec/models/event_spec.rb | 33 ------ spec/requests/admin/events_spec.rb | 52 --------- spec/requests/events_spec.rb | 33 ------ spec/services/edge_cache/bust_events_spec.rb | 26 ----- .../admin/admin_creates_new_event_spec.rb | 38 ------- spec/uploaders/cover_image_uploader_spec.rb | 63 ----------- spec/workers/events/bust_cache_worker_spec.rb | 13 --- 25 files changed, 23 insertions(+), 754 deletions(-) delete mode 100644 app/controllers/admin/events_controller.rb delete mode 100644 app/controllers/events_controller.rb delete mode 100644 app/models/event.rb delete mode 100644 app/services/edge_cache/bust_events.rb delete mode 100644 app/uploaders/cover_image_uploader.rb delete mode 100644 app/views/admin/events/_event_form.html.erb delete mode 100644 app/views/admin/events/edit.html.erb delete mode 100644 app/views/admin/events/index.html.erb delete mode 100644 app/views/admin/events/new.html.erb delete mode 100644 app/views/events/_event.html.erb delete mode 100644 app/views/events/index.html.erb delete mode 100644 app/views/events/show.html.erb delete mode 100644 app/workers/events/bust_cache_worker.rb create mode 100644 db/migrate/20211013060449_drop_events.rb delete mode 100644 spec/factories/events.rb delete mode 100644 spec/models/event_spec.rb delete mode 100644 spec/requests/admin/events_spec.rb delete mode 100644 spec/requests/events_spec.rb delete mode 100644 spec/services/edge_cache/bust_events_spec.rb delete mode 100644 spec/system/admin/admin_creates_new_event_spec.rb delete mode 100644 spec/uploaders/cover_image_uploader_spec.rb delete mode 100644 spec/workers/events/bust_cache_worker_spec.rb diff --git a/app/controllers/admin/events_controller.rb b/app/controllers/admin/events_controller.rb deleted file mode 100644 index 893c12973..000000000 --- a/app/controllers/admin/events_controller.rb +++ /dev/null @@ -1,56 +0,0 @@ -module Admin - class EventsController < ApplicationController - layout "admin" - include ApplicationHelper - - EVENTS_ALLOWED_PARAMS = %i[ - title category event_date starts_at ends_at - location_name cover_image location_url description_markdown published - host_name profile_image live_now - ].freeze - - def index - @events = Event.order(starts_at: :desc).page(params[:page]).per(20) - end - - def new - @event = Event.new( - location_name: "#{URL.domain}/live", - location_url: app_url, - description_markdown: "*Description* *Pre-requisites:* *Bio*", - ) - end - - def edit - @event = Event.find(params[:id]) - end - - def create - @event = Event.new(event_params) - if @event.save - flash[:success] = "Successfully created event: #{@event.title}" - redirect_to admin_events_path - else - flash[:danger] = @event.errors.full_messages - render :new - end - end - - def update - @event = Event.find(params[:id]) - if @event.update(event_params) - flash[:success] = "#{@event.title} was successfully updated" - redirect_to admin_events_path - else - flash[:danger] = @event.errors.full_messages - render :edit - end - end - - private - - def event_params - params.require(:event).permit(EVENTS_ALLOWED_PARAMS) - end - end -end diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb deleted file mode 100644 index adad44044..000000000 --- a/app/controllers/events_controller.rb +++ /dev/null @@ -1,15 +0,0 @@ -class EventsController < ApplicationController - before_action :set_cache_control_headers, only: [:index] - # No authorization required for entirely public controller - - def index - @events = Event.in_the_future_and_published.sort_by(&:starts_at) - @past_events = Event.in_the_past_and_published.sort_by(&:starts_at) - set_surrogate_key_header "events_index_page" - @past_events.reverse! - end - - def show - @event = Event.find_by!(slug: params[:id]) - end -end diff --git a/app/models/event.rb b/app/models/event.rb deleted file mode 100644 index 00cdd37c3..000000000 --- a/app/models/event.rb +++ /dev/null @@ -1,49 +0,0 @@ -class Event < ApplicationRecord - mount_uploader :cover_image, CoverImageUploader - mount_uploader :profile_image, ProfileImageUploader - - validates :title, length: { maximum: 90 } - validates :location_url, url: { allow_blank: true, schemes: %w[https http] } - validate :end_time_after_start - validates :slug, presence: { if: :published? }, format: /\A[0-9a-z-]*\z/ - before_validation :evaluate_markdown - before_validation :create_slug - after_save :bust_cache - - scope :in_the_future_and_published, lambda { - where("starts_at > ?", Time.current) - .where(published: true) - } - - scope :in_the_past_and_published, lambda { - where("starts_at < ?", Time.current) - .where(published: true) - } - - private - - def evaluate_markdown - self.description_html = MarkdownProcessor::Parser.new(description_markdown).evaluate_markdown - end - - def end_time_after_start - if ends_at.nil? || starts_at.nil? - errors.add(:starts_at, "and ends_at must not be nil") - elsif ends_at < starts_at - errors.add(:ends_at, "must be after start date") - end - end - - def create_slug - self.slug = title_to_slug if slug.blank? && title.present? && published - end - - def title_to_slug - downcase = "#{id}-#{category}-#{title}" - "#{downcase.parameterize}-#{starts_at.strftime('%m-%d-%Y')}" - end - - def bust_cache - Events::BustCacheWorker.perform_async - end -end diff --git a/app/services/edge_cache/bust_events.rb b/app/services/edge_cache/bust_events.rb deleted file mode 100644 index 10e7322e7..000000000 --- a/app/services/edge_cache/bust_events.rb +++ /dev/null @@ -1,9 +0,0 @@ -module EdgeCache - class BustEvents - def self.call - cache_bust = EdgeCache::Bust.new - cache_bust.call("/events") - cache_bust.call("/events?i=i") - end - end -end diff --git a/app/uploaders/cover_image_uploader.rb b/app/uploaders/cover_image_uploader.rb deleted file mode 100644 index a6b8b07fd..000000000 --- a/app/uploaders/cover_image_uploader.rb +++ /dev/null @@ -1,2 +0,0 @@ -class CoverImageUploader < BaseUploader -end diff --git a/app/views/admin/events/_event_form.html.erb b/app/views/admin/events/_event_form.html.erb deleted file mode 100644 index b1a9e234f..000000000 --- a/app/views/admin/events/_event_form.html.erb +++ /dev/null @@ -1,58 +0,0 @@ -
- <%= form_for [:admin, @event] do |f| %> -
- <%= f.label :cover_image, class: "crayons-field__label" %> - <%= f.file_field :cover_image, class: "crayons-field" %> -
-
- <%= f.label :profile_image, class: "crayons-field__label" %> (for live notification): - <%= f.file_field :profile_image, class: "crayons-field" %> - event profile image -
-
- <%= f.label :title, class: "crayons-field__label" %> - <%= f.text_field :title, maxlength: 90, size: 40, required: true, class: "crayons-textfield" %> -
-
- <%= f.label :host_name, class: "crayons-field__label" %> - <%= f.text_field :host_name, size: 40, required: true, class: "crayons-textfield" %> -
-
- <%= f.label :category, class: "crayons-field__label" %> - <%= f.select :category, ["AMA", "Workshop", "Talk", "Town Hall"], required: true, class: "crayons-select" %> -
-
- <%= f.label :starts_at, class: "crayons-field__label" %> -
- <%= f.datetime_select :starts_at, required: true, include_blank: true, start_year: Time.current.year, end_year: Time.current.year + 2, class: "crayons-select" %> UTC Time Only (4 hours ahead of eastern time) -
-
-
- <%= f.label :ends_at, class: "crayons-field__label" %> -
- <%= f.datetime_select :ends_at, required: true, include_blank: true, start_year: Time.current.year, end_year: Time.current.year + 2, class: "crayons-select" %> UTC Time Only (4 hours ahead of eastern time) -
-
-
- <%= f.label :location_name, class: "crayons-field__label" %> - <%= f.text_field :location_name, required: true, class: "crayons-textfield" %> -
-
- <%= f.label :location_url, class: "crayons-field__label" %> - <%= f.text_field :location_url, required: true, class: "crayons-textfield" %> -
-
- <%= f.label :description_markdown, class: "crayons-field__label" %> - <%= f.text_area :description_markdown, size: "45x10", required: true, class: "crayons-textfield" %> -
-
- <%= f.label :published, class: "crayons-field__label" %> - <%= f.check_box :published, class: "crayons-checkbox" %> -
-
- <%= f.label :live_now, class: "crayons-field__label" %> - <%= f.check_box :live_now, class: "crayons-checkbox" %> -
- <%= f.submit class: "crayons-btn" %> - <% end %> -
diff --git a/app/views/admin/events/edit.html.erb b/app/views/admin/events/edit.html.erb deleted file mode 100644 index b4b11e963..000000000 --- a/app/views/admin/events/edit.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -
-

Edit Event: <%= @event.title.to_s %>

- <%= render "event_form" %> -
diff --git a/app/views/admin/events/index.html.erb b/app/views/admin/events/index.html.erb deleted file mode 100644 index 1dcc4d850..000000000 --- a/app/views/admin/events/index.html.erb +++ /dev/null @@ -1,38 +0,0 @@ -
-

Events

- <%= link_to "New Event", new_admin_event_path, class: "ml-auto crayons-btn crayons-btn--s" %> -
-
- -
-

Upcoming Events

- <% @events.each do |event| %> - <% if event.starts_at.future? %> -
- <%= event.title %> - <% if event.cover_image_url.present? %> - event cover image - <% end %> - <%= link_to "Edit", edit_admin_event_path(event.id), class: "ml-auto crayons-btn crayons-btn--s crayons-btn--secondary" %> -
-
- <% end %> - <% end %> -
-
- -
-

Past Events

- <% @events.each do |event| %> - <% if !event.starts_at.future? %> -
- <%= event.title %> - <% if event.cover_image_url.present? %> - event cover image - <% end %> - <%= link_to "Edit", edit_admin_event_path(event.id), class: "ml-auto crayons-btn crayons-btn--s crayons-btn--secondary" %> -
-
- <% end %> - <% end %> -
diff --git a/app/views/admin/events/new.html.erb b/app/views/admin/events/new.html.erb deleted file mode 100644 index e05acfd43..000000000 --- a/app/views/admin/events/new.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -
-

Create New Event

- <%= render "event_form" %> -
diff --git a/app/views/events/_event.html.erb b/app/views/events/_event.html.erb deleted file mode 100644 index 99ddc022d..000000000 --- a/app/views/events/_event.html.erb +++ /dev/null @@ -1,100 +0,0 @@ - - -
-
- event image -
-
-

<%= event.category %>: <%= event.title %>

-

- Date: ">  -
- Time: ">  - - ">  -
- Location: <%= event.location_name %> -

-
- Add to Calendar - <%= event.starts_at.strftime("%d %B %Y %H:%M UTC") %> - <%= event.ends_at.strftime("%d %B %Y %H:%M UTC") %> - America/New_York - <%= event.title %> - <%= community_name %> - <%= ForemInstance.email %> - dev-event - <%= event.location_url %> - 15 - - <%= event.description_html&.html_safe %> - ------ - Link to attend - <%= event.location_url %> - -
-
-
- <%= event.description_html&.html_safe %> -
-
- - diff --git a/app/views/events/index.html.erb b/app/views/events/index.html.erb deleted file mode 100644 index 1e78b3e7c..000000000 --- a/app/views/events/index.html.erb +++ /dev/null @@ -1,42 +0,0 @@ -<%= content_for :page_meta do %> - <% title("#{community_name} EVENTS") %> - " /> - -<%= meta_keywords_default %> - - - " /> - - - - - - "> - - -<% end %> - - - -
-
-

- Upcoming Events -

- - <%= render partial: "event", collection: @events, as: :event %> - - <% if @events.none? %> -
- There are no upcoming events currently scheduled -
- <% end %> - - <% if @past_events.any? %> -

- Past Events -

- <%= render partial: "event", collection: @past_events, as: :event %> - <% end %> -
-
diff --git a/app/views/events/show.html.erb b/app/views/events/show.html.erb deleted file mode 100644 index 2871a51ca..000000000 --- a/app/views/events/show.html.erb +++ /dev/null @@ -1,77 +0,0 @@ -<%= content_for :page_meta do %> - <% title("#{@event.title} - #{community_name}") %> - " /> - - <%= meta_keywords_default %> - - - " /> - - <% if @event.cover_image.present? %> - - <% else %> - - <% end %> - - - - - "> - - - <% if @event.cover_image.present? %> - - <% else %> - - <% end %> -<% end %> - -
- - - - - -
-
-
-
-

<%= @event.category %>: <%= @event.title %>

- <%= render "event", event: @event %> -

- All EVENTS

-
-
diff --git a/app/workers/events/bust_cache_worker.rb b/app/workers/events/bust_cache_worker.rb deleted file mode 100644 index cb1275080..000000000 --- a/app/workers/events/bust_cache_worker.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Events - class BustCacheWorker < BustCacheBaseWorker - sidekiq_options queue: :low_priority - - def perform - EdgeCache::BustEvents.call - end - end -end diff --git a/config/routes.rb b/config/routes.rb index bedb33181..ea548e207 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -166,7 +166,6 @@ Rails.application.routes.draw do post "/update_or_create", to: "github_repos#update_or_create" end end - resources :events, only: %i[index show] resources :videos, only: %i[index create new] resources :video_states, only: [:create] resources :twilio_tokens, only: [:show] @@ -313,8 +312,6 @@ Rails.application.routes.draw do get "/badge", to: "pages#badge", as: :pages_badge get "/💸", to: redirect("t/hiring") get "/survey", to: redirect("https://dev.to/ben/final-thoughts-on-the-state-of-the-web-survey-44nn") - get "/events", to: "events#index" - get "/workshops", to: redirect("events") get "/sponsors", to: "pages#sponsors" get "/search", to: "stories/articles_search#index" post "articles/preview", to: "articles#preview" diff --git a/config/routes/admin.rb b/config/routes/admin.rb index cf062f52f..6ec0b1a9e 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -149,7 +149,6 @@ namespace :admin do end end resources :consumer_apps, only: %i[index new create edit update destroy] - resources :events, only: %i[index create update new edit] resources :listings, only: %i[index edit update destroy] resources :listing_categories, only: %i[index edit update new create destroy], path: "listings/categories" diff --git a/db/migrate/20211013060449_drop_events.rb b/db/migrate/20211013060449_drop_events.rb new file mode 100644 index 000000000..dff2dca53 --- /dev/null +++ b/db/migrate/20211013060449_drop_events.rb @@ -0,0 +1,22 @@ +class DropEvents < ActiveRecord::Migration[6.1] + def up + drop_table :events do |t| + t.string :category + t.string :cover_image + t.text :description_html + t.text :description_markdown + t.datetime :ends_at + t.string :host_name + t.boolean :live_now, default: false + t.string :location_name + t.string :location_url + t.string :profile_image + t.boolean :published + t.string :slug + t.datetime :starts_at + t.string :title + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index b6c022539..5aae5a2d5 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: 2021_10_08_170433) do +ActiveRecord::Schema.define(version: 2021_10_13_060449) do # These are extensions that must be enabled in order to support this database enable_extension "citext" @@ -496,25 +496,6 @@ ActiveRecord::Schema.define(version: 2021_10_08_170433) do t.index ["user_id"], name: "index_email_authorizations_on_user_id" end - create_table "events", force: :cascade do |t| - t.string "category" - t.string "cover_image" - t.datetime "created_at", null: false - t.text "description_html" - t.text "description_markdown" - t.datetime "ends_at" - t.string "host_name" - t.boolean "live_now", default: false - t.string "location_name" - t.string "location_url" - t.string "profile_image" - t.boolean "published" - t.string "slug" - t.datetime "starts_at" - t.string "title" - t.datetime "updated_at", null: false - end - create_table "feedback_messages", force: :cascade do |t| t.bigint "affected_id" t.string "category" diff --git a/spec/factories/events.rb b/spec/factories/events.rb deleted file mode 100644 index ff149492e..000000000 --- a/spec/factories/events.rb +++ /dev/null @@ -1,9 +0,0 @@ -FactoryBot.define do - factory :event do - title { Faker::Company.bs } - description_markdown { Faker::Hipster.paragraph(sentence_count: 2) } - starts_at { Time.current } - ends_at { 3660.seconds.from_now } - category { "AMA" } - end -end diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb deleted file mode 100644 index 8be1ff50b..000000000 --- a/spec/models/event_spec.rb +++ /dev/null @@ -1,33 +0,0 @@ -require "rails_helper" - -RSpec.describe Event, type: :model do - let(:event) { build(:event) } - - it "rejects title with over 90 characters" do - event.title = Faker::Lorem.characters(number: 100) - expect(event).not_to be_valid - end - - it "rejects invalid http url" do - event.location_url = "dev.to" - expect(event).not_to be_valid - end - - it "rejects ends times that are earlier than start times" do - event.ends_at = event.starts_at - 1.minute - expect(event).not_to be_valid - end - - it "creates slug for published events" do - event = build(:event, category: "ama", title: "yo", published: true) - event.validate! - expected_slug = "#{event.category}-#{event.title}-#{event.starts_at.strftime('%m-%d-%Y')}" - expect(event.slug).to eq(expected_slug) - end - - it "triggers cache busting on save" do - sidekiq_assert_enqueued_jobs(1, queue: "low_priority") do - event.save - end - end -end diff --git a/spec/requests/admin/events_spec.rb b/spec/requests/admin/events_spec.rb deleted file mode 100644 index ffca49c08..000000000 --- a/spec/requests/admin/events_spec.rb +++ /dev/null @@ -1,52 +0,0 @@ -require "rails_helper" - -RSpec.describe "/admin/apps/events", type: :request do - let(:event) { create(:event, title: "Hey") } - let(:admin) { create(:user, :super_admin) } - let(:params) do - { - event: { - title: "Hello, world!", - description_markdown: "This is an event", - starts_at: Time.current, - ends_at: 3660.seconds.from_now, - category: "Talk" - } - } - end - - describe "PUT admin/apps/events" do - before do - sign_in(admin) - end - - it "marks an event as not live now" do - event.update(live_now: true) - patch admin_event_path(event.id), params: { event: { live_now: "0" } } - expect(event.reload.live_now).to eq false - end - - it "marks an event as live now" do - patch admin_event_path(event.id), params: { event: { live_now: "1" } } - expect(event.reload.live_now).to eq true - end - - it "successfully updates the event title" do - expect do - patch admin_event_path(event.id), params: params - end.to change { event.reload.title }.to("Hello, world!") - end - end - - describe "POST /admin/apps/events" do - let(:post_resource) { post admin_events_path, params: params } - - before { sign_in admin } - - it "successfully creates an event" do - expect do - post_resource - end.to change { Event.all.count }.by(1) - end - end -end diff --git a/spec/requests/events_spec.rb b/spec/requests/events_spec.rb deleted file mode 100644 index a4342221f..000000000 --- a/spec/requests/events_spec.rb +++ /dev/null @@ -1,33 +0,0 @@ -require "rails_helper" - -RSpec.describe "Events", type: :request do - let(:event) { create(:event, published: true) } - - describe "GET events" do - it "returns index page" do - event - get "/events" - expect(response.body).to include("#{community_name} EVENTS") - expect(response.body).to include(event.title) - end - - it "does not include unpublished events" do - unpublished_event = create(:event, published: false) - get "/events" - expect(response.body).not_to include(unpublished_event.title) - end - end - - describe "GET events#show" do - it "returns event show page" do - get "/events/#{event.slug}" - expect(response.body).to include event.title - end - - it "renders not_found" do - expect do - get "/events/NotSlug-#{event.slug}" - end.to raise_error(ActiveRecord::RecordNotFound) - end - end -end diff --git a/spec/services/edge_cache/bust_events_spec.rb b/spec/services/edge_cache/bust_events_spec.rb deleted file mode 100644 index 0ad85e61e..000000000 --- a/spec/services/edge_cache/bust_events_spec.rb +++ /dev/null @@ -1,26 +0,0 @@ -require "rails_helper" - -RSpec.describe EdgeCache::BustEvents, type: :service do - let(:cache_bust) { instance_double(EdgeCache::Bust) } - let(:paths) do - [ - "/events", - "/events?i=i", - ] - end - - before do - allow(EdgeCache::Bust).to receive(:new).and_return(cache_bust) - paths.each do |path| - allow(cache_bust).to receive(:call).with(path).once - end - end - - it "busts the cache" do - described_class.call - - paths.each do |path| - expect(cache_bust).to have_received(:call).with(path).once - end - end -end diff --git a/spec/system/admin/admin_creates_new_event_spec.rb b/spec/system/admin/admin_creates_new_event_spec.rb deleted file mode 100644 index e4509d3c2..000000000 --- a/spec/system/admin/admin_creates_new_event_spec.rb +++ /dev/null @@ -1,38 +0,0 @@ -require "rails_helper" -require "date" - -RSpec.describe "Admin creates new event", type: :system do - let(:admin) { create(:user, :super_admin) } - - before do - sign_in admin - visit new_admin_event_path - end - - def select_date_and_time(year, month, date, hour, min, field_name) - select year, from: "event[#{field_name}(1i)]" - select month, from: "event[#{field_name}(2i)]" - select date, from: "event[#{field_name}(3i)]" - select hour, from: "event[#{field_name}(4i)]" - select min, from: "event[#{field_name}(5i)]" - end - - def create_and_publish_event - fill_in("Title", with: "Workshop Title") - select_date_and_time(Time.current.year.to_s, "December", "30", "15", "30", "starts_at") - select_date_and_time(Time.current.year.to_s, "December", "30", "16", "30", "ends_at") - check("event[published]") - click_button("Create Event") - end - - it "loads /admin/apps/events" do - expect(page).to have_content("New Event") - end - - it "loads published events on /events" do - create_and_publish_event - visit "/events" - - expect(page).to have_content("Workshop Title") - end -end diff --git a/spec/uploaders/cover_image_uploader_spec.rb b/spec/uploaders/cover_image_uploader_spec.rb deleted file mode 100644 index 24086525c..000000000 --- a/spec/uploaders/cover_image_uploader_spec.rb +++ /dev/null @@ -1,63 +0,0 @@ -require "rails_helper" -require "carrierwave/test/matchers" -require "exifr/jpeg" - -describe CoverImageUploader, type: :uploader do - include CarrierWave::Test::Matchers - - let(:image_jpg) { fixture_file_upload("800x600.jpg", "image/jpeg") } - let(:image_png) { fixture_file_upload("800x600.png", "image/png") } - let(:image_webp) { fixture_file_upload("800x600.webp", "image/webp") } - let(:image_with_gps) { fixture_file_upload("image_gps_data.jpg", "image/jpeg") } - - let(:event) { create(:event) } - - # we need a new uploader before each test, and since the uploader is not a model - # we can recreate it quickly in memory with `let!` - let!(:uploader) { described_class.new(event, :cover_image) } - - before do - described_class.include CarrierWave::MiniMagick # needed for processing - described_class.enable_processing = true - end - - after do - described_class.enable_processing = false - uploader.remove! - end - - it "stores files in the correct directory" do - expect(uploader.store_dir).to eq("uploads/event/cover_image/#{event.id}") - end - - describe "formats" do - it "permits a set of extensions" do - expect(uploader.extension_allowlist).to eq(%w[jpg jpeg jpe gif png ico bmp dng]) - end - - it "permits jpegs" do - uploader.store!(image_jpg) - expect(uploader).to be_format("jpeg") - end - - it "permits pngs" do - uploader.store!(image_png) - expect(uploader).to be_format("png") - end - - it "rejects unsupported formats like webp" do - expect { uploader.store!(image_webp) }.to raise_error(CarrierWave::IntegrityError) - end - end - - describe "exif removal" do - it "removes EXIF and GPS data on upload" do - expect(EXIFR::JPEG.new(image_with_gps.path).exif?).to be(true) - expect(EXIFR::JPEG.new(image_with_gps.path).gps.present?).to be(true) - event.cover_image = image_with_gps - event.save! - expect(EXIFR::JPEG.new(event.cover_image.path).exif?).to be(false) - expect(EXIFR::JPEG.new(event.cover_image.path).gps.present?).to be(false) - end - end -end diff --git a/spec/workers/events/bust_cache_worker_spec.rb b/spec/workers/events/bust_cache_worker_spec.rb deleted file mode 100644 index 2e1363dac..000000000 --- a/spec/workers/events/bust_cache_worker_spec.rb +++ /dev/null @@ -1,13 +0,0 @@ -require "rails_helper" - -RSpec.describe Events::BustCacheWorker do - include_examples "#enqueues_on_correct_queue", "low_priority" - - describe "#perform" do - it "busts cache" do - allow(EdgeCache::BustEvents).to receive(:call) - described_class.new.perform - expect(EdgeCache::BustEvents).to have_received(:call) - end - end -end