1- import { filterExperiments , Operator } from '.'
1+ import { splitExperimentsByFilters , Operator } from '.'
22import { buildMetricOrParamPath } from '../../columns/paths'
33import { Experiment , ColumnType } from '../../webview/contract'
44
5- describe ( 'filterExperiments ' , ( ) => {
5+ describe ( 'splitExperimentsByFilters ' , ( ) => {
66 const paramsFile = 'params.yaml'
77 const experiments = [
88 {
@@ -41,7 +41,10 @@ describe('filterExperiments', () => {
4141 ] as unknown as Experiment [ ]
4242
4343 it ( 'should not filter experiments if they do not have the provided value (for queued experiments)' , ( ) => {
44- const unfilteredQueuedExperiments = filterExperiments (
44+ const {
45+ unfiltered : unfilteredQueuedExperiments ,
46+ filtered : filteredQueuedExperiments
47+ } = splitExperimentsByFilters (
4548 [
4649 {
4750 operator : Operator . IS_FALSE ,
@@ -67,15 +70,19 @@ describe('filterExperiments', () => {
6770 expect (
6871 unfilteredQueuedExperiments . map ( experiment => experiment . id )
6972 ) . toStrictEqual ( [ 1 , 2 , 3 ] )
73+ expect (
74+ filteredQueuedExperiments . map ( experiment => experiment . id )
75+ ) . toStrictEqual ( [ ] )
7076 } )
7177
72- it ( 'should return the original experiments if no filters are provided' , ( ) => {
73- const unFilteredExperiments = filterExperiments ( [ ] , experiments )
74- expect ( unFilteredExperiments ) . toStrictEqual ( experiments )
78+ it ( 'should mark the original experiments as unfiltered if no filters are provided' , ( ) => {
79+ const { filtered, unfiltered } = splitExperimentsByFilters ( [ ] , experiments )
80+ expect ( unfiltered ) . toStrictEqual ( experiments )
81+ expect ( filtered ) . toStrictEqual ( [ ] )
7582 } )
7683
77- it ( 'should filter the experiments by a given filter' , ( ) => {
78- const filteredExperiments = filterExperiments (
84+ it ( 'should split the experiments by a given filter' , ( ) => {
85+ const { filtered , unfiltered } = splitExperimentsByFilters (
7986 [
8087 {
8188 operator : Operator . GREATER_THAN ,
@@ -85,13 +92,12 @@ describe('filterExperiments', () => {
8592 ] ,
8693 experiments
8794 )
88- expect ( filteredExperiments . map ( experiment => experiment . id ) ) . toStrictEqual ( [
89- 3
90- ] )
95+ expect ( filtered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 1 , 2 ] )
96+ expect ( unfiltered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 3 ] )
9197 } )
9298
93- it ( 'should filter the experiments by an equals filter' , ( ) => {
94- const filteredExperiments = filterExperiments (
99+ it ( 'should split the experiments by an equals filter' , ( ) => {
100+ const { filtered , unfiltered } = splitExperimentsByFilters (
95101 [
96102 {
97103 operator : Operator . EQUAL ,
@@ -101,13 +107,12 @@ describe('filterExperiments', () => {
101107 ] ,
102108 experiments
103109 )
104- expect ( filteredExperiments . map ( experiment => experiment . id ) ) . toStrictEqual ( [
105- 2
106- ] )
110+ expect ( filtered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 1 , 3 ] )
111+ expect ( unfiltered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 2 ] )
107112 } )
108113
109- it ( 'should filter the experiments by a not equals filter' , ( ) => {
110- const filteredExperiments = filterExperiments (
114+ it ( 'should split the experiments by a not equals filter' , ( ) => {
115+ const { filtered , unfiltered } = splitExperimentsByFilters (
111116 [
112117 {
113118 operator : Operator . NOT_EQUAL ,
@@ -117,13 +122,12 @@ describe('filterExperiments', () => {
117122 ] ,
118123 experiments
119124 )
120- expect ( filteredExperiments . map ( experiment => experiment . id ) ) . toStrictEqual ( [
121- 1 , 3
122- ] )
125+ expect ( filtered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 2 ] )
126+ expect ( unfiltered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 1 , 3 ] )
123127 } )
124128
125- it ( 'should filter the experiments by multiple filters' , ( ) => {
126- const filteredExperiments = filterExperiments (
129+ it ( 'should split the experiments by multiple filters' , ( ) => {
130+ const { filtered , unfiltered } = splitExperimentsByFilters (
127131 [
128132 {
129133 operator : Operator . GREATER_THAN ,
@@ -138,13 +142,12 @@ describe('filterExperiments', () => {
138142 ] ,
139143 experiments
140144 )
141- expect ( filteredExperiments . map ( experiment => experiment . id ) ) . toStrictEqual ( [
142- 1 , 2
143- ] )
145+ expect ( filtered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 3 ] )
146+ expect ( unfiltered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 1 , 2 ] )
144147 } )
145148
146- it ( 'should filter the experiments by multiple filters on multiple params' , ( ) => {
147- const filteredExperiments = filterExperiments (
149+ it ( 'should split the experiments by multiple filters on multiple params' , ( ) => {
150+ const { filtered , unfiltered } = splitExperimentsByFilters (
148151 [
149152 {
150153 operator : Operator . GREATER_THAN_OR_EQUAL ,
@@ -164,11 +167,12 @@ describe('filterExperiments', () => {
164167 ] ,
165168 experiments
166169 )
167- expect ( filteredExperiments ) . toStrictEqual ( [ ] )
170+ expect ( filtered ) . toStrictEqual ( experiments )
171+ expect ( unfiltered ) . toStrictEqual ( [ ] )
168172 } )
169173
170- it ( 'should filter the experiments using string contains' , ( ) => {
171- const experimentsWithText = filterExperiments (
174+ it ( 'should split the experiments using string contains' , ( ) => {
175+ const { filtered , unfiltered } = splitExperimentsByFilters (
172176 [
173177 {
174178 operator : Operator . CONTAINS ,
@@ -178,13 +182,12 @@ describe('filterExperiments', () => {
178182 ] ,
179183 experiments
180184 )
181- expect ( experimentsWithText . map ( experiment => experiment . id ) ) . toStrictEqual ( [
182- 1
183- ] )
185+ expect ( filtered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 2 , 3 ] )
186+ expect ( unfiltered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 1 ] )
184187 } )
185188
186- it ( 'should filter all experiments if given a numeric column to filter with string contains' , ( ) => {
187- const noExperiments = filterExperiments (
189+ it ( 'should split all experiments if given a numeric column to filter with string contains' , ( ) => {
190+ const { filtered , unfiltered } = splitExperimentsByFilters (
188191 [
189192 {
190193 operator : Operator . CONTAINS ,
@@ -194,11 +197,12 @@ describe('filterExperiments', () => {
194197 ] ,
195198 experiments
196199 )
197- expect ( noExperiments ) . toStrictEqual ( [ ] )
200+ expect ( filtered ) . toStrictEqual ( experiments )
201+ expect ( unfiltered ) . toStrictEqual ( [ ] )
198202 } )
199203
200- it ( 'should not filter any experiments if given a numeric column to filter with string does not contain' , ( ) => {
201- const unfilteredExperiments = filterExperiments (
204+ it ( 'should split the experiments when given a numeric column to filter with string does not contain' , ( ) => {
205+ const { filtered , unfiltered } = splitExperimentsByFilters (
202206 [
203207 {
204208 operator : Operator . NOT_CONTAINS ,
@@ -208,11 +212,12 @@ describe('filterExperiments', () => {
208212 ] ,
209213 experiments
210214 )
211- expect ( unfilteredExperiments ) . toStrictEqual ( experiments )
215+ expect ( filtered ) . toStrictEqual ( [ ] )
216+ expect ( unfiltered ) . toStrictEqual ( experiments )
212217 } )
213218
214- it ( 'should filter the experiments using string does not contain' , ( ) => {
215- const experimentsWithoutText = filterExperiments (
219+ it ( 'should split the experiments using string does not contain' , ( ) => {
220+ const { filtered , unfiltered } = splitExperimentsByFilters (
216221 [
217222 {
218223 operator : Operator . NOT_CONTAINS ,
@@ -222,13 +227,12 @@ describe('filterExperiments', () => {
222227 ] ,
223228 experiments
224229 )
225- expect (
226- experimentsWithoutText . map ( experiment => experiment . id )
227- ) . toStrictEqual ( [ 2 , 3 ] )
230+ expect ( filtered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 1 ] )
231+ expect ( unfiltered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 2 , 3 ] )
228232 } )
229233
230- it ( 'should filter the experiments using boolean is true' , ( ) => {
231- const experimentsWithTrueBool = filterExperiments (
234+ it ( 'should split the experiments using boolean is true' , ( ) => {
235+ const { filtered , unfiltered } = splitExperimentsByFilters (
232236 [
233237 {
234238 operator : Operator . IS_TRUE ,
@@ -238,13 +242,12 @@ describe('filterExperiments', () => {
238242 ] ,
239243 experiments
240244 )
241- expect (
242- experimentsWithTrueBool . map ( experiment => experiment . id )
243- ) . toStrictEqual ( [ 1 ] )
245+ expect ( filtered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 2 , 3 ] )
246+ expect ( unfiltered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 1 ] )
244247 } )
245248
246- it ( 'should filter the experiments using boolean is false' , ( ) => {
247- const experimentsWithFalseBool = filterExperiments (
249+ it ( 'should split the experiments using boolean is false' , ( ) => {
250+ const { filtered , unfiltered } = splitExperimentsByFilters (
248251 [
249252 {
250253 operator : Operator . IS_FALSE ,
@@ -254,8 +257,7 @@ describe('filterExperiments', () => {
254257 ] ,
255258 experiments
256259 )
257- expect (
258- experimentsWithFalseBool . map ( experiment => experiment . id )
259- ) . toStrictEqual ( [ 2 ] )
260+ expect ( filtered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 1 , 3 ] )
261+ expect ( unfiltered . map ( experiment => experiment . id ) ) . toStrictEqual ( [ 2 ] )
260262 } )
261263} )
0 commit comments