[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Rafael Duardo
Criador Rafael Duardo 04/08/2022

Boa Tarde, Carlos, no meu projeto tem uma relação de tenant para user, primeiro é criado a tenant com a mesma é criado um usuário e nesse caso como faço para testar ao colocar chave estrageira no factory?

e tbm no terminal não está mostrando os erros só retorna isso ..E.rafael@21f, como faço para listar?

Manager Carlos Ferreira 04/08/2022

Olá, Rafael!
Tudo bem?

Tem o seu código no GitHub? Fica mais fácil para mim te ajudar com base no que vc já tem pronto.

Aqui um exemplo de um factory com relacionamento: https://github.com/especializati/curso-laravel-api-cache/blob/main/database/factories/LessonFactory.php#L28

Carlos Ferreira
Criador Rafael Duardo 04/08/2022

Boa noite, Carlos, deu certo conforme o link do git, mas tenho erro em relação ao factory que tem CNPJ, pois tem que criar com exatamente 14 dígitos de forma aleatória sem se repetir, você por gentileza tem algum exemplo?

Rafael Duardo
Manager Carlos Ferreira 04/08/2022

Aqui um exemplo: https://gist.github.com/acfreitas/fb7465c33156ec144513

Carlos Ferreira
Criador Rafael Duardo 04/08/2022

Obrigado, deu certo.

Rafael Duardo
Criador Rafael Duardo 04/08/2022

Bom dia, Carlos, com os exemplos só funcionou quando eu removi o use TenantTrait do modelo de tenant, mas quando uso o TenantTrait retorna um erro

Rafael Duardo
Criador Rafael Duardo 04/08/2022

quando testo uma respectiva funcionalidade cujo model usa o TenantTrait o teste só roda quando eu comento o us TenantTenant, tem algum modo de passar esses testes usando TenantTrait?

Rafael Duardo
Manager Carlos Ferreira 04/08/2022

Qual foi exatamente o erro que deu usando a trait?
Print por favor.

Tem o código no GitHub?

Carlos Ferreira
Criador Rafael Duardo 04/08/2022

Bom dia, Carlos o erro quando uso o TenantTrait é este: ErrorException: Trying to get property 'tenant_id' of non-object

 

https://uploaddeimagens.com.br/imagens/NJwer4o

Rafael Duardo
Criador Rafael Duardo 04/08/2022

Deu certo, Carlos, era porque as implementações das classes do TenantTrait estavam diferentes eu tinha feito do meu jeito, resolvi olhando o repositório do larafood.

Rafael Duardo
Criador Rafael Duardo 04/08/2022

Boa tarde, Carlos, ao utilizar a implementação do TenantTrait de acordo com o curso larafood no TenantScope que é a seguinte: 

$identify = app(ManagerTenant::class)->getTenantIdentify();

        if ($identify)
            $builder->where('tenant_id', $identify);

os testes passam, mas ao usar essa mesma implementação os usuários admin não conseguem visualizar as consultas e filtros que tenham o ID diferente, até parace que no provider o gate::before não funciona, mas ao usar a seguinte implementação: 

 $tenant_id = auth()->user()->tenant_id;

        $id = app(ManagerTenant::class)->getTenantIdentify();;

        $tenant_email = app(ManagerTenant::class)->isAdmin();

        //dd($tenant_email);

        if(!$tenant_email) {
            $builder->where('tenant_id',  app(ManagerTenant::class)->getTenantIdentify());
        }  //aqui já estava

       
        if($id != 1){
            $builder->where('tenant_id',  app(ManagerTenant::class)->getTenantIdentify());
        }

O provider funcionar para as consultas dos admin, mas os testes que instaciam os repository não passam:

 $repository = new ConcessaoProediRepository(new PedirConcessaoProedi());
        $response = $repository->findAll();

mas os testes que usam um factory para usar um tenant_id de um objeto criado passam

Rafael Duardo
Manager Carlos Ferreira 04/08/2022

Se quiser compartilhar o código comigo dou uma olhadinha para você;

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

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!