ProjectController 测试完成

This commit is contained in:
HuJiaxuan 2017-01-01 09:00:27 +00:00
parent bf4a695d76
commit bdcac94050
6 changed files with 161 additions and 41 deletions

View File

@ -3,18 +3,25 @@ class ProjectsController < ApplicationController
before_action :authenticate
skip_before_action :verify_authenticity_token, :only => [:index,:create,:addUsers,:detail]
#获取我的项目列表user_id保存在session中.
#=============================================>获取我的项目列表user_id保存在session中.
def index
#Todo
uid = session[:user_id]
pid = Projects_user.find_by(project_id: uid)
mc = Mission.where(:project_id => pid).size
uc = Projects_user.where(:project_id => pid).size
sc = Share.where(:project_id => pid).size
#pid = Projects_user.find_by(project_id: uid)
pids = []
projects = Projects_user.where("user_id = ?",uid).all
projects.each do |projects_user|
pids << projects_user.project_id
end
data = []
Project.find(pid) do |i|
data += [{
pids.each do |pid|
mc = Mission.where(:project_id => pid).size
uc = Projects_user.where(:project_id => pid).size
sc = Share.where(:project_id => pid).size
puts pid
i = Project.find_by(id: pid)
data += [{
:id => i.id,
:name => i.name,
:content => i.content,
@ -29,62 +36,76 @@ class ProjectsController < ApplicationController
}
end
#创建项目
#=============================================>创建项目
def create
#Todo
project = Project.new()
project.content = params[:content]
project.name = params[:name]
now = Time.new
project.created_at = now
project.updated_at = now
project.save!
# 将自己加入项目
pu = Project_user.new()
pu.project_id = project.id
pu.user_id = session[:user_id].to_i
pu.save!
user_id = session[:user_id]
user = User.find_by(id: user_id)
params_project = {content: params[:content],name: params[:name]}
project = Project.new(params_project)
project.users << user
project.save
#project save的时候会保存 projects_users
# params_pu = {project_id: project.id,user_id: user.id}
# puts params_pu
# pu = Projects_user.new(params_pu)
# pu.save
render :json => {:code => 0}
end
#项目添加用户
#=============================================>项目添加用户
def addUsers
#Todo
uid = params[:user_id].to_i
pid = params[:project_id].to_i
pu = Project_user.new()
pu.project_id = pid
pu.user_id = uid
pu.save!
note = Note.new
note.user_id = uid
note.project_id = pid
note.category = 2
note.content = User.find(uid).name + "邀请您进入项目" +
Project.find(pid).name
now = Datetime.now
note.created_at = now
note.updated_at = now
uid = params[:user_id]
register = session[:user_id]
#username = params[:username]
pid = params[:project_id]
params_pu = {project_id: pid,user_id: uid}
pu = Projects_user.new(params_pu)
pu.save
content = User.find_by(id: register).name + "邀请您进入项目" + Project.find_by(id: pid).name
puts content
params_note = {user_id: uid,content: content,category: 2,project_id: pid}
note = Note.new(params_note)
note.save!
#puts Note.find_by(id: note.id).inspect
# now = Datetime.now
# note.created_at = now
# note.updated_at = now
note.save!
render :json => {:code => 0}
end
#项目详情
#=============================================>项目详情
def detail
#Todo
pid = params[:id]
project = Project.find_by(id: pid)
uid = Projects_user.where(:project_id => pid)
#uid = Projects_user.where(:project_id => pid)
users = []
Users.find(uid).each do |i|
projects_users = Projects_user.where("project_id = ?",pid).all
projects_users.each do |projects_user|
uid = projects_user.user_id
i = User.find_by(id: uid)
users += [{
:nickname => i.name,
:id => i.id
}]
end
#puts users.inspect
# Users.find(uid).each do |i|
# users += [{
# :nickname => i.name,
# :id => i.id
# }]
# end
render :json => {
:code => 0,
:data => {

View File

@ -5,6 +5,8 @@ class SessionsController < ApplicationController
skip_before_action :verify_authenticity_token, :only => [:create,:destroy,:show]
# 用户登录
def create
user = User.find_by(email: params[:email])
if user && user.authenticate(params[:password])

View File

@ -1,7 +1,8 @@
class Project < ActiveRecord::Base
has_and_belongs_to_many :users
validate :require_at_least_on_user,on:addUsers # 项目中最少要有一个用户
validate :require_at_least_on_user,on: :update # 项目中最少要有一个用户
validates :name, presence: true, length: { minimum: 1, maximum: 50 }, uniqueness: true
private

View File

@ -0,0 +1,7 @@
require 'rails_helper'
RSpec.describe MissionsController, type: :controller do
describe ""
end

View File

@ -0,0 +1,83 @@
require 'rails_helper'
RSpec.describe ProjectsController, type: :controller do
describe "GET #index " do
it "return valid projects json" do
register = create(:user)
user = User.find_by(email: register.email)
session[:user_id] = user.id
post :create,content: "project content 1",name: "project1"
post :create,content: "project content 2", name: "project2"
get :index
puts response.body
end
end
describe "POST #create" do
it "can create a valid project" do
register = create(:user)
user = User.find_by(email: register.email)
#puts user.inspect
session[:user_id] = user.id
post :create,content: "project content 1",name: "project1"
#puts response.body
end
end
describe "POST #addUsers" do
it "can addUsers correctly" do
register = create(:user)
user = User.find_by(email: register.email)
session[:user_id] = user.id
#user1 = create(:user)
user2 = create(:user)
params = {name: "project addUsers test",content: "addUsers test"}
project = Project.new(params)
project.users << register
project.save
#post :create,content: "project content 3",name: "project3"
post :addUsers,user_id: user2.id,project_id: project.id
end
end
describe "GET #detail" do
it "can return correct json format of project " do
register = create(:user)
user = User.find_by(email: register.email)
session[:user_id] = user.id
user1 = create(:user)
user2 = create(:user)
params = {name: "project addUsers test",content: "addUsers test"}
project = Project.new(params)
project.users << register
project.save
post :addUsers,user_id: user2.id,project_id: project.id
post :addUsers,user_id: user1.id,project_id: project.id
post :detail,id: project.id
puts response.body
end
end
end

View File

@ -0,0 +1,6 @@
require 'faker'
FactoryGirl.define do
factory :projects_user do
end
end