[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
murilo
Criador murilo 26/04/2024

ola carlos , surgiu uma duvida aqui . dei uma pesquisada . quando eu for fazer um upload de imagem em um formulário .
eu pego uma imagem de teste por exemplo e envio junto com os dados do formulário .

eu vi aqui, deu certo de fazer o upload de imagem desta forma aqui -

'status' =>$user_admin['status'],
'password' =>123456,
'email' => $user_admin['email'],
'image_profile' => new \Illuminate\Http\UploadedFile(public_path('/assets/images/profile_1.jpg'), 'profile1.jpg', null, null, true),

to enviando esta imagem, no campo image_profile .

ai depois que envia os dados vc geralmente verifica desta forma neh -


assertDatabaseHas('user_admins', ['status' => $data['status'],
'email' => $data['email'] ])

só que a imagem , vai ser encriptada , então não vai ter como saber o nome dela pra comprovar que foi feito o upload mesmo .
como que vc verifica o nome dela neste caso ?
precisava saber o nome dela tbem pra apagar ela , pq vi aqui, fiz o upload e enviou pro diretório .
como que vc faz nestes casos de envio de arquivo pra saber se ta afzendo o envio ok ?

valeu




Criador murilo 26/04/2024

vc costuma retornar os valores que foram inseridos no model ? pq daria pra fazer algo do tipo tbem pra saber o nome da imagem . nao sei se eh uma boa ideia .
tipo verifica se esta fazendo a inserção através de teste se for retorna os valores que foram inseridos .

murilo
Manager Carlos Ferreira 26/04/2024

A ideia é usar o Eloquent (ou qualquer outro ORM) para fazer a inserção dos dados, e usar o assertDatabaseHas para validar se o valor realmente foi persistido (independendo do método, se foi com o ORM ou não).

Era essa mesmo a sua dúvida?

Carlos Ferreira
Criador murilo 26/04/2024

mas tenho uma duvida aqui , no caso de testar uploads .
funcionaria tbem no caso no GitHubActions estes testes ?
ou se fr utilizar o Git Hub Actions eu desabilito o upload ?

murilo
Manager Carlos Ferreira 26/04/2024

Vc pode criar um arquivo fake, assim funciona em qualquer workflow de CI/CD, dessa forma:

$file = UploadedFile::fake()->image('avatar.jpg');

 

(https://laravel.com/docs/11.x/http-tests#testing-file-uploads)

Carlos Ferreira
Criador murilo 26/04/2024

outra coisa , vc disse que o corretor é usar o assertDatabaseHas .

por exemplo , no seu código vc usou o asset data has -


test('should update user', function () {
putJson(route('users.update', $this->user->id), [
'name' => 'John Doe Updated',
], [
'Authorization' => 'Bearer ' . $this->token
])->assertOk();

assertDatabaseHas('users', [
'id' => $this->user->id,
'name' => 'John Doe Updated',
]);
});
 

 

mas vc sabia os valores do id e do campo nome .

mas se por exemplo for um arquivo de upload , vc vai enviar o upload com esse nome -
avatar.jpg , mas o arquivo no banco de dados vai encriptar , e viar esse nome -  CsPO8Rra6GSlDabCH/cKvVAm.XlElkUyHJu.jpg 

como vc vai usar o assert se vc nao sabe o nome do campo , entende ?  isso que eu estava tentando explicar . rss 
oque vc costuma fazer neste caso , retorna depois de inserido o campo o nome que foi gravado ?



murilo
Criador murilo 26/04/2024

eu tava pensando aqui, tbem tem a opção de nao validar o upload, igual o que vc fez com o campo de senha , que pulou ele.

murilo
Manager Carlos Ferreira 26/04/2024

A nível de teste e2e não muito viável testar o nome do arquivo, até mesmo porque o nome do arquivo será aleatório (a não que ser que exista uma estratégia para fazer o upload do arquivo com um nome personalizado).

 

Em um teste de integração sim, neste caso dá para validar o nome persistido no banco, porque você pode fazer o upload do arquivo fake, e validar se o valor retornado foi preenchido corretamente no banco de dados.

 

No caso da senha, você pode validar se o valor não está null, ou pode usar:

Hash::check($senhaNormal, $senhaCriptografada);

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!