Skip to content

Commit

Permalink
Merge pull request #126 from npauzenga/tasks/join-table-acceptance-specs
Browse files Browse the repository at this point in the history
Tasks/join table acceptance specs
  • Loading branch information
npauzenga committed Jan 31, 2016
2 parents 24859f6 + 1bcdb6e commit b322c58
Show file tree
Hide file tree
Showing 11 changed files with 95 additions and 32 deletions.
10 changes: 8 additions & 2 deletions app/controllers/game_night_attendances_controller.rb
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
class GameNightAttendancesController < AuthenticationController
# POST /game_nights/:game_night_id/game_night_attendences
def create
result = CreateGameNightAttendance.call(user_id: current_user.id,
game_night_id: params[:id])
result = CreateGameNightAttendance.call(interactor_params)
if result.success?
head :no_content
else
render json: result.errors, status: :internal_server_error
end
end

private

def interactor_params
{ user_id: current_user.id, game_night_id: params[:game_night_id] }
end
end
1 change: 1 addition & 0 deletions app/controllers/group_memberships_controller.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
class GroupMembershipsController < AuthenticationController
# POST /groups/:group_id/group_memberships
def create
result = CreateGroupMembership.call(user_id: current_user.id,
group_id: params[:group_id])
Expand Down
12 changes: 8 additions & 4 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@
mount Knock::Engine => "/signin"

resource :user, except: [:new, :edit]
resources :game_nights, except: [:new, :edit]
resources :password_resets, only: [:create, :update]
resources :groups, except: [:new, :edit]
resources :profiles, only: [:show, :index]
resources :group_memberships, only: [:create]
resources :game_night_attendances, only: [:create]

resources :groups, except: [:new, :edit] do
resources :group_memberships, only: [:create]
end

resources :game_nights, except: [:new, :edit] do
resources :game_night_attendances, only: [:create]
end
end
8 changes: 0 additions & 8 deletions spec/acceptance/game_nights_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@
Knock::AuthToken.new(payload: { sub: authenticated_user.id }).token
end

def schema_path
"./config/schema/schemata/game_night.json"
end

shared_context "game_night parameters" do
parameter "name", <<-DESC, scope: :game_night
The name of the game_night.
Expand All @@ -29,10 +25,6 @@ def schema_path
end

post "/game_nights" do
let(:schema_path) { "#{Rails.root}/config/schema/api.json" }
let(:last_response) { response }
let(:last_request) { request }

include_context "game_night parameters"

let(:name) { "Waaggh" }
Expand Down
8 changes: 0 additions & 8 deletions spec/acceptance/groups_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@
Knock::AuthToken.new(payload: { sub: authenticated_user.id }).token
end

def schema_path
"./config/schema/schemata/group.json"
end

shared_context "group parameters" do
parameter "name", <<-DESC, scope: :group, required: true
The name of the group.
Expand All @@ -35,10 +31,6 @@ def schema_path
end

post "/groups" do
let(:schema_path) { "#{Rails.root}/config/schema/api.json" }
let(:last_response) { response }
let(:last_request) { request }

include_context "group parameters"

let(:name) { "Waaggh" }
Expand Down
34 changes: 34 additions & 0 deletions spec/acceptance/user_game_night_attendances_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
require "rspec_api_documentation/dsl"

RSpec.resource "UserGameNightAttendance" do
let(:authenticated_user) do
create(:confirmed_user)
end

let(:auth_token) do
Knock::AuthToken.new(payload: { sub: authenticated_user.id }).token
end

shared_context "user_game_night_attendance parameters" do
parameter "game_night_id", <<-DESC, scope: :game_night, required: true
The unique id of the game_night.
DESC
end

post "/game_nights/:game_night_id/game_night_attendances" do
include_context "user_game_night_attendance parameters"

let!(:game_night) { create(:game_night) }
let(:game_night_id) { game_night.id }

header "Authorization", :auth_token

example_request "POST /game_nights/:game_night_id/game_night_attendances" do
expect(status).to eq 204

expect(authenticated_user.game_nights.first.name).to eq(game_night.name)

expect(game_night.users.first).to eq authenticated_user
end
end
end
34 changes: 34 additions & 0 deletions spec/acceptance/user_group_memberships_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
require "rspec_api_documentation/dsl"

RSpec.resource "UserGroupMembership" do
let(:authenticated_user) do
create(:confirmed_user)
end

let(:auth_token) do
Knock::AuthToken.new(payload: { sub: authenticated_user.id }).token
end

shared_context "user_group_membership parameters" do
parameter "group_id", <<-DESC, scope: :group, required: true
The unique id of the group to which the game_night belongs.
DESC
end

post "/groups/:group_id/group_memberships" do
include_context "user_group_membership parameters"

let!(:group) { create(:group) }
let(:group_id) { group.id }

header "Authorization", :auth_token

example_request "POST /groups/:group_id/group_memberships" do
expect(status).to eq 204

expect(authenticated_user.groups.first.name).to eq(group.name)

expect(group.users.first).to eq authenticated_user
end
end
end
4 changes: 0 additions & 4 deletions spec/acceptance/users_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@
Knock::AuthToken.new(payload: { sub: authenticated_user.id }).token
end

def schema_path
"./config/schema/schemata/user.json"
end

shared_context "user parameters" do
parameter "first_name", <<-DESC, scope: :user, required: true
The first name of the user.
Expand Down
8 changes: 6 additions & 2 deletions spec/controllers/game_night_attendances_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@
describe "POST #create" do
let(:user) { create(:confirmed_user) }
let(:game_night) { create(:game_night) }
let(:params) { { id: game_night.id.to_s } }
let(:arguments) { { user_id: user.id, game_night_id: params[:id] } }
let(:params) { { game_night_id: game_night.id.to_s } }

let(:arguments) do
{ user_id: user.id, game_night_id: params[:game_night_id] }
end

let(:context) { double(:context, success?: true) }

before(:example) do
Expand Down
4 changes: 2 additions & 2 deletions spec/controllers/group_memberships_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
describe "POST #create" do
let(:user) { create(:confirmed_user) }
let(:group) { create(:group) }
let(:params) { { id: group.id } }
let(:arguments) { { user_id: user.id, group_id: params[:group_id] } }
let(:params) { { group_id: group.id } }
let(:arguments) { { user_id: user.id, group_id: params[:group_id].to_s } }
let(:context) { double(:context, success?: true) }

before(:example) do
Expand Down
4 changes: 2 additions & 2 deletions spec/factories/game_night.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
FactoryGirl.define do
factory :game_night do
name Faker::Hipster.words(2)
name Faker::Team.name
time { rand(7).days.from_now.to_date }
location_name Faker::Hipster.words(2)
location_name Faker::Company.name
location_address Faker::Address.street_name
end
end

0 comments on commit b322c58

Please sign in to comment.