Add user filters scaffolding
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Dunlop::UserFiltersController do
|
||||
routes { Dunlop::Engine.routes }
|
||||
let(:model) { Dunlop::UserFilter }
|
||||
describe 'logged in' do
|
||||
let(:user) { create :user }
|
||||
before { sign_in user}
|
||||
describe '#index' do
|
||||
it "returns listed serialized" do
|
||||
model1 = create 'dunlop/user_filter', user: user, scope_key: 'panda/action-list', filters: {key_with_underscores: 17}
|
||||
model2 = create 'dunlop/user_filter', user: user, scope_key: 'other/action-list', filters: {key_with_underscores: 19}
|
||||
get :index, params: {q: {scope_key_matches: 'panda/%'}}
|
||||
|
||||
response.body.should start_with '{"data":['
|
||||
result = JSON.parse(response.body)['data']
|
||||
result.should eq [
|
||||
{"id"=>model1.id.to_s, "type"=>"dunlop/user-filter", "attributes"=>{"scope-key"=>"panda/action-list", "filters"=>{"key_with_underscores"=>17}, "is-default"=>false}}
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
describe '#create' do
|
||||
it 'creates a new filter attached to the current user' do
|
||||
post :create, params: {'dunlop/user_filter' => {scope_key: 'panda/something', filters: {abc_def: 'g'}, is_default: true}}
|
||||
record = model.last
|
||||
record.user.should eq user
|
||||
record.scope_key.should eq 'panda/something'
|
||||
record.filters.should eq('abc_def' => 'g')
|
||||
record.should be_is_default
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
describe 'not logged in' do
|
||||
describe '#index' do
|
||||
it "302" do
|
||||
model = create 'dunlop/user_filter', scope_key: 'panda:action-list', filters: {key_with_underscores: 17}
|
||||
get :index
|
||||
response.body.should include 'redirected'
|
||||
response.body.should include 'users/sign_in'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
+12
-1
@@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 2018_06_07_212010) do
|
||||
ActiveRecord::Schema.define(version: 2018_11_14_140017) do
|
||||
|
||||
create_table "contractor_initializations", force: :cascade do |t|
|
||||
t.integer "workflow_instance_id"
|
||||
@@ -51,6 +51,17 @@ ActiveRecord::Schema.define(version: 2018_06_07_212010) do
|
||||
t.index ["loggable_id", "loggable_type"], name: "index_dunlop_log_entries_on_loggable_id_and_loggable_type"
|
||||
end
|
||||
|
||||
create_table "dunlop_user_filters", force: :cascade do |t|
|
||||
t.integer "user_id"
|
||||
t.string "scope_key"
|
||||
t.text "description"
|
||||
t.boolean "is_default", default: false, null: false
|
||||
t.text "filters"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.index ["user_id"], name: "index_dunlop_user_filters_on_user_id"
|
||||
end
|
||||
|
||||
create_table "execution_batches", force: :cascade do |t|
|
||||
t.string "state"
|
||||
t.string "sti_type"
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
FactoryBot.define do
|
||||
factory 'dunlop/user_filter'
|
||||
end
|
||||
@@ -0,0 +1,22 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe Dunlop::UserFilter do
|
||||
let(:time) { '1981-03-09T13:33:04Z'.to_time }
|
||||
let(:model) { User }
|
||||
before { Timecop.freeze time }
|
||||
after { Timecop.return }
|
||||
subject { create :user }
|
||||
|
||||
describe 'is_default' do
|
||||
it "creates" do
|
||||
filter1 = create 'dunlop/user_filter', scope_key: 'dunlop:test1', filters: {a: 3, b: 8}, is_default: true
|
||||
filter2 = create 'dunlop/user_filter', scope_key: 'dunlop:test2', filters: {a: 3, b: 8}, is_default: true
|
||||
filter3 = create 'dunlop/user_filter', scope_key: 'dunlop:test1', filters: {a: 3, b: 8}, is_default: true
|
||||
|
||||
filter1.reload.is_default.should be false # there can be only one
|
||||
filter2.reload.is_default.should be true # different scope key
|
||||
filter3.reload.is_default.should be true # there can only be the last one
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,25 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe Dunlop::UserModel do
|
||||
let(:time) { '1981-03-09T13:33:04Z'.to_time }
|
||||
let(:model) { User }
|
||||
before { Timecop.freeze time }
|
||||
after { Timecop.return }
|
||||
subject { create :user }
|
||||
describe 'basics' do
|
||||
it 'exists' do
|
||||
subject.should be_present
|
||||
subject.id.should be_present
|
||||
end
|
||||
end
|
||||
|
||||
describe 'has_many user_filters' do
|
||||
it "creates" do
|
||||
expect { subject.user_filters.create(scope_key: 'dunlop:test1', filters: {a: 3, b: 8}) }.to change { Dunlop::UserFilter.count }.by 1
|
||||
filters = Dunlop::UserFilter.last
|
||||
filters.user.should eq subject
|
||||
filters.filters.should eq('a' => 3, 'b' => 8)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user