class SettingsTest < ActionDispatch::IntegrationTest

  # Called before every test method runs. Can be used
  # to set up fixture information.
  def setup
    @admin = User.find_by(username: 'admin')
    login_as(@admin, scope: :user)
  end

  # Called after every test method runs. Can be used to tear
  # down fixture information.

  def teardown
    # Do nothing
  end

  test 'update setting value' do
    put '/api/settings/fablab_name',
      {
        setting: {
          value: 'Test Fablab'
        }
      }
    assert_equal 200, response.status
    assert_equal Mime::JSON, response.content_type
    resp = json_response(response.body)
    assert_equal 'fablab_name', resp[:setting][:name]
    assert_equal 'Test Fablab', resp[:setting][:value]
  end


  test 'update setting with wrong name' do
    put '/api/settings/does_not_exists',
        {
            setting: {
                value: 'ERROR EXPECTED'
            }
        }
    assert_equal 422, response.status
    assert_match /Name is not included in the list/, response.body
  end

end