tree d2e6b3846552a5cbec055ed537e7b6038980bc00
parent 0a5f182b4155d34322d06946bebd66667f368eb5
author Jacek Centkowski <geminica.programs@gmail.com> 1729582352 +0200
committer Jacek Centkowski <geminica.programs@gmail.com> 1730645685 +0100

Add `getAllFilesApproved` and `getFileOwners` functions to service

Introduce `getAllFilesApproved` function to determine if file owners
should be obtained from plugin and displayed to the user. It returns:
* `undefined` for all cases when file owners are not relevant to the
  change in question: change is not viewed by logged user, change is
  abandoned or merged and finally change has no `Owner-Approval`
  submit requirement
* `true` when `Owner-Approval` is `SATISFIED` and `false` otherwise

Introduce the `getFileOwners` function to the `OwnersService` that
returns:
* `undefined` when `getAllFilesApproved` returns `undefined` or `true`
  as there is no point for calling plugin REST api for not relevant or
  already approved change
* files owners from plugin REST API

New functions are covered with unit tests (add `deepEqual` function to
compare objects and their content - it is copied from Gerrit utils).

Bug: Issue 373151160
Change-Id: Ie4cef9addc2af6963aea9000f195d19665e35dfa
