001/*-------------------------------------------------------------------------+
002|                                                                          |
003| Copyright (c) 2009-2019 CQSE GmbH                                        |
004|                                                                          |
005+-------------------------------------------------------------------------*/
006package org.conqat.engine.index.shared;
007
008import org.conqat.engine.commons.findings.TestDetachedFindingBuilder;
009import org.conqat.lib.commons.assessment.ETrafficLightColor;
010
011/**
012 * Builds {@link IndexFinding}s for test purposes.
013 */
014public class TestIndexFindingBuilder {
015
016        private TestDetachedFindingBuilder detachedFinding = TestDetachedFindingBuilder.someDetachedFinding();
017        private long analysisTimestamp;
018
019        /**
020         * @return a builder creating some fresh {@link IndexFinding} whose fields are
021         *         all initialized with valid values.
022         */
023        public static TestIndexFindingBuilder someIndexFinding() {
024                TestIndexFindingBuilder someIndexFinding = new TestIndexFindingBuilder();
025                return someIndexFinding.withAnalysisTimestamp(123456L);
026        }
027
028        /**
029         * Ensures that the {@link IndexFinding} is {@linkplain #build() built} with the
030         * given {@linkplain IndexFinding#getAnalysisTimestamp() analysis timestamp}.
031         */
032        public TestIndexFindingBuilder withAnalysisTimestamp(long analysisTimestamp) {
033                this.analysisTimestamp = analysisTimestamp;
034                return this;
035        }
036
037        /**
038         * Ensures that the {@link IndexFinding} is {@linkplain #build() built} with the
039         * given {@linkplain IndexFinding#getAssessment assessment}.
040         */
041        public TestIndexFindingBuilder withAssessment(ETrafficLightColor assessment) {
042                detachedFinding.withAssessment(assessment);
043                return this;
044        }
045
046        /**
047         * Builds the {@link IndexFinding}.
048         *
049         * @return {@link IndexFinding} whose fields are all initialized with arbitrary
050         *         but valid values, unless overwritten using this builder's methods.
051         */
052        public IndexFinding build() {
053                return new IndexFinding(detachedFinding.build(), analysisTimestamp);
054        }
055}