require 'rails_helper'

RSpec.describe ComponentesHelper, type: :helper do

	describe "#botao_com_permissao" do
		context "quando perfil tem permissão" do
			it "retorna botão" do
				permissao = {acao: :new}

				params = {
					texto: 'Novo Perfil'
				}

				allow( helper ).to receive(:tem_permissao?).and_return(true)

				botao = helper.botao_com_permissao(new_perfil_path, permissao, params)
				expect(botao).to include("Novo Perfil")
			end
		end

		context "quando perfil não tem permissão" do
			it "retorna nulo" do
				permissao = {acao: :new}

				params = {
					texto: 'Novo Perfil'
				}

				allow( helper).to receive(:tem_permissao?).and_return(false)

				botao = helper.botao_com_permissao(new_perfil_path, permissao, params)

				expect(botao).to be_nil
			end
		end
	end

	describe "#botao" do
		it "atribui texto ao botão" do
			params = {
				texto: 'Novo Perfil'
			}

			botao = helper.botao(new_perfil_path, params)
			expect(botao).to include("Novo Perfil")
		end

		it "atribui classe ao icone do botão" do
			params = {
				texto: 'Novo Perfil',
				class_icone:'glyphicon glyphicon-user'
			}

			botao = helper.botao(new_perfil_path, params)
			expect(botao).to include("glyphicon glyphicon-user")
		end

		it "atribui classe para o texto do botão" do
			params = {
				texto: 'Novo Perfil',
				class_texto: 'text-primary'
			}

			botao = helper.botao(new_perfil_path, params)
			expect(botao).to include("text-primary")
		end

		it "atribui classe ao botão sobrescrevendo a classe padrão" do
			params = {
				texto: 'Novo Perfil',
				params: {class: 'classe-de-teste'}
			}

			botao = helper.botao(new_perfil_path, params)
			expect(botao).to include("classe-de-teste")
			expect(botao).not_to include("btn btn-default btn-sm")
		end

		it "atribui atributos extras ao botão" do
			params = {
				texto: 'Novo Perfil',
				params: {
					title: 'TÍTULO',
					data: {
						custom: 'teste',
						confirm: 'TEM CERTEZA?'
					},
					target: '_blank'
				}
			}

			botao = helper.botao(new_perfil_path, params)
			expect(botao).to include('data-custom="teste"')
			expect(botao).to include('data-confirm="TEM CERTEZA?"')
			expect(botao).to include('title="TÍTULO"')
			expect(botao).to include('target="_blank"')
		end

		context "quando for passado parametros extras sem a propriedade de classe" do
			it "não sobrescreve a classe padrão" do
				params = {
					texto: 'Novo Perfil',
					params: {
						data: { custom: 'teste'}
					}
				}

				botao = helper.botao(new_perfil_path, params)
				expect(botao).to include("btn btn-default btn-sm")
			end
		end
	end
end
