cirandas.net

ref: master

test/api/tags_test.rb


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
require_relative 'test_helper'

class TagsTest < ActiveSupport::TestCase

  def setup
    create_and_activate_user
  end

  should 'get article tags' do
    profile = fast_create(Profile)
    a = profile.articles.create(name: 'Test')
    a.tags.create! name: 'foo'

    get "/api/v1/articles/#{a.id}/tags?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert_equal ['name' => 'foo', 'count' => 1], json
  end

  should 'post article tags' do
    login_api
    profile = fast_create(Profile)
    a = profile.articles.create(name: 'Test')

    post "/api/v1/articles/#{a.id}/tags?#{params.to_query}&tags=foo"
    assert_equal 201, last_response.status
    assert_equal ['foo'], a.reload.tag_list
  end

  should 'not post article tags if not authenticated' do
    profile = fast_create(Profile)
    a = profile.articles.create(name: 'Test')

    post "/api/v1/articles/#{a.id}/tags?#{params.to_query}&tags=foo"
    assert_equal 401, last_response.status
    assert_equal [], a.reload.tag_list
  end

  should 'get profile tags' do
    profile = fast_create(Profile)
    profile.tags.create! name: 'foo'

    get "/api/v1/profiles/#{profile.id}/tags?#{params.to_query}"
    json = JSON.parse(last_response.body)
    assert_equal ['name' => 'foo', 'count' => 1], json
  end

  should 'post profile tags' do
    login_api
    profile = fast_create(Profile)

    post "/api/v1/profiles/#{profile.id}/tags?#{params.to_query}&tags=foo"
    assert_equal 201, last_response.status
    assert_equal ['foo'], profile.reload.tag_list
  end

  should 'not post profile tags if not authenticated' do
    profile = fast_create(Profile)

    post "/api/v1/profiles/#{profile.id}/tags?#{params.to_query}&tags=foo"
    assert_equal 401, last_response.status
    assert_equal [], profile.reload.tag_list
  end

  should 'get environment tags for path environments' do
    person = fast_create(Person)
    person.articles.create!(:name => 'article 1', :tag_list => 'first-tag')
    person.articles.create!(:name => 'article 2', :tag_list => 'first-tag, second-tag')
    person.articles.create!(:name => 'article 3', :tag_list => 'first-tag, second-tag, third-tag')

    get '/api/v1/environments/tags'
    json = JSON.parse(last_response.body)
    json.each do |name, count|
      if name == 'first-tag'
        assert_equal(3, count)
      elsif name == 'second-tag'
        assert_equal(2, count)
      elsif name == 'third-tag'
        assert_equal(1, count)
      end
    end
  end

  should 'get environment tags for path environments with status OK' do
    get '/api/v1/environments/tags'
    assert_equal Api::Status::OK, last_response.status
  end

  should 'get environment tags for path environments/:id path' do
    environment = fast_create(Environment)
    person = fast_create(Person, :environment_id => environment.id)
    person.articles.create!(:name => 'article 1', :tag_list => 'first-tag')
    person.articles.create!(:name => 'article 2', :tag_list => 'first-tag, second-tag')
    person.articles.create!(:name => 'article 3', :tag_list => 'first-tag, second-tag, third-tag')

    get "/api/v1/environments/#{environment.id}/tags"
    json = JSON.parse(last_response.body)
    json.each do |name, count|
      if name == 'first-tag'
        assert_equal(3, count)
      elsif name == 'second-tag'
        assert_equal(2, count)
      elsif name == 'third-tag'
        assert_equal(1, count)
      end
    end
  end

  should 'get environment tags for path environments/:id with status OK' do
    environment = fast_create(Environment)
    get "/api/v1/environments/#{environment.id}/tags"
    assert_equal Api::Status::OK, last_response.status
  end

end