Skip to content

Commit 093a2a8

Browse files
#126 Moved code that is used in tests
1 parent 573753a commit 093a2a8

6 files changed

+45
-64
lines changed

bin/model_generator.dart

-24
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@ import 'dart:io';
33
import 'package:args/args.dart';
44
import 'package:model_generator/config/pubspec_config.dart';
55
import 'package:model_generator/config/yml_generator_config.dart';
6-
import 'package:model_generator/model/field.dart';
76
import 'package:model_generator/model/model/custom_model.dart';
87
import 'package:model_generator/model/model/enum_model.dart';
98
import 'package:model_generator/model/model/json_converter_model.dart';
109
import 'package:model_generator/model/model/model.dart';
1110
import 'package:model_generator/model/model/object_model.dart';
12-
import 'package:model_generator/util/list_extensions.dart';
1311
import 'package:model_generator/writer/drift_model_writer.dart';
1412
import 'package:model_generator/writer/enum_model_writer.dart';
1513
import 'package:model_generator/writer/object_model_writer.dart';
@@ -100,37 +98,15 @@ void writeToFiles(
10098
}
10199
String? content;
102100
if (model is ObjectModel) {
103-
final extendsModelfields = <Field>[];
104-
var extendsModelextends = model.extendsModel;
105-
while (extendsModelextends != null) {
106-
final extendsModelextendsModel = modelGeneratorConfig.models
107-
.firstWhereOrNull(
108-
(element) => element.name == extendsModelextends)
109-
as ObjectModel?; // ignore: avoid_as
110-
extendsModelfields.addAll(extendsModelextendsModel?.fields ?? []);
111-
extendsModelextends = extendsModelextendsModel?.extendsModel;
112-
}
113101
content = ObjectModelWriter(
114102
pubspecConfig,
115103
model,
116-
extendsModelfields,
117104
modelGeneratorConfig,
118105
).write();
119106
if (model.generateDriftTable == true) {
120-
final enumFields = <Field>[];
121-
for (final field
122-
in model.fields.where((element) => !element.ignoreForTable)) {
123-
final fieldModel = modelGeneratorConfig.models
124-
.firstWhereOrNull((element) => element.name == field.type.name);
125-
if (fieldModel is EnumModel) {
126-
enumFields.add(field);
127-
}
128-
}
129107
final tableContent = DriftModelWriter(
130108
pubspecConfig,
131109
model,
132-
extendsModelfields,
133-
enumFields,
134110
modelGeneratorConfig,
135111
).write();
136112
_saveFile(model, tableContent, 'database');

lib/util/field_util.dart

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import 'package:model_generator/config/yml_generator_config.dart';
2+
import 'package:model_generator/model/field.dart';
3+
import 'package:model_generator/model/model/enum_model.dart';
4+
import 'package:model_generator/model/model/object_model.dart';
5+
import 'package:model_generator/util/list_extensions.dart';
6+
7+
class FieldUtil {
8+
static List<Field> getExtendedFields(
9+
ObjectModel model, YmlGeneratorConfig ymlConfig) {
10+
final extendsModelfields = <Field>[];
11+
var extendsModelextends = model.extendsModel;
12+
while (extendsModelextends != null) {
13+
final extendsModelextendsModel = ymlConfig.models.firstWhereOrNull(
14+
(element) => element.name == extendsModelextends)
15+
as ObjectModel?; // ignore: avoid_as
16+
extendsModelfields.addAll(extendsModelextendsModel?.fields ?? []);
17+
extendsModelextends = extendsModelextendsModel?.extendsModel;
18+
}
19+
return extendsModelfields;
20+
}
21+
22+
static List<Field> getEnumFields(
23+
ObjectModel model, YmlGeneratorConfig ymlConfig) {
24+
final enumFields = <Field>[];
25+
for (final field
26+
in model.fields.where((element) => !element.ignoreForTable)) {
27+
final fieldModel = ymlConfig.models
28+
.firstWhereOrNull((element) => element.name == field.type.name);
29+
if (fieldModel is EnumModel) {
30+
enumFields.add(field);
31+
}
32+
}
33+
return enumFields;
34+
}
35+
}

lib/writer/drift_model_writer.dart

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
11
import 'package:model_generator/config/pubspec_config.dart';
22
import 'package:model_generator/config/yml_generator_config.dart';
3-
import 'package:model_generator/model/field.dart';
43
import 'package:model_generator/model/item_type/array_type.dart';
54
import 'package:model_generator/model/item_type/integer_type.dart';
65
import 'package:model_generator/model/item_type/map_type.dart';
76
import 'package:model_generator/model/model/object_model.dart';
87
import 'package:model_generator/util/case_util.dart';
8+
import 'package:model_generator/util/field_util.dart';
99
import 'package:model_generator/util/model_helper.dart';
1010
import 'package:path/path.dart';
1111

1212
class DriftModelWriter {
1313
final PubspecConfig pubspecConfig;
1414
final ObjectModel jsonModel;
15-
final List<Field> extendsFields;
16-
final List<Field> enumFields;
1715
final YmlGeneratorConfig yamlConfig;
1816

1917
const DriftModelWriter(
2018
this.pubspecConfig,
2119
this.jsonModel,
22-
this.extendsFields,
23-
this.enumFields,
2420
this.yamlConfig,
2521
);
2622

2723
String write() {
24+
final extendsFields = FieldUtil.getExtendedFields(jsonModel, yamlConfig);
25+
final enumFields = FieldUtil.getEnumFields(jsonModel, yamlConfig);
26+
2827
final sb = StringBuffer();
2928
final modelDirectory = [
3029
pubspecConfig.projectName,

lib/writer/object_model_writer.dart

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,23 @@ import 'package:model_generator/config/yml_generator_config.dart';
33
import 'package:model_generator/model/field.dart';
44
import 'package:model_generator/model/model/custom_from_to_json_model.dart';
55
import 'package:model_generator/model/model/object_model.dart';
6+
import 'package:model_generator/util/field_util.dart';
67
import 'package:model_generator/util/model_helper.dart';
78

89
class ObjectModelWriter {
910
final PubspecConfig pubspecConfig;
1011
final ObjectModel jsonModel;
11-
final List<Field> extendsFields;
1212
final YmlGeneratorConfig yamlConfig;
1313

1414
const ObjectModelWriter(
1515
this.pubspecConfig,
1616
this.jsonModel,
17-
this.extendsFields,
1817
this.yamlConfig,
1918
);
2019

2120
String write() {
21+
final extendsFields = FieldUtil.getExtendedFields(jsonModel, yamlConfig);
22+
2223
final sb = StringBuffer();
2324

2425
ModelHelper.writeImports(

test/writer/drift_model_writer_test.dart

+2-16
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@ import 'dart:io';
22

33
import 'package:model_generator/config/pubspec_config.dart';
44
import 'package:model_generator/config/yml_generator_config.dart';
5-
import 'package:model_generator/model/field.dart';
6-
import 'package:model_generator/model/model/enum_model.dart';
75
import 'package:model_generator/model/model/object_model.dart';
8-
import 'package:model_generator/util/list_extensions.dart';
96
import 'package:model_generator/writer/drift_model_writer.dart';
107
import 'package:test/test.dart';
118

@@ -25,19 +22,8 @@ void main() {
2522
'The first model in the config file must be an object model and will be validated. The model is ${ymlConfig.models.first.runtimeType}');
2623
}
2724

28-
final enumFields = <
29-
Field>[]; // TODO: Move this to util since we want to test the actual code
30-
for (final field
31-
in jsonModel.fields.where((element) => !element.ignoreForTable)) {
32-
final fieldModel = ymlConfig.models
33-
.firstWhereOrNull((element) => element.name == field.type.name);
34-
if (fieldModel is EnumModel) {
35-
enumFields.add(field);
36-
}
37-
}
38-
39-
final generateActual = DriftModelWriter(pubspecConfig,
40-
ymlConfig.models.first as ObjectModel, [], enumFields, ymlConfig)
25+
final generateActual = DriftModelWriter(
26+
pubspecConfig, ymlConfig.models.first as ObjectModel, ymlConfig)
4127
.write;
4228
if (expected.startsWith('Exception')) {
4329
expect(generateActual, throwsA(isA<Exception>()));

test/writer/object_model_writer_test.dart

+1-17
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ import 'dart:io';
22

33
import 'package:model_generator/config/pubspec_config.dart';
44
import 'package:model_generator/config/yml_generator_config.dart';
5-
import 'package:model_generator/model/field.dart';
65
import 'package:model_generator/model/model/object_model.dart';
7-
import 'package:model_generator/util/list_extensions.dart';
86
import 'package:model_generator/writer/object_model_writer.dart';
97
import 'package:test/test.dart';
108

@@ -24,22 +22,8 @@ void main() {
2422
'The first model in the config file must be an object model and will be validated. The model is ${ymlConfig.models.first.runtimeType}');
2523
}
2624

27-
final extendsModelfields = <
28-
Field>[]; // TODO: Move this to util since we want to test the actual code
29-
var extendsModelextends = jsonModel.extendsModel;
30-
while (extendsModelextends != null) {
31-
final extendsModelextendsModel = ymlConfig.models.firstWhereOrNull(
32-
(element) => element.name == extendsModelextends)
33-
as ObjectModel?; // ignore: avoid_as
34-
extendsModelfields.addAll(extendsModelextendsModel?.fields ?? []);
35-
extendsModelextends = extendsModelextendsModel?.extendsModel;
36-
}
37-
3825
final generateActual = ObjectModelWriter(
39-
pubspecConfig,
40-
ymlConfig.models.first as ObjectModel,
41-
extendsModelfields,
42-
ymlConfig)
26+
pubspecConfig, ymlConfig.models.first as ObjectModel, ymlConfig)
4327
.write;
4428
if (expected.startsWith('Exception')) {
4529
expect(generateActual, throwsA(isA<Exception>()));

0 commit comments

Comments
 (0)