Skip to content

Commit

Permalink
[v1.0.11] fixes #7
Browse files Browse the repository at this point in the history
  • Loading branch information
sassman committed May 20, 2019
1 parent 1cbc9bd commit ae09c15
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 9 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog

## 1.0.11

- fixed #7 strings with default value null came out as "null"

## 1.0.10

- small improvement on DTO Validator template
Expand Down
7 changes: 5 additions & 2 deletions lib/generator.dart
Expand Up @@ -41,7 +41,7 @@ class FieldCodeArtifact {
bool isBoolean = false;
bool isDto = false;
bool get isNullable => field.nullable;
bool get hasDefault => !(field.defaultValue is NoDefault);
bool get hasDefault => !(field.defaultValue is NoDefaultValue);
dynamic get defaultValue => _toValue(field.defaultValue);

FieldCodeArtifact(this.field) {
Expand Down Expand Up @@ -81,10 +81,13 @@ class FieldCodeArtifact {
}

_toValue(v) {
if (isNull(v)) return NullValue().toString();
if (isString) return StringValue(v).toString();
if (v == null) return NullValue().toString();
return v;
}

static bool isNull(v) =>
v == null || v.toString().toLowerCase() == NullValue().toString();
}

class NullValue {
Expand Down
5 changes: 3 additions & 2 deletions lib/parser.dart
Expand Up @@ -171,8 +171,9 @@ class OpenApiParser {
minimum: typeDef['minimum'],
maximum: typeDef['maximum'],
enumValues: typeDef['enum'],
defaultValue:
typeDef.containsKey('default') ? typeDef['default'] : NoDefault(),
defaultValue: typeDef.containsKey('default')
? typeDef['default']
: NoDefaultValue(),
nullable: typeDef['nullable'] ?? false);

return field;
Expand Down
4 changes: 2 additions & 2 deletions lib/types.dart
Expand Up @@ -60,8 +60,6 @@ class Field {
defaultValue = defaultValue;
}

class NoDefault {}

class SchemaType {
final String key;
final String name;
Expand Down Expand Up @@ -104,3 +102,5 @@ class ContainerType implements SchemaType {
@override
Field getField(String name) => _innerType.getField(name);
}

class NoDefaultValue {}
2 changes: 1 addition & 1 deletion pubspec.yaml
@@ -1,6 +1,6 @@
name: valgene_cli
description: Valgene (Validation Generator) generates validator and Dto boiler plate code from your OpenAPI specs.
version: 1.0.10
version: 1.0.11
homepage: https://github.com/valgene/valgene-cli
author: Sven Assmann <sven@d34dl0ck.me>

Expand Down
13 changes: 11 additions & 2 deletions test/generator_test.dart
Expand Up @@ -44,6 +44,15 @@ void main() {
expect(a.hasDefault, isTrue);
});

test("string type with default value of null", () {
final a = FieldCodeArtifact(Field(
name: 'foo', type: OpenApiPrimitives.string, defaultValue: 'null'));

expect(a.isString, isTrue);
expect(a.defaultValue.toString(), equals('null'));
expect(a.hasDefault, isTrue);
});

test("boolean", () {
final a = FieldCodeArtifact(Field(
name: 'foo', type: OpenApiPrimitives.boolean, defaultValue: false));
Expand Down Expand Up @@ -75,10 +84,10 @@ void main() {
final a = FieldCodeArtifact(Field(
name: 'foo',
type: OpenApiPrimitives.number,
defaultValue: NoDefault()));
defaultValue: NoDefaultValue()));

expect(a.isNumber, isTrue);
expect(a.defaultValue, TypeMatcher<NoDefault>());
expect(a.defaultValue, TypeMatcher<NoDefaultValue>());
expect(a.hasDefault, isFalse);
});
});
Expand Down

0 comments on commit ae09c15

Please sign in to comment.