require 'helper'

describe Bearcat::Client::Users do
  before do
    @client = Bearcat::Client.new(prefix: "http://canvas.instructure.com", token: "test_token")
  end

  context 'GET' do

    it "returns all users for an account" do
      stub_get(@client, "/api/v1/accounts/1/users").to_return(json_response("account_users.json"))
      users = @client.list_users(1)
      users.count.should == 3
      users.last['id'].should == 3
      users.first['id'].should == 1
      users.first['name'].should == 'test user 1'
    end

    it "returns a user in an account if a search term is provided" do
      stub_get(@client, "/api/v1/accounts/1/users?search_term=testusersisid1").to_return(json_response("account_user.json"))
      user = @client.list_users(1, {"search_term" => "testusersisid1"})
      user.count.should == 1
      user.first['name'].should == 'test user 1'
      user.first['sis_user_id'].should == 'testusersisid1'
    end

    it "returns the possible user avatar options" do
      stub_get(@client, "/api/v1/users/1/avatars").to_return(json_response("user_avatars.json"))
      user_avatars = @client.user_avatars(1)
      user_avatars.count.should == 2
      user_avatars.first['type'].should == 'gravatar'
    end

  end

  context 'POST' do

    it "creates a user in an account" do
      pseudonym = "testuser@testing.test"
      name = "testuser"
      body = {"user" => {"name" => name}, "pseudonym" => {"unique_id" => pseudonym}}
      stub_post(@client, "/api/v1/accounts/1/users").with(body: body).to_return(json_response("add_user.json"))
      user = @client.add_user(1, body)
      user['login_id'].should == pseudonym
      user['name'].should == name
    end

  end

end