| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| import { formatQuery } from '..'; |
| |
| test('It should be possible to call curly bracket closures which are not wrapped in parentheses', () => { |
| // Test calling closure whose curly brackets are wrapped in parentheses |
| expect( |
| formatQuery( |
| "g.V().branch({ it.get().value('name') }).option('marko', values('age')).option(none, values('name'))", |
| { |
| indentation: 0, |
| maxLineLength: 40, |
| shouldPlaceDotsAfterLineBreaks: false, |
| }, |
| ), |
| ).toBe(`g.V(). |
| branch({ it.get().value('name') }). |
| option('marko', values('age')). |
| option(none, values('name'))`); |
| |
| // Test calling closure which is not the last step |
| expect( |
| formatQuery("g.V().branch{ it.get().value('name') }.option('marko', values('age')).option(none, values('name'))", { |
| indentation: 0, |
| maxLineLength: 35, |
| shouldPlaceDotsAfterLineBreaks: false, |
| }), |
| ).toBe(`g.V(). |
| branch{ it.get().value('name') }. |
| option('marko', values('age')). |
| option(none, values('name'))`); |
| expect( |
| formatQuery("g.V().hasLabel('person').outE('created').count().map{ it.get() * 10 }.path()", { |
| indentation: 0, |
| maxLineLength: 25, |
| shouldPlaceDotsAfterLineBreaks: false, |
| }), |
| ).toBe(`g.V(). |
| hasLabel('person'). |
| outE('created'). |
| count(). |
| map{ it.get() * 10 }. |
| path()`); |
| |
| // Test calling closure which is the last step |
| expect( |
| formatQuery("g.V(4).out().values('name').inject('daniel').map{ it.get().length() }", { |
| indentation: 0, |
| maxLineLength: 30, |
| shouldPlaceDotsAfterLineBreaks: false, |
| }), |
| ).toBe(`g.V(4). |
| out(). |
| values('name'). |
| inject('daniel'). |
| map{ it.get().length() }`); |
| |
| // Test calling closure whose subsequent step should not wrap |
| expect( |
| formatQuery("g.V(4).out().values('name').inject('daniel').map{ it.get().length() }.path()", { |
| indentation: 0, |
| maxLineLength: 80, |
| shouldPlaceDotsAfterLineBreaks: false, |
| }), |
| ).toBe(`g.V(4).out().values('name').inject('daniel').map{ it.get().length() }.path()`); |
| |
| // Test calling consecutive closures |
| expect( |
| formatQuery( |
| "g.V().filter{ it.get().value('name') == 'marko' }.flatMap{ it.get().vertices(OUT, 'created') }.map{ it.get().value('name') }", |
| { |
| indentation: 0, |
| maxLineLength: 50, |
| shouldPlaceDotsAfterLineBreaks: false, |
| }, |
| ), |
| ).toBe(`g.V(). |
| filter{ it.get().value('name') == 'marko' }. |
| flatMap{ it.get().vertices(OUT, 'created') }. |
| map{ it.get().value('name') }`); |
| |
| // Test calling closure by()-modulator |
| expect( |
| formatQuery("g.V().group().by{ it.value('name')[1] }.by('name').next()", { |
| indentation: 0, |
| maxLineLength: 30, |
| shouldPlaceDotsAfterLineBreaks: false, |
| }), |
| ).toBe(`g.V(). |
| group(). |
| by{ it.value('name')[1] }. |
| by('name'). |
| next()`); |
| }); |