package com.flextrade.jfixture.requests.enrichers;
import com.flextrade.jfixture.annotations.Range;
import com.flextrade.jfixture.requests.RangeRequest;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
public class TestRangeRequestEnricher {
private RangeRequestEnricher enricher;
private final Object originalRequest = new Object();
@Range(min = 10, max = 100)
public Object rangeAnnotatedField;
@Before
public void initialise() {
this.enricher = new RangeRequestEnricher();
}
@Test
public void range_annotation_returns_range_request() throws NoSuchFieldException {
Range rangeAnnotation = getRangeAnnotation();
RangeRequest enrichedRequest = (RangeRequest)this.enricher.enrich(this.originalRequest, rangeAnnotation);
assertSame(this.originalRequest, enrichedRequest.getRequest());
assertEquals(10L, enrichedRequest.getMin());
assertEquals(100L, enrichedRequest.getMax());
}
@Test
public void non_range_annotation_returns_null() throws NoSuchMethodException {
Before beforeAnnotation = getBeforeAnnotation();
Object enrichedRequest = this.enricher.enrich(this.originalRequest, beforeAnnotation);
assertNull(enrichedRequest);
}
private Range getRangeAnnotation() throws NoSuchFieldException {
return this.getClass().getField("rangeAnnotatedField").getAnnotation(Range.class);
}
private Before getBeforeAnnotation() throws NoSuchMethodException {
return this.getClass().getMethod("initialise").getAnnotation(Before.class);
}
}