1717
1818import io .qameta .allure .AllureLifecycle ;
1919import io .qameta .allure .attachment .http .HttpRequestAttachment ;
20+ import io .qameta .allure .model .Status ;
21+ import io .qameta .allure .model .StepResult ;
2022import io .qameta .allure .test .AllureFeatures ;
2123import org .junit .jupiter .api .Test ;
24+ import org .mockito .ArgumentCaptor ;
2225
2326import java .nio .charset .StandardCharsets ;
27+ import java .util .function .Consumer ;
2428
2529import static io .qameta .allure .attachment .testdata .TestData .randomAttachmentContent ;
2630import static io .qameta .allure .attachment .testdata .TestData .randomHttpRequestAttachment ;
31+ import static org .mockito .ArgumentMatchers .any ;
2732import static org .mockito .ArgumentMatchers .eq ;
2833import static org .mockito .Mockito .doReturn ;
2934import static org .mockito .Mockito .mock ;
3540 */
3641class DefaultAttachmentProcessorTest {
3742
38- @ SuppressWarnings ("unchecked" )
3943 @ AllureFeatures .Attachments
4044 @ Test
4145 void shouldProcessAttachments () {
4246 final HttpRequestAttachment attachment = randomHttpRequestAttachment ();
4347 final AllureLifecycle lifecycle = mock (AllureLifecycle .class );
44- final AttachmentRenderer <AttachmentData > renderer = mock (AttachmentRenderer . class );
48+ final AttachmentRenderer <AttachmentData > renderer = mock ();
4549 final AttachmentContent content = randomAttachmentContent ();
4650 doReturn (content )
4751 .when (renderer )
@@ -59,4 +63,62 @@ void shouldProcessAttachments() {
5963 eq (content .getContent ().getBytes (StandardCharsets .UTF_8 ))
6064 );
6165 }
66+
67+ @ AllureFeatures .Attachments
68+ @ Test
69+ void shouldProcessWrapAttachmentsWithMetaSteps () {
70+ final HttpRequestAttachment attachment = randomHttpRequestAttachment ();
71+ final AllureLifecycle lifecycle = mock (AllureLifecycle .class );
72+ final AttachmentRenderer <AttachmentData > renderer = mock ();
73+ final AttachmentContent content = randomAttachmentContent ();
74+ doReturn (content )
75+ .when (renderer )
76+ .render (attachment );
77+
78+ new DefaultAttachmentProcessor (lifecycle )
79+ .addAttachment (attachment , renderer );
80+
81+ verify (renderer , times (1 )).render (attachment );
82+
83+ final ArgumentCaptor <String > stepUuidCaptor = ArgumentCaptor .captor ();
84+
85+ verify (lifecycle , times (1 ))
86+ .startStep (
87+ stepUuidCaptor .capture (),
88+ eq (new StepResult ().setName (attachment .getName ()))
89+ );
90+
91+ verify (lifecycle , times (1 ))
92+ .addAttachment (
93+ eq (attachment .getName ()),
94+ eq (content .getContentType ()),
95+ eq (content .getFileExtension ()),
96+ eq (content .getContent ().getBytes (StandardCharsets .UTF_8 ))
97+ );
98+
99+ final ArgumentCaptor <Consumer <StepResult >> consumerArgumentCaptor = ArgumentCaptor .captor ();
100+
101+ verify (lifecycle , times (1 ))
102+ .updateStep (
103+ eq (stepUuidCaptor .getValue ()),
104+ consumerArgumentCaptor .capture ()
105+ );
106+
107+ final StepResult stepResultCheck = mock ();
108+
109+ doReturn (stepResultCheck )
110+ .when (stepResultCheck )
111+ .setStatus (any ());
112+
113+ consumerArgumentCaptor .getValue ().accept (stepResultCheck );
114+
115+ verify (stepResultCheck , times (1 ))
116+ .setStatus (Status .PASSED );
117+
118+ verify (lifecycle , times (1 ))
119+ .stopStep (
120+ eq (stepUuidCaptor .getValue ())
121+ );
122+ }
123+
62124}
0 commit comments