# Class PumpServiceTest

Namespace
  adas_core.Test.Services

Assembly
  adas-core.Test.dll

    [TestFixture]
    public class PumpServiceTest

Inheritance
  object
  PumpServiceTest

Inherited Members
  object.Equals(object)
  object.Equals(object, object)
  object.GetHashCode()
  object.GetType()
  object.MemberwiseClone()
  object.ReferenceEquals(object, object)
  object.ToString()

Extension Methods
  NumberUtils.IsNumber(object)
  NumberUtils.ToDouble(object)
  ObjectUtils.ToStr(object?)

## Methods

### ArchiveByPatientId_InsertsArchive_ThenDeletes()

Verifies that `ArchiveByPatientId` inserts the patient's pump observations into the archive repository and then deletes them, along with their related alarm events and alarm states.

    [Test]
    public Task ArchiveByPatientId_InsertsArchive_ThenDeletes()

#### Returns

Task

### FindLastPumpObservations_ReturnsOrdered()

Verifies that `FindLastPumpObservations` returns pump observations ordered with the most recent first, returning only the specified number of latest entries when the repository provides multiple observations.

    [Test]
    public Task FindLastPumpObservations_ReturnsOrdered()

#### Returns

Task

### GetPaginatedPump_ByPatient_Works()

Verifies that `GetPaginatedPump` returns the correct paginated results when filtering by patient identifier. Ensures the first page contains the most recent observation within the configured time tolerance.

    [Test]
    public Task GetPaginatedPump_ByPatient_Works()

#### Returns

Task

### InsertPumpObservation_Inserts_AndBroadcasts()

Verifies that InsertPumpObservation persists the observation and upserts the corresponding pump state when no existing state is found for the device and there are no active subscribers.

    [Test]
    public Task InsertPumpObservation_Inserts_AndBroadcasts()

#### Returns

Task

### ProcessAlarm_End_RemovesAlarmState()

Verifies that processing a pump observation with `EventPhase.End` removes the corresponding alarm state by calling `RemoveAsync` on the alarm state repository with the matching device, alarm type, and MDC code.

    [Test]
    public Task ProcessAlarm_End_RemovesAlarmState()

#### Returns

Task

### SaveRequest_Converts_SingleObservation_ToList()

Verifies that SaveRequest converts a single `PumpObservation` on an incoming `ApiRequest` into a list with one entry on the request after processing.

    [Test]
    public Task SaveRequest_Converts_SingleObservation_ToList()

#### Returns

Task

### SaveRequest_CreatesPumpState_IfNotExists()

Verifies that `SaveRequest` creates and upserts a new PumpState for the device when no existing pump state is found in the repository.

    [Test]
    public Task SaveRequest_CreatesPumpState_IfNotExists()

#### Returns

Task

### SaveRequest_NoSubscribers_NoBroadcast()

Verifies that SaveRequest does not broadcast a message via the client when there are no active subscribers.

    [Test]
    public Task SaveRequest_NoSubscribers_NoBroadcast()

#### Returns

Task

  A task that completes when the assertion has been executed.

### SaveRequest_ORU_R40_CreatesAlarmEvent()

Verifies that saving a request of type "ORU_R40" creates a PumpAlarmEvent and does not create a PumpObservation, ensuring alarm-phase events are routed to the alarm event store rather than the observation store.

    [Test]
    public Task SaveRequest_ORU_R40_CreatesAlarmEvent()

#### Returns

Task

### SaveRequest_Retention_DeleteOlderDays_CallsRepo()

Verifies that `SaveRequest` invokes the observation repository's `DeleteOlderThanDaysAsync` method with the configured retention value when the retention policy returned for the pump observation is `DeleteOlderDays`.

    [Test]
    public Task SaveRequest_Retention_DeleteOlderDays_CallsRepo()

#### Returns

Task

### SaveRequest_Returns_When_No_Observations()

Verifies that ApiRequest processing does not insert any PumpObservation records when the request is saved without associated observations.

    [Test]
    public Task SaveRequest_Returns_When_No_Observations()

#### Returns

Task

### SaveRequest_SetsExpires_BeforeInsert()

Verifies that Service.SaveRequest sets the `Expires` property of the PumpObservation before persisting it via the repository.

    [Test]
    public Task SaveRequest_SetsExpires_BeforeInsert()

#### Returns

Task

### SaveRequest_UnknownType_DoesNotInsert()

Verifies that `SaveRequest` does not insert a PumpObservation when the Type is an unrecognized value.

    [Test]
    public Task SaveRequest_UnknownType_DoesNotInsert()

#### Returns

Task

### SaveRequest_WithSubscribers_UsesReqLocation_AndSendsBroadcast()

    [Test]
    public Task SaveRequest_WithSubscribers_UsesReqLocation_AndSendsBroadcast()

#### Returns

Task

### Setup()

Initializes the unit test fixture by creating mock repositories, services, and a mocked HttpContext with a test claims principal, then instantiates the PumpService under test using the configured API settings (5-second pump expiration, zero pump messages disabled). Pass-through mappings are configured for ICalculatedObservationsService, IConfigPumpsService, and IConfigUnitsService so that supplied pump observations are returned unchanged.

    [SetUp]
    public void Setup()

### UpdateManyObjectId_UpdatesObs_Alarms_States()

Verifies that `UpdateManyObjectId` correctly updates the patient identifier across observations, alarms, and alarm state repositories.

    [Test]
    public Task UpdateManyObjectId_UpdatesObs_Alarms_States()

#### Returns

Task

  A task representing the asynchronous test execution.