Sha256: d28ba0ce9b1b2a51acbf02994c842e35e0aae6060b09b01e76039d5af3aac9e9

Contents?: true

Size: 1.92 KB

Versions: 5

Compression:

Stored size: 1.92 KB

Contents

require 'spec_helper'

describe 'Users API' do
  it 'sends the list of users' do
    users = [
      User.create(username: 'Test'),
      User.create(username: 'Test 2')
    ]

    get '/api/v1/users'

    expect(last_response.status).to eq(200)
    json = JSON.parse(last_response.body)

    expect(json['users'].length).to eq(users.count)
  end

  it 'sends an individual user' do
    user = User.create(username: 'Test')

    get '/api/v1/users/' + user.id.to_s + '/'

    expect(last_response.status).to eq(200)
    json = JSON.parse(last_response.body)

    expect(json['user']['id']).to eq(user.id)
  end

  it 'creates a new user' do
    user_params = {
      username: 'Test'
    }

    post '/api/v1/users/', user: user_params

    expect(last_response.status).to eq(201)
    json = JSON.parse(last_response.body)

    expect(json['user']['username']).to eq(user_params[:username])
  end

  it 'updates an existing user' do
    user = User.create(username: 'Foo')

    expect(user.username).to eq('Foo')

    put '/api/v1/users/' + user.id.to_s + '/', user: { username: 'Bar' }

    updated_user = User.find(user.id)
    expect(last_response.status).to eq(204)
    expect(updated_user.username).to eq('Bar')
  end

  it 'destroys an existing user' do
    user = User.create(username: 'Foo')

    expect(user.id).to_not eq(nil)

    delete '/api/v1/users/' + user.id.to_s + '/'

    does_user_exist = User.where(id: user.id).exists?
    expect(last_response.status).to eq(204)
    expect(does_user_exist).to eq(false)
  end

  it 'sends a filtered list of users' do
    all_users = [
      User.create(username: 'Test'),
      User.create(username: 'Demo'),
      User.create(username: 'Test 2')
    ]

    filtered_users = [all_users[0], all_users[2]]

    get '/api/v1/users?filters%5Bsearch%5D=Test'

    expect(last_response.status).to eq(200)
    json = JSON.parse(last_response.body)

    expect(json['users'].length).to eq(filtered_users.count)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
api_me-0.4.0 spec/acceptance/api/v1/users_spec.rb
api_me-0.3.6 spec/acceptance/api/v1/users_spec.rb
api_me-0.3.5 spec/acceptance/api/v1/users_spec.rb
api_me-0.3.4 spec/acceptance/api/v1/users_spec.rb
api_me-0.3.3 spec/acceptance/api/v1/users_spec.rb