Skip to content

Method: lambda$withExactItemNames$0(String)

1: /*
2: * *************************************************************************************************************************************************************
3: *
4: * SteelBlue: DCI User Interfaces
5: * http://tidalwave.it/projects/steelblue
6: *
7: * Copyright (C) 2015 - 2025 by Tidalwave s.a.s. (http://tidalwave.it)
8: *
9: * *************************************************************************************************************************************************************
10: *
11: * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
12: * You may obtain a copy of the License at
13: *
14: * http://www.apache.org/licenses/LICENSE-2.0
15: *
16: * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
17: * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
18: *
19: * *************************************************************************************************************************************************************
20: *
21: * git clone https://bitbucket.org/tidalwave/steelblue-src
22: * git clone https://github.com/tidalwave-it/steelblue-src
23: *
24: * *************************************************************************************************************************************************************
25: */
26: package it.tidalwave.ui.test;
27:
28: import jakarta.annotation.Nonnull;
29: import java.util.stream.Stream;
30: import org.apiguardian.api.API;
31: import it.tidalwave.util.As;
32: import it.tidalwave.role.Aggregate;
33: import lombok.RequiredArgsConstructor;
34: import lombok.ToString;
35: import static org.assertj.core.api.Assertions.assertThat;
36: import static java.util.stream.Collectors.*;
37: import static lombok.AccessLevel.PROTECTED;
38:
39: /***************************************************************************************************************************************************************
40: *
41: * Assertions for the {@link Aggregate} role.
42: * @since 3.0-ALPHA-3
43: * @author Fabrizio Giudici
44: *
45: **************************************************************************************************************************************************************/
46: @API(status = API.Status.EXPERIMENTAL)
47: @RequiredArgsConstructor(staticName = "of", access = PROTECTED) @ToString
48: public class AggregateAssert<T extends As>
49: {
50: /** The type of the aggregate. */
51: @Nonnull
52: protected final Class<T> aggregateType;
53:
54: /** The Aggregate under inspection. */
55: @Nonnull
56: protected final Aggregate<T> aggregate;
57:
58: /***********************************************************************************************************************************************************
59: * Asserts that the {@link Aggregate} under test contains all the items whose names are provided.
60: * @param names the names
61: * @return an object for fluent assertions
62: **********************************************************************************************************************************************************/
63: @Nonnull
64: public ItemsAssert<T> withExactItemNames (@Nonnull final String ... names)
65: {
66: assertThat(aggregate.getNames()).containsExactlyInAnyOrder(names);
67: return ItemsAssert.of(aggregateType, Stream.of(names).map(n -> aggregate.getByName(n).orElseThrow()).collect(toList()));
68: }
69: }