Skip to content

Commit

Permalink
Feat/replace old feature flags with flipper (#5852)
Browse files Browse the repository at this point in the history
* feat: replace hand rolled feature flags with flipper

* feat: use devise for auth
  • Loading branch information
elasticspoon authored Jul 7, 2024
1 parent a4d983d commit dfd25c2
Show file tree
Hide file tree
Showing 25 changed files with 55 additions and 214 deletions.
3 changes: 1 addition & 2 deletions app/assets/stylesheets/application.scss
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,12 @@
@use "pages/case_contacts_form";
@use "pages/court_dates";
@use "pages/emancipation";
@use "pages/feature_flags";
@use "pages/login";
@use "pages/password";
@use "pages/patch_notes";
@use "pages/reimbursements";
@use "pages/supervisors";
@use "pages/volunteers";

@use 'trix/dist/trix.css';
@use "trix/dist/trix.css";
@use "actiontext";
10 changes: 0 additions & 10 deletions app/controllers/all_casa_admins/feature_flags_controller.rb

This file was deleted.

1 change: 0 additions & 1 deletion app/javascript/all_casa_admin.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
require('./src/all_casa_admin/tables')
require('./src/all_casa_admin/patch_notes')
require('./src/all_casa_admin/feature_flags')
require('./src/session_timeout_poller.js')
require('./src/display_app_metric.js')
30 changes: 0 additions & 30 deletions app/javascript/src/all_casa_admin/feature_flags.js

This file was deleted.

18 changes: 0 additions & 18 deletions app/models/feature_flag.rb

This file was deleted.

2 changes: 1 addition & 1 deletion app/policies/case_contact_policy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def destroy?
end

def additional_expenses_allowed?
FeatureFlagService.is_enabled?(FeatureFlagService::SHOW_ADDITIONAL_EXPENSES_FLAG) &&
Flipper.enabled?(:show_additional_expenses) &&
current_organization.additional_expenses_enabled
end

Expand Down
16 changes: 0 additions & 16 deletions app/services/feature_flag_service.rb

This file was deleted.

18 changes: 0 additions & 18 deletions app/views/all_casa_admins/feature_flags/index.html.erb

This file was deleted.

2 changes: 1 addition & 1 deletion app/views/casa_org/edit.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
</div>
</div>
<%# Twilio Form End %>
<% if FeatureFlagService.is_enabled?(FeatureFlagService::SHOW_ADDITIONAL_EXPENSES_FLAG) %>
<% if Flipper.enabled?(:show_additional_expenses) %>
<div class="form-check checkbox-style mb-20">
<%= form.check_box :additional_expenses_enabled, class: 'form-check-input' %>
<%= form.label :additional_expenses_enabled, "Volunteers can add Other Expenses", class: 'form-check-label mb-2' %>
Expand Down
4 changes: 2 additions & 2 deletions app/views/layouts/_all_casa_admin_sidebar.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
Edit Profile
<% end %>
</li>
<li class="<%= active_class(all_casa_admins_feature_flags_path) %> nav-item">
<%= link_to all_casa_admins_feature_flags_path do %>
<li class="nav-item">
<%= link_to "/flipper" do %>
<i class="lni lni-pencil-alt mr-10"></i>
Feature Flags
<% end %>
Expand Down
6 changes: 6 additions & 0 deletions config/initializers/all_casa_admin_access.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
class CanAccessFlipperUI
def self.matches?(request)
session = request.env["warden"].raw_session.to_h
session["warden.user.all_casa_admin.session"].present?
end
end
24 changes: 13 additions & 11 deletions config/routes.rb
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# frozen_string_literal: true

def set_up_flipper
flipper_app = Flipper::UI.app(Flipper.instance, rack_protection: {except: :http_origin}) do |builder|
builder.use Rack::Auth::Basic do |username, password|
username == ENV["FLIPPER_USERNAME"] && password == ENV["FLIPPER_PASSWORD"]
end
end
mount flipper_app, at: "/flipper"
end
# def set_up_flipper
# flipper_app = Flipper::UI.app(Flipper.instance, rack_protection: {except: :http_origin}) do |builder|
# builder.use Rack::Auth::Basic do |username, password|
# username == ENV["FLIPPER_USERNAME"] && password == ENV["FLIPPER_PASSWORD"]
# end
# end
# mount flipper_app, at: "/flipper"
# end

Rails.application.routes.draw do
mount Rswag::Ui::Engine => "/api-docs"
mount Rswag::Api::Engine => "/api-docs"

set_up_flipper
# set_up_flipper

devise_for :all_casa_admins, path: "all_casa_admins", controllers: {sessions: "all_casa_admins/sessions"}
devise_for :users, controllers: {sessions: "users/sessions", passwords: "users/passwords"}
Expand Down Expand Up @@ -201,8 +201,6 @@ def set_up_flipper
end

resources :patch_notes, only: %i[create destroy index update]

resources :feature_flags, only: %i[index update]
end

resources :all_casa_admins, only: [:new, :create] do
Expand Down Expand Up @@ -245,4 +243,8 @@ def set_up_flipper
end
end
end

constraints CanAccessFlipperUI do
mount Flipper::UI.app(Flipper) => "/flipper"
end
end
15 changes: 15 additions & 0 deletions db/migrate/20240622020203_drop_feature_flags.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
class DropFeatureFlags < ActiveRecord::Migration[7.1]
def up
drop_table :feature_flags
end

def down
create_table :feature_flags do |t|
t.string :name, null: false
t.boolean :enabled, null: false, default: false
t.timestamps
end

add_index :feature_flags, :name, unique: true, algorithm: :concurrently
end
end
10 changes: 1 addition & 9 deletions db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema[7.1].define(version: 2024_06_21_165358) do
ActiveRecord::Schema[7.1].define(version: 2024_06_22_020203) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"

Expand Down Expand Up @@ -332,14 +332,6 @@
t.index ["emancipation_category_id"], name: "index_emancipation_options_on_emancipation_category_id"
end

create_table "feature_flags", force: :cascade do |t|
t.string "name", null: false
t.boolean "enabled", default: false, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["name"], name: "index_feature_flags_on_name", unique: true
end

create_table "flipper_features", force: :cascade do |t|
t.string "key", null: false
t.datetime "created_at", null: false
Expand Down

This file was deleted.

6 changes: 0 additions & 6 deletions spec/factories/feature_flags.rb

This file was deleted.

14 changes: 0 additions & 14 deletions spec/models/feature_flag_spec.rb

This file was deleted.

26 changes: 0 additions & 26 deletions spec/requests/all_casa_admins/feature_flags_spec.rb

This file was deleted.

11 changes: 0 additions & 11 deletions spec/services/feature_flag_service_spec.rb

This file was deleted.

9 changes: 9 additions & 0 deletions spec/system/all_casa_admins/sessions/new_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@
expect(page).to have_text "Signed out successfully"
expect(page).to have_text "All CASA Log In"
end

it "allows access to flipper" do
visit "/flipper"
expect(page).to have_text "Flipper"
end
end

context "when unauthenticated" do
Expand Down Expand Up @@ -50,5 +55,9 @@

expect(page).to have_text "Invalid Email or password"
end

it "denies access to flipper" do
expect { visit "/flipper" }.to raise_error(ActionController::RoutingError)
end
end
end
2 changes: 1 addition & 1 deletion spec/system/case_contacts/additional_expenses_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
let(:casa_case) { create(:casa_case, casa_org: organization) }

before do
FeatureFlagService.enable!(FeatureFlagService::SHOW_ADDITIONAL_EXPENSES_FLAG)
allow(Flipper).to receive(:enabled?).with(:show_additional_expenses).and_return(true)
create(:case_assignment, casa_case: casa_case, volunteer: volunteer)
end

Expand Down
2 changes: 1 addition & 1 deletion spec/system/case_contacts/create_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@

context "when the org has neither reimbursable expenses nor travel" do
before do
FeatureFlagService.disable!(FeatureFlagService::SHOW_ADDITIONAL_EXPENSES_FLAG)
allow(Flipper).to receive(:enabled?).with(:show_additional_expenses).and_return(false)
allow_any_instance_of(CasaOrg).to receive(:show_driving_reimbursement).and_return(false)
sign_in volunteer
end
Expand Down
3 changes: 2 additions & 1 deletion spec/system/case_contacts/new_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,11 @@

before(:each) do
sign_in volunteer
allow(Flipper).to receive(:enabled?).with(:show_additional_expenses).and_return(true)
end

it "is successful without a. Miles Driven or driving reimbursement", js: true do
FeatureFlagService.enable!(FeatureFlagService::SHOW_ADDITIONAL_EXPENSES_FLAG)
allow(Flipper).to receive(:enabled?).with(:show_additional_expenses).and_return(false)
organization = build(:casa_org)
build(:contact_type_group, name: "Empty", casa_org: organization)
grp_with_hidden = build(:contact_type_group, name: "OnlyHiddenTypes", casa_org: organization)
Expand Down
20 changes: 0 additions & 20 deletions spec/views/all_casa_admins/feature_flags/index.html.erb_spec.rb

This file was deleted.

Loading

0 comments on commit dfd25c2

Please sign in to comment.