Skip to content

Commit 291c49a

Browse files
committed
fix Issue500_Test1
1 parent 264c650 commit 291c49a

File tree

5 files changed

+179
-178
lines changed

5 files changed

+179
-178
lines changed

src/Magicodes.ExporterAndImporter.Tests/Issue500_Tests.cs

Lines changed: 7 additions & 176 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
using Magicodes.ExporterAndImporter.Core;
1+
using DocumentFormat.OpenXml.Bibliography;
2+
using Magicodes.ExporterAndImporter.Core;
23
using Magicodes.ExporterAndImporter.Core.Extension;
34
using Magicodes.ExporterAndImporter.Core.Models;
45
using Magicodes.ExporterAndImporter.Excel;
56
using Magicodes.ExporterAndImporter.Tests.Models.Import;
7+
using Magicodes.IE.Tests.Models.Import;
68
using Newtonsoft.Json;
79
using OfficeOpenXml;
810
using Shouldly;
@@ -16,168 +18,6 @@
1618

1719
namespace Magicodes.ExporterAndImporter.Tests
1820
{
19-
/// <summary>
20-
/// 导入学生数据Dto
21-
/// IsLabelingError:是否标注数据错误
22-
/// </summary>
23-
[ExcelImporter(IsLabelingError = true, IsOnlyErrorRows = true, HeaderRowIndex = 2)]
24-
public class ImportWithOnlyError
25-
{
26-
27-
/// <summary>
28-
/// 序号
29-
/// </summary>
30-
[ImporterHeader(Name = "序号")]
31-
public long SerialNumber { get; set; }
32-
33-
/// <summary>
34-
/// 学籍号
35-
/// </summary>
36-
[ImporterHeader(Name = "学籍号", IsAllowRepeat = false)]
37-
[MaxLength(30, ErrorMessage = "学籍号字数超出最大限制,请修改!")]
38-
public string StudentCode { get; set; }
39-
40-
/// <summary>
41-
/// 姓名
42-
/// </summary>
43-
[ImporterHeader(Name = "姓名")]
44-
[Required(ErrorMessage = "学生姓名不能为空")]
45-
[MaxLength(50, ErrorMessage = "名称字数超出最大限制,请修改!")]
46-
public string Name { get; set; }
47-
48-
/// <summary>
49-
/// 身份证号码
50-
/// </summary>
51-
[ImporterHeader(Name = "身份证号", IsAllowRepeat = false)]
52-
[Required(ErrorMessage = "身份证号不能为空")]
53-
[MaxLength(18, ErrorMessage = "身份证字数超出最大限制,请修改!")]
54-
public string IdCard { get; set; }
55-
56-
/// <summary>
57-
/// 性别
58-
/// </summary>
59-
[ImporterHeader(Name = "性别")]
60-
[Required(ErrorMessage = "性别不能为空")]
61-
[ValueMapping("男", 0)]
62-
[ValueMapping("女", 1)]
63-
public Genders Gender { get; set; }
64-
65-
/// <summary>
66-
/// 家庭地址
67-
/// </summary>
68-
[ImporterHeader(Name = "家庭住址")]
69-
[Required(ErrorMessage = "家庭地址不能为空")]
70-
[MaxLength(200, ErrorMessage = "家庭地址字数超出最大限制,请修改!")]
71-
public string Address { get; set; }
72-
73-
/// <summary>
74-
/// 家长姓名
75-
/// </summary>
76-
[ImporterHeader(Name = "家长姓名")]
77-
[Required(ErrorMessage = "家长姓名不能为空")]
78-
[MaxLength(50, ErrorMessage = "家长姓名数超出最大限制,请修改!")]
79-
public string Guardian { get; set; }
80-
81-
/// <summary>
82-
/// 家长联系电话
83-
/// </summary>
84-
[ImporterHeader(Name = "家长联系电话")]
85-
[MaxLength(20, ErrorMessage = "家长联系电话字数超出最大限制,请修改!")]
86-
public string GuardianPhone { get; set; }
87-
88-
/// <summary>
89-
/// 学号
90-
/// </summary>
91-
[ImporterHeader(Name = "学号")]
92-
[MaxLength(30, ErrorMessage = "学号字数超出最大限制,请修改!")]
93-
public string StudentNub { get; set; }
94-
95-
/// <summary>
96-
/// 宿舍号
97-
/// </summary>
98-
[ImporterHeader(Name = "宿舍号")]
99-
[MaxLength(20, ErrorMessage = "宿舍号字数超出最大限制,请修改!")]
100-
public string DormitoryNo { get; set; }
101-
102-
/// <summary>
103-
/// QQ
104-
/// </summary>
105-
[ImporterHeader(Name = "QQ号")]
106-
[MaxLength(30, ErrorMessage = "QQ号字数超出最大限制,请修改!")]
107-
public string QQ { get; set; }
108-
109-
/// <summary>
110-
/// 民族
111-
/// </summary>
112-
[ImporterHeader(Name = "民族")]
113-
[MaxLength(2, ErrorMessage = "民族字数超出最大限制,请修改!")]
114-
public string Nation { get; set; }
115-
116-
/// <summary>
117-
/// 户口性质
118-
/// </summary>
119-
[ImporterHeader(Name = "户口性质")]
120-
[MaxLength(10, ErrorMessage = "户口性质字数超出最大限制,请修改!")]
121-
public string HouseholdType { get; set; }
122-
123-
/// <summary>
124-
/// 联系电话
125-
/// </summary>
126-
[ImporterHeader(Name = "学生联系电话")]
127-
[MaxLength(20, ErrorMessage = "手机号码字数超出最大限制,请修改!")]
128-
public string Phone { get; set; }
129-
130-
/// <summary>
131-
/// 状态
132-
/// 测试可为空的枚举类型
133-
/// </summary>
134-
[ImporterHeader(Name = "状态")]
135-
public StudentStatus? Status { get; set; }
136-
137-
/// <summary>
138-
/// 备注
139-
/// </summary>
140-
[ImporterHeader(Name = "备注")]
141-
[MaxLength(200, ErrorMessage = "备注字数超出最大限制,请修改!")]
142-
public string Remark { get; set; }
143-
144-
/// <summary>
145-
/// 是否住校(宿舍)
146-
/// </summary>
147-
[ImporterHeader(IsIgnore = true)]
148-
public bool? IsBoarding { get; set; }
149-
150-
/// <summary>
151-
/// 所属班级id
152-
/// </summary>
153-
[ImporterHeader(IsIgnore = true)]
154-
public Guid ClassId { get; set; }
155-
156-
/// <summary>
157-
/// 学校Id
158-
/// </summary>
159-
[ImporterHeader(IsIgnore = true)]
160-
public Guid? SchoolId { get; set; }
161-
162-
/// <summary>
163-
/// 校区Id
164-
/// </summary>
165-
[ImporterHeader(IsIgnore = true)]
166-
public Guid? CampusId { get; set; }
167-
168-
/// <summary>
169-
/// 专业Id
170-
/// </summary>
171-
[ImporterHeader(IsIgnore = true)]
172-
public Guid? MajorsId { get; set; }
173-
174-
/// <summary>
175-
/// 年级Id
176-
/// </summary>
177-
[ImporterHeader(IsIgnore = true)]
178-
public Guid? GradeId { get; set; }
179-
}
180-
18121
public class ExcelImporter_Tests_500 : TestBase
18222
{
18323
public ExcelImporter_Tests_500(ITestOutputHelper testOutputHelper)
@@ -191,29 +31,20 @@ public ExcelImporter_Tests_500(ITestOutputHelper testOutputHelper)
19131
[Fact(DisplayName = "带导入说明行的 Excel 自动标注错误后导出文件里表头缺失")]
19232
public async Task Issue500_Test1()
19333
{
194-
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "学生基础数据导入带描述头测试下.xlsx");
34+
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "issue500带描述头测试.xlsx");
19535

19636
var errorStream = new MemoryStream();
19737
var fs = new FileStream(filePath, FileMode.Open);
19838

199-
var import = await Importer.Import<ImportWithOnlyError>(fs, errorStream);
39+
var import = await Importer.Import<Issue500>(fs, errorStream);
20040

20141
if (import.RowErrors.Count > 0) _testOutputHelper.WriteLine(JsonConvert.SerializeObject(import.RowErrors));
20242

203-
var filePath1 = GetTestFilePath($"{nameof(Issue500_Test1)}.xlsx");
204-
DeleteFile(filePath1);
205-
206-
using (var fileStream = new FileStream(filePath1, FileMode.Create))
207-
{
208-
errorStream.Seek(0, SeekOrigin.Begin);
209-
await errorStream.CopyToAsync(fileStream);
210-
};
211-
212-
using (var pck = new ExcelPackage(new FileInfo(filePath1)))
43+
using (var pck = new ExcelPackage(errorStream))
21344
{
21445
pck.Workbook.Worksheets.Count.ShouldBe(1);
21546
var sheet = pck.Workbook.Worksheets.First();
216-
sheet.Cells[1,1].Text.ShouldBe("序号");
47+
sheet.Cells[1, 1].Text.ShouldBe("序号");
21748
sheet.Cells[2, 1].Text.ShouldNotBeNullOrWhiteSpace();
21849
}
21950
}

src/Magicodes.ExporterAndImporter.Tests/Magicodes.IE.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2525
</PackageReference>
2626
<!--修复Ubuntu下dotnet test的问题,参考:https://github.com/microsoft/vstest/issues/2469 -->
27-
<PackageReference Include="Microsoft.TestPlatform.ObjectModel"/>
27+
<!--<PackageReference Include="Microsoft.TestPlatform.ObjectModel"/>-->
2828
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
2929
<PackageReference Include="Shouldly" Version="4.0.3" />
3030
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
using DocumentFormat.OpenXml.Wordprocessing;
2+
using Magicodes.ExporterAndImporter.Core;
3+
using Magicodes.ExporterAndImporter.Excel;
4+
using Magicodes.ExporterAndImporter.Tests.Models.Import;
5+
using System;
6+
using System.ComponentModel.DataAnnotations;
7+
8+
namespace Magicodes.IE.Tests.Models.Import
9+
{
10+
/// <summary>
11+
/// 导入学生数据Dto
12+
/// IsLabelingError:是否标注数据错误
13+
/// </summary>
14+
[ExcelImporter(IsLabelingError = true, IsOnlyErrorRows = true, HeaderRowIndex = 2, IsDisableAllFilter = true)]
15+
public class Issue500
16+
{
17+
/// <summary>
18+
/// 序号
19+
/// </summary>
20+
[ImporterHeader(Name = "序号")]
21+
public long SerialNumber { get; set; }
22+
23+
/// <summary>
24+
/// 学籍号
25+
/// </summary>
26+
[ImporterHeader(Name = "学籍号", IsAllowRepeat = false)]
27+
[MaxLength(30, ErrorMessage = "学籍号字数超出最大限制,请修改!")]
28+
public string StudentCode { get; set; }
29+
30+
/// <summary>
31+
/// 姓名
32+
/// </summary>
33+
[ImporterHeader(Name = "姓名")]
34+
[Required(ErrorMessage = "学生姓名不能为空")]
35+
[MaxLength(50, ErrorMessage = "名称字数超出最大限制,请修改!")]
36+
public string Name { get; set; }
37+
38+
/// <summary>
39+
/// 身份证号码
40+
/// </summary>
41+
[ImporterHeader(Name = "身份证号", IsAllowRepeat = false)]
42+
[Required(ErrorMessage = "身份证号不能为空")]
43+
[MaxLength(18, ErrorMessage = "身份证字数超出最大限制,请修改!")]
44+
public string IdCard { get; set; }
45+
46+
/// <summary>
47+
/// 性别
48+
/// </summary>
49+
[ImporterHeader(Name = "性别")]
50+
[Required(ErrorMessage = "性别不能为空")]
51+
[ValueMapping("男", 0)]
52+
[ValueMapping("女", 1)]
53+
public Genders Gender { get; set; }
54+
55+
/// <summary>
56+
/// 家庭地址
57+
/// </summary>
58+
[ImporterHeader(Name = "家庭住址")]
59+
[Required(ErrorMessage = "家庭地址不能为空")]
60+
[MaxLength(200, ErrorMessage = "家庭地址字数超出最大限制,请修改!")]
61+
public string Address { get; set; }
62+
63+
/// <summary>
64+
/// 家长姓名
65+
/// </summary>
66+
[ImporterHeader(Name = "家长姓名")]
67+
[Required(ErrorMessage = "家长姓名不能为空")]
68+
[MaxLength(50, ErrorMessage = "家长姓名数超出最大限制,请修改!")]
69+
public string Guardian { get; set; }
70+
71+
/// <summary>
72+
/// 家长联系电话
73+
/// </summary>
74+
[ImporterHeader(Name = "家长联系电话")]
75+
[MaxLength(20, ErrorMessage = "家长联系电话字数超出最大限制,请修改!")]
76+
public string GuardianPhone { get; set; }
77+
78+
/// <summary>
79+
/// 学号
80+
/// </summary>
81+
[ImporterHeader(Name = "学号")]
82+
[MaxLength(30, ErrorMessage = "学号字数超出最大限制,请修改!")]
83+
public string StudentNub { get; set; }
84+
85+
/// <summary>
86+
/// 宿舍号
87+
/// </summary>
88+
[ImporterHeader(Name = "宿舍号")]
89+
[MaxLength(20, ErrorMessage = "宿舍号字数超出最大限制,请修改!")]
90+
public string DormitoryNo { get; set; }
91+
92+
/// <summary>
93+
/// QQ
94+
/// </summary>
95+
[ImporterHeader(Name = "QQ号")]
96+
[MaxLength(30, ErrorMessage = "QQ号字数超出最大限制,请修改!")]
97+
public string QQ { get; set; }
98+
99+
/// <summary>
100+
/// 民族
101+
/// </summary>
102+
[ImporterHeader(Name = "民族")]
103+
[MaxLength(2, ErrorMessage = "民族字数超出最大限制,请修改!")]
104+
public string Nation { get; set; }
105+
106+
/// <summary>
107+
/// 户口性质
108+
/// </summary>
109+
[ImporterHeader(Name = "户口性质")]
110+
[MaxLength(10, ErrorMessage = "户口性质字数超出最大限制,请修改!")]
111+
public string HouseholdType { get; set; }
112+
113+
/// <summary>
114+
/// 联系电话
115+
/// </summary>
116+
[ImporterHeader(Name = "学生联系电话")]
117+
[MaxLength(20, ErrorMessage = "手机号码字数超出最大限制,请修改!")]
118+
public string Phone { get; set; }
119+
120+
/// <summary>
121+
/// 状态
122+
/// 测试可为空的枚举类型
123+
/// </summary>
124+
[ImporterHeader(Name = "状态")]
125+
public StudentStatus? Status { get; set; }
126+
127+
/// <summary>
128+
/// 备注
129+
/// </summary>
130+
[ImporterHeader(Name = "备注")]
131+
[MaxLength(200, ErrorMessage = "备注字数超出最大限制,请修改!")]
132+
public string Remark { get; set; }
133+
134+
/// <summary>
135+
/// 是否住校(宿舍)
136+
/// </summary>
137+
[ImporterHeader(IsIgnore = true)]
138+
public bool? IsBoarding { get; set; }
139+
140+
/// <summary>
141+
/// 所属班级id
142+
/// </summary>
143+
[ImporterHeader(IsIgnore = true)]
144+
public Guid ClassId { get; set; }
145+
146+
/// <summary>
147+
/// 学校Id
148+
/// </summary>
149+
[ImporterHeader(IsIgnore = true)]
150+
public Guid? SchoolId { get; set; }
151+
152+
/// <summary>
153+
/// 校区Id
154+
/// </summary>
155+
[ImporterHeader(IsIgnore = true)]
156+
public Guid? CampusId { get; set; }
157+
158+
/// <summary>
159+
/// 专业Id
160+
/// </summary>
161+
[ImporterHeader(IsIgnore = true)]
162+
public Guid? MajorsId { get; set; }
163+
164+
/// <summary>
165+
/// 年级Id
166+
/// </summary>
167+
[ImporterHeader(IsIgnore = true)]
168+
public Guid? GradeId { get; set; }
169+
}
170+
}

src/Magicodes.ExporterAndImporter.Tests/TestFiles/Import/学生基础数据导入带描述头测试下.xlsx renamed to src/Magicodes.ExporterAndImporter.Tests/TestFiles/Import/issue500带描述头测试.xlsx

File renamed without changes.

0 commit comments

Comments
 (0)