blob: 45d7508466f87f2d98a119e1da26c8df545f5242 [file] [log] [blame]
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:test/test.dart';
import 'package:yaml_edit/yaml_edit.dart';
import 'test_utils.dart';
/// This test suite is a temporary measure until we are able to better handle
/// aliases.
void main() {
group('list ', () {
test('removing an alias anchor results in AliasError', () {
final doc = YamlEditor('''
- &SS Sammy Sosa
- *SS
''');
expect(() => doc.remove([0]), throwsAliasError);
});
test('removing an alias reference results in AliasError', () {
final doc = YamlEditor('''
- &SS Sammy Sosa
- *SS
''');
expect(() => doc.remove([1]), throwsAliasError);
});
test('it is okay to remove a non-alias node', () {
final doc = YamlEditor('''
- &SS Sammy Sosa
- *SS
- Sammy Sosa
''');
doc.remove([2]);
expect(doc.toString(), equals('''
- &SS Sammy Sosa
- *SS
'''));
});
});
group('map', () {
test('removing an alias anchor value results in AliasError', () {
final doc = YamlEditor('''
a: &SS Sammy Sosa
b: *SS
''');
expect(() => doc.remove(['a']), throwsAliasError);
});
test('removing an alias reference value results in AliasError', () {
final doc = YamlEditor('''
a: &SS Sammy Sosa
b: *SS
''');
expect(() => doc.remove(['b']), throwsAliasError);
});
test('removing an alias anchor key results in AliasError', () {
final doc = YamlEditor('''
&SS Sammy Sosa: a
b: *SS
''');
expect(() => doc.remove(['Sammy Sosa']), throwsAliasError);
});
test('removing an alias reference key results in AliasError', () {
final doc = YamlEditor('''
a: &SS Sammy Sosa
*SS : b
''');
expect(() => doc.remove(['Sammy Sosa']), throwsAliasError);
});
test('it is okay to remove a non-alias node', () {
final doc = YamlEditor('''
a: &SS Sammy Sosa
b: *SS
c: Sammy Sosa
''');
doc.remove(['c']);
expect(doc.toString(), equals('''
a: &SS Sammy Sosa
b: *SS
'''));
});
});
group('nested alias', () {
test('nested list alias anchors are detected too', () {
final doc = YamlEditor('''
-
- &SS Sammy Sosa
- *SS
''');
expect(() => doc.remove([0]), throwsAliasError);
});
test('nested list alias references are detected too', () {
final doc = YamlEditor('''
- &SS Sammy Sosa
-
- *SS
''');
expect(() => doc.remove([1]), throwsAliasError);
});
test('removing nested map alias anchor results in AliasError', () {
final doc = YamlEditor('''
a:
c: &SS Sammy Sosa
b: *SS
''');
expect(() => doc.remove(['a']), throwsAliasError);
});
test('removing nested map alias reference results in AliasError', () {
final doc = YamlEditor('''
a: &SS Sammy Sosa
b:
c: *SS
''');
expect(() => doc.remove(['b']), throwsAliasError);
});
});
}