diff --git a/app/controllers/admin/valuator_groups_controller.rb b/app/controllers/admin/valuator_groups_controller.rb new file mode 100644 index 000000000..876900ac1 --- /dev/null +++ b/app/controllers/admin/valuator_groups_controller.rb @@ -0,0 +1,52 @@ +class Admin::ValuatorGroupsController < Admin::BaseController + + def index + @groups = ValuatorGroup.all + end + + def show + @group = ValuatorGroup.find(params[:id]) + end + + def new + @group = ValuatorGroup.new + end + + def edit + @group = ValuatorGroup.find(params[:id]) + end + + def create + @group = ValuatorGroup.new(group_params) + if @group.save + notice = "User group created successfully" + redirect_to [:admin, @group], notice: notice + else + render :new + end + end + + def update + @group = ValuatorGroup.find(params[:id]) + if @group.update(group_params) + notice = "User group updated successfully" + redirect_to [:admin, @group], notice: notice + else + render :edit + end + end + + def destroy + @group = ValuatorGroup.find(params[:id]) + @group.destroy + notice = "User group destroyed successfully" + redirect_to admin_valuator_groups_path, notice: notice + end + + private + + def group_params + params.require(:valuator_group).permit(:name) + end + +end \ No newline at end of file diff --git a/app/models/valuator_group.rb b/app/models/valuator_group.rb new file mode 100644 index 000000000..d230bd686 --- /dev/null +++ b/app/models/valuator_group.rb @@ -0,0 +1,2 @@ +class ValuatorGroup < ActiveRecord::Base +end \ No newline at end of file diff --git a/app/views/admin/valuator_groups/_group.html.erb b/app/views/admin/valuator_groups/_group.html.erb new file mode 100644 index 000000000..e47de79da --- /dev/null +++ b/app/views/admin/valuator_groups/_group.html.erb @@ -0,0 +1,18 @@ +
+ Name: <%= group.name %> +
+ +
+ Members: +
+ +
+ Edit: + <%= link_to "Edit", edit_admin_valuator_group_path(group) %> +
+ +
+ Destoy: + <%= link_to "Destroy", admin_valuator_group_path(group), method: :delete %> +
+
\ No newline at end of file diff --git a/app/views/admin/valuator_groups/edit.html.erb b/app/views/admin/valuator_groups/edit.html.erb new file mode 100644 index 000000000..5e0d135c5 --- /dev/null +++ b/app/views/admin/valuator_groups/edit.html.erb @@ -0,0 +1,4 @@ +<%= form_for [:admin, @group] do |f| %> + <%= f.text_field :name %> + <%= f.submit %> +<% end %> \ No newline at end of file diff --git a/app/views/admin/valuator_groups/index.html.erb b/app/views/admin/valuator_groups/index.html.erb new file mode 100644 index 000000000..b92987c08 --- /dev/null +++ b/app/views/admin/valuator_groups/index.html.erb @@ -0,0 +1,4 @@ +<%= render partial: 'group', collection: @groups %> + +There are <%= @groups.count %> groups of users +<%= link_to "Nuevo", new_admin_valuator_group_path %> \ No newline at end of file diff --git a/app/views/admin/valuator_groups/new.html.erb b/app/views/admin/valuator_groups/new.html.erb new file mode 100644 index 000000000..5e0d135c5 --- /dev/null +++ b/app/views/admin/valuator_groups/new.html.erb @@ -0,0 +1,4 @@ +<%= form_for [:admin, @group] do |f| %> + <%= f.text_field :name %> + <%= f.submit %> +<% end %> \ No newline at end of file diff --git a/app/views/admin/valuator_groups/show.html.erb b/app/views/admin/valuator_groups/show.html.erb new file mode 100644 index 000000000..e4151040c --- /dev/null +++ b/app/views/admin/valuator_groups/show.html.erb @@ -0,0 +1,4 @@ +Hey there I'm group <%= @group.name %> + +
+<%= link_to "Ver todos los grupos", admin_valuator_groups_path %> diff --git a/app/views/admin/valuators/index.html.erb b/app/views/admin/valuators/index.html.erb index dfb93ed80..c0a11addb 100644 --- a/app/views/admin/valuators/index.html.erb +++ b/app/views/admin/valuators/index.html.erb @@ -2,6 +2,8 @@ <%= render "admin/shared/user_search", url: search_admin_valuators_path %> +<%= link_to "Grupos de evaluadores", admin_valuator_groups_path %> +
<% if @valuators.any? %>

<%= page_entries_info @valuators %>

diff --git a/config/locales/en/user_groups.yml b/config/locales/en/user_groups.yml new file mode 100644 index 000000000..2761145c3 --- /dev/null +++ b/config/locales/en/user_groups.yml @@ -0,0 +1,6 @@ +en: + user_group: + zero: There are 0 groups of valuators + one: There is 1 group de valuators + other: There are '%{count}' groups of valuators + diff --git a/config/locales/es/user_groups.yml b/config/locales/es/user_groups.yml new file mode 100644 index 000000000..eaaba5fc7 --- /dev/null +++ b/config/locales/es/user_groups.yml @@ -0,0 +1,6 @@ +es: + user_group: + zero: Hay 0 grupos de evaluadores + one: Hay 1 grupo de evaluadores + other: Hay '%{count}' grupos de evaluadores + diff --git a/config/routes/admin.rb b/config/routes/admin.rb index 384fb685c..703227679 100644 --- a/config/routes/admin.rb +++ b/config/routes/admin.rb @@ -84,6 +84,7 @@ namespace :admin do get :search, on: :collection get :summary, on: :collection end + resources :valuator_groups resources :managers, only: [:index, :create, :destroy] do get :search, on: :collection diff --git a/db/migrate/20180208151658_create_valuator_groups.rb b/db/migrate/20180208151658_create_valuator_groups.rb new file mode 100644 index 000000000..441478cc5 --- /dev/null +++ b/db/migrate/20180208151658_create_valuator_groups.rb @@ -0,0 +1,7 @@ +class CreateValuatorGroups < ActiveRecord::Migration + def change + create_table :valuator_groups do |t| + t.string :name + end + end +end diff --git a/db/schema.rb b/db/schema.rb index a85b3a0dc..ab703cb52 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1053,6 +1053,11 @@ ActiveRecord::Schema.define(version: 20180320104823) do add_index "topics", ["community_id"], name: "index_topics_on_community_id", using: :btree add_index "topics", ["hidden_at"], name: "index_topics_on_hidden_at", using: :btree + create_table "user_groups", force: :cascade do |t| + t.string "name" + t.string "kind" + end + create_table "users", force: :cascade do |t| t.string "email", default: "" t.string "encrypted_password", default: "", null: false @@ -1128,6 +1133,10 @@ ActiveRecord::Schema.define(version: 20180320104823) do t.datetime "updated_at", null: false end + create_table "valuator_groups", force: :cascade do |t| + t.string "name" + end + create_table "valuators", force: :cascade do |t| t.integer "user_id" t.string "description" diff --git a/spec/factories.rb b/spec/factories.rb index 2f9cc4acc..186d37515 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -61,6 +61,9 @@ FactoryBot.define do end end + factory :valuator_group, class: ValuatorGroup do + end + factory :identity do user nil provider "Twitter" diff --git a/spec/features/admin/valuator_groups_spec.rb b/spec/features/admin/valuator_groups_spec.rb new file mode 100644 index 000000000..8f179b024 --- /dev/null +++ b/spec/features/admin/valuator_groups_spec.rb @@ -0,0 +1,66 @@ +require 'rails_helper' + +feature "Valuator groups", :focus do + + let(:admin) { create(:administrator).user } + + background do + login_as(admin) + end + + scenario "Index" do + group1 = create(:valuator_group) + group2 = create(:valuator_group) + + visit admin_valuator_groups_path + + expect(page).to have_content group1.name + expect(page).to have_content group2.name + end + + scenario "Show" do + group = create(:valuator_group) + + visit admin_valuator_group_path(group) + + expect(page).to have_content group.name + end + + scenario "Create" do + visit admin_valuators_path + + click_link "Grupos de evaluadores" + click_link "Nuevo" + + fill_in "valuator_group_name", with: "Health" + click_button "Create Valuator group" + + expect(page).to have_content "User group created successfully" + #expect(page).to have_content "There are 1 groups of valuators" + expect(page).to have_content "Health" + end + + scenario "Update" do + group = create(:valuator_group, name: "Health") + + visit admin_valuator_groups_path + click_link "Edit" + + fill_in "valuator_group_name", with: "Health and Sports" + click_button "Update Valuator group" + + expect(page).to have_content "User group updated successfully" + expect(page).to have_content "Health and Sports" + end + + scenario "Destroy" do + group = create(:valuator_group) + + visit admin_valuator_groups_path + click_link "Destroy" + + expect(page).to have_content "User group destroyed successfully" + expect(page).to have_content "There are 0 groups of users" + end + +end \ No newline at end of file