test_class.declarator: eventFactory =
              TestEventFactory.newInstance(ProjectionTest.class)
test_class.modifier: private static final
test_class.original_string: private static final TestEventFactory eventFactory =
              TestEventFactory.newInstance(ProjectionTest.class);
test_class.type: TestEventFactory
test_class.var_name: eventFactory
test_class.declarator: projection
test_class.modifier: private
test_class.original_string: private SavingProjection projection;
test_class.type: SavingProjection
test_class.var_name: projection
test_class.file: server/src/test/java/io/spine/server/projection/ProjectionTest.java
test_class.identifier: ProjectionTest
test_case.body: @Test
      @DisplayName("expose `play events` operation to package")
      void exposePlayingEvents() {
          StringImported stringImported = StringImported
                  .newBuilder()
                  .setValue("eins zwei drei")
                  .build();
          Int32Imported integerImported = Int32Imported
                  .newBuilder()
                  .setValue(123)
                  .build();
          Version nextVersion = Versions.increment(projection.version());
          Event e1 = eventFactory.createEvent(stringImported, nextVersion);
          Event e2 = eventFactory.createEvent(integerImported, Versions.increment(nextVersion));
  
          boolean projectionChanged = Projection.playOn(projection, ImmutableList.of(e1, e2));
  
          String projectionState = projection.state().getValue();
          assertTrue(projectionChanged);
          assertTrue(projectionState.contains(stringImported.getValue()));
          assertTrue(projectionState.contains(String.valueOf(integerImported.getValue())));
      }
test_case.class_method_signature: ProjectionTest.exposePlayingEvents()
test_case.full_signature: @Test @DisplayName("expose `play events` operation to package") void exposePlayingEvents()
test_case.identifier: exposePlayingEvents
test_case.invocations: build setValue newBuilder build setValue newBuilder increment version createEvent createEvent increment playOn of getValue state assertTrue assertTrue contains getValue assertTrue contains valueOf getValue
test_case.modifiers: @Test @DisplayName("expose `play events` operation to package")
test_case.parameters: ()
test_case.return: void
test_case.signature: void exposePlayingEvents()
focal_class.file: server/src/main/java/io/spine/server/projection/Projection.java
focal_class.identifier: Projection
focal_class.interfaces: implements EventPlayer, EventSubscriber,
                     HasVersionColumn<I, M>, HasLifecycleColumns<I, M>
focal_class.class_method_signature: Projection.Projection()
focal_class.full_signature: protected  Projection()
focal_class.identifier: Projection
focal_class.modifiers: protected
focal_class.parameters: ()
focal_class.signature:  Projection()
focal_class.class_method_signature: Projection.Projection(I id)
focal_class.full_signature: protected  Projection(I id)
focal_class.identifier: Projection
focal_class.modifiers: protected
focal_class.parameters: (I id)
focal_class.signature:  Projection(I id)
focal_class.class_method_signature: Projection.thisClass()
focal_class.full_signature: @Override protected ProjectionClass<?> thisClass()
focal_class.identifier: thisClass
focal_class.modifiers: @Override protected
focal_class.parameters: ()
focal_class.return: ProjectionClass<?>
focal_class.signature: ProjectionClass<?> thisClass()
focal_class.class_method_signature: Projection.modelClass()
focal_class.full_signature: @Internal @Override protected ProjectionClass<?> modelClass()
focal_class.identifier: modelClass
focal_class.modifiers: @Internal @Override protected
focal_class.parameters: ()
focal_class.return: ProjectionClass<?>
focal_class.signature: ProjectionClass<?> modelClass()
focal_class.class_method_signature: Projection.builder()
focal_class.full_signature: @Override protected final B builder()
focal_class.identifier: builder
focal_class.modifiers: @Override protected final
focal_class.parameters: ()
focal_class.return: B
focal_class.signature: B builder()
focal_class.class_method_signature: Projection.missingTxMessage()
focal_class.full_signature: @Override protected String missingTxMessage()
focal_class.identifier: missingTxMessage
focal_class.modifiers: @Override protected
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String missingTxMessage()
focal_class.class_method_signature: Projection.playOn(Projection<?, ?, ?> projection, Iterable<Event> events)
focal_class.full_signature: static boolean playOn(Projection<?, ?, ?> projection, Iterable<Event> events)
focal_class.identifier: playOn
focal_class.modifiers: static
focal_class.parameters: (Projection<?, ?, ?> projection, Iterable<Event> events)
focal_class.return: boolean
focal_class.signature: boolean playOn(Projection<?, ?, ?> projection, Iterable<Event> events)
focal_class.class_method_signature: Projection.apply(EventEnvelope event)
focal_class.full_signature:  DispatchOutcome apply(EventEnvelope event)
focal_class.identifier: apply
focal_class.parameters: (EventEnvelope event)
focal_class.return: DispatchOutcome
focal_class.signature: DispatchOutcome apply(EventEnvelope event)
focal_class.class_method_signature: Projection.unhandledEvent(EventEnvelope event)
focal_class.full_signature: private DispatchOutcome unhandledEvent(EventEnvelope event)
focal_class.identifier: unhandledEvent
focal_class.modifiers: private
focal_class.parameters: (EventEnvelope event)
focal_class.return: DispatchOutcome
focal_class.signature: DispatchOutcome unhandledEvent(EventEnvelope event)
focal_class.class_method_signature: Projection.play(Iterable<Event> events)
focal_class.full_signature: @Override public BatchDispatchOutcome play(Iterable<Event> events)
focal_class.identifier: play
focal_class.modifiers: @Override public
focal_class.parameters: (Iterable<Event> events)
focal_class.return: BatchDispatchOutcome
focal_class.signature: BatchDispatchOutcome play(Iterable<Event> events)
focal_class.superclass: extends TransactionalEntity<I, M, B>
focal_method.body: static boolean playOn(Projection<?, ?, ?> projection, Iterable<Event> events) {
          ProjectionTransaction<?, ?, ?> tx = ProjectionTransaction.start(projection);
          projection.play(events);
          tx.commitIfActive();
          return projection.changed();
      }
focal_method.class_method_signature: Projection.playOn(Projection<?, ?, ?> projection, Iterable<Event> events)
focal_method.full_signature: static boolean playOn(Projection<?, ?, ?> projection, Iterable<Event> events)
focal_method.identifier: playOn
focal_method.invocations: start play commitIfActive changed
focal_method.modifiers: static
focal_method.parameters: (Projection<?, ?, ?> projection, Iterable<Event> events)
focal_method.return: boolean
focal_method.signature: boolean playOn(Projection<?, ?, ?> projection, Iterable<Event> events)