public void UpdateDeviceInfoByTwinChangedTest( string no, string in_InsertNewDataSqlPath, string in_DeleteNewDataSqlPath, string expected_DataJsonPath, string expected_ExceptionType, string expected_ExceptionMessage, string remarks) { DtDeliveryGroup readDeliveryGroup = new DtDeliveryGroup() { Sid = 0 }; DtTwinChanged twinChangedData = new DtTwinChanged() { RemoteConnectionUid = RepositoryTestHelper.CreateSpecifiedNumberString(64), SoftVersion = RepositoryTestHelper.CreateSpecifiedNumberString(30), }; if (expected_ExceptionType == typeof(RmsParameterException).FullName) { if (expected_ExceptionMessage.Contains("RemoteConnectUid")) { twinChangedData.RemoteConnectionUid = RepositoryTestHelper.CreateSpecifiedNumberString(65); // 上限値+1 } else if (expected_ExceptionMessage.Contains("RmsSoftVersion")) { twinChangedData.SoftVersion = RepositoryTestHelper.CreateSpecifiedNumberString(31); // 上限値+1 } } // 初期データ挿入 RepositoryTestHelper.ExecInsertSql(in_InsertNewDataSqlPath); string exceptionName = ""; string exceptionMessage = ""; try { if (expected_ExceptionType == typeof(ArgumentNullException).FullName) { twinChangedData = null; } // データを取得する(配信結果付き) var readModel = _deviceRepository.UpdateDeviceInfoByTwinChanged(2, twinChangedData); if (readModel != null) { readModel.UpdateDatetime = DateTime.Parse("2020/4/1 0:00:00"); } // データのjson化 string readJson = Utility.ObjectExtensions.ToStringJson(readModel); string expectJson = null; if (File.Exists(expected_DataJsonPath)) { expectJson = File.ReadAllText(expected_DataJsonPath); } // データの比較 Assert.AreEqual(expectJson, readJson); // TODO DBデータ内容をチェックする } catch (RmsParameterException e) { exceptionName = e.GetType().FullName; exceptionMessage = e.Message; } catch (ArgumentNullException e) { exceptionName = e.GetType().FullName; exceptionMessage = typeof(DtDevice).FullName + " is null."; // HACK ←の部分をメッセージから抽出できれば... } // 例外発生チェック Assert.AreEqual(expected_ExceptionType, exceptionName); Assert.AreEqual(expected_ExceptionMessage, exceptionMessage); // 後処理 RepositoryTestHelper.ExecDeleteSql(in_DeleteNewDataSqlPath); }
public void UpdateCancelFlagTest( string no, string in_InsertNewDataSqlPath, string in_DeleteNewDataSqlPath, string expected_DataJsonPath, string expected_ExceptionType, string expected_ExceptionMessage, string remarks) { bool canUpdate = false; DtDeliveryFile changedModel = new DtDeliveryFile() { Sid = 0 }; // 初期データ挿入 if (RepositoryTestHelper.ExecInsertSql(in_InsertNewDataSqlPath)) { canUpdate = true; // RowVersion取得のため読み出す var readModel = _deliveryFileRepository.ReadDtDeliveryFile(2); Assert.IsNotNull(readModel); // 更新データ設定 changedModel.Sid = readModel.Sid; changedModel.DeliveryFileTypeSid = 2; changedModel.InstallTypeSid = 2; changedModel.FilePath = RepositoryTestHelper.CreateSpecifiedNumberString(301); // 変更されないので上限値+1 changedModel.Version = RepositoryTestHelper.CreateSpecifiedNumberString(31); // 変更されないので上限値+1 changedModel.InstallableVersion = RepositoryTestHelper.CreateSpecifiedNumberString(301); // 変更されないので上限値+1 changedModel.Description = RepositoryTestHelper.CreateSpecifiedNumberString(201); // 変更されないので上限値+1 changedModel.InformationId = RepositoryTestHelper.CreateSpecifiedNumberString(46); // 変更されないので上限値+1 changedModel.CreateDatetime = DateTime.Parse("2099/12/31 0:00:00"); changedModel.RowVersion = readModel.RowVersion; switch (no) { case "1_001": default: changedModel.IsCanceled = null; break; case "1_002": changedModel.IsCanceled = true; break; case "1_003": // 挿入SQLと同じ値 changedModel.IsCanceled = false; break; } } string exceptionName = ""; string exceptionMessage = ""; try { if (expected_ExceptionType == typeof(ArgumentNullException).FullName) { changedModel = null; } // データを更新する var updatedModel = _deliveryFileRepository.UpdateCancelFlag(changedModel); Assert.IsTrue((updatedModel != null) == canUpdate); if (changedModel.IsCanceled == false) { // 中止フラグが更新前と同一の場合は更新されていない(RowVersionに変化がない)ことを確認する Assert.IsTrue(changedModel.RowVersion.SequenceEqual(updatedModel.RowVersion)); } if (updatedModel != null) { // 比較に使用しないパラメータはnull or 固定値にする updatedModel.UpdateDatetime = DateTime.Parse("2020/4/1 0:00:00"); updatedModel.RowVersion = null; updatedModel.DtDeliveryModel.ToList()[0].CreateDatetime = DateTime.Parse("2020/4/1 0:00:00"); } // データのjson化 string readJson = Utility.ObjectExtensions.ToStringJson(updatedModel); string expectJson = null; if (File.Exists(expected_DataJsonPath)) { expectJson = File.ReadAllText(expected_DataJsonPath); } // データの比較 Assert.AreEqual(expectJson, readJson); // TODO DBデータ内容をチェックする } catch (RmsParameterException e) { exceptionName = e.GetType().FullName; exceptionMessage = e.Message; } catch (ArgumentNullException e) { exceptionName = e.GetType().FullName; exceptionMessage = typeof(DtDeliveryFile).FullName + " is null."; // HACK ←の部分をメッセージから抽出できれば... } // 例外発生チェック Assert.AreEqual(expected_ExceptionType, exceptionName); Assert.AreEqual(expected_ExceptionMessage, exceptionMessage); // 後処理 RepositoryTestHelper.ExecDeleteSql(in_DeleteNewDataSqlPath); }
public void UpdateDtDeliveryGroupIfDeliveryNotStartTest( string no, string in_InsertNewDataSqlPath, string in_DeleteNewDataSqlPath, string expected_DataJsonPath, string expected_ExceptionType, string expected_ExceptionMessage, string remarks) { DtDeliveryGroup changedModel = new DtDeliveryGroup() { Sid = 0 }; bool canDelete = false; // 初期データ挿入 if (RepositoryTestHelper.ExecInsertSql(in_InsertNewDataSqlPath)) { canDelete = true; // RowVersion取得のため読み出す var readModel = _deliveryGroupRepository.ReadDtDeliveryGroup(1); Assert.IsNotNull(readModel); // データを更新する(SIDは変更すると動作しないので変更しない) changedModel.Sid = readModel.Sid; changedModel.DeliveryGroupStatusSid = 999; changedModel.MtDeliveryGroupStatus = null; changedModel.DeliveryFileSid = 999; changedModel.Name = RepositoryTestHelper.CreateSpecifiedNumberString(100); changedModel.StartDatetime = DateTime.Parse("2020/4/2 0:00:00"); changedModel.DownloadDelayTime = 10; changedModel.CreateDatetime = DateTime.UtcNow; if (expected_ExceptionType.Equals(typeof(RmsParameterException).FullName)) { // 異常値を設定する changedModel.Name = RepositoryTestHelper.CreateSpecifiedNumberString(101); } } string exceptionName = ""; string exceptionMessage = ""; try { // データを更新する var updatedModel = _deliveryGroupRepository.UpdateDtDeliveryGroupIfDeliveryNotStart(changedModel); Assert.IsTrue((updatedModel != null) == canDelete); if (updatedModel != null) { // 比較に使用しないパラメータはnull or 固定値にする updatedModel.UpdateDatetime = DateTime.Parse("2020/4/1 0:00:00"); updatedModel.RowVersion = null; updatedModel.MtDeliveryGroupStatus.CreateDatetime = DateTime.Parse("2020/4/1 0:00:00"); } // データのjson化 string readJson = Utility.ObjectExtensions.ToStringJson(updatedModel); string expectJson = null; if (File.Exists(expected_DataJsonPath)) { expectJson = File.ReadAllText(expected_DataJsonPath); } // データの比較 Assert.AreEqual(expectJson, readJson); // TODO DBデータ内容をチェックする } catch (RmsCannotChangeDeliveredFileException e) { exceptionName = e.GetType().FullName; exceptionMessage = e.Message; } catch (RmsParameterException e) { exceptionName = e.GetType().FullName; exceptionMessage = e.Message; } // 例外発生チェック Assert.AreEqual(expected_ExceptionType, exceptionName); Assert.AreEqual(expected_ExceptionMessage, exceptionMessage); // 後処理 RepositoryTestHelper.ExecDeleteSql(in_DeleteNewDataSqlPath); }
public void UpdateDtDeliveryFileIfNoGroupStartedTest( string no, string in_InsertNewDataSqlPath, string in_DeleteNewDataSqlPath, string expected_DataJsonPath, string expected_ExceptionType, string expected_ExceptionMessage, string remarks) { bool canUpdate = false; DtDeliveryFile changedModel = new DtDeliveryFile() { Sid = 0 }; // 初期データ挿入 if (RepositoryTestHelper.ExecInsertSql(in_InsertNewDataSqlPath)) { canUpdate = true; // RowVersion取得のため読み出す var readModel = _deliveryFileRepository.ReadDtDeliveryFile(2); Assert.IsNotNull(readModel); // 更新データ設定 changedModel.Sid = readModel.Sid; changedModel.DeliveryFileTypeSid = 2; changedModel.InstallTypeSid = 2; changedModel.FilePath = RepositoryTestHelper.CreateSpecifiedNumberString(301); // 変更されないので上限値+1 changedModel.Version = RepositoryTestHelper.CreateSpecifiedNumberString(30); changedModel.InstallableVersion = RepositoryTestHelper.CreateSpecifiedNumberString(300); changedModel.Description = RepositoryTestHelper.CreateSpecifiedNumberString(200); changedModel.InformationId = RepositoryTestHelper.CreateSpecifiedNumberString(45); changedModel.IsCanceled = true; changedModel.CreateDatetime = DateTime.Parse("2099/12/31 0:00:00"); changedModel.RowVersion = readModel.RowVersion; // 子エンティティの設定 changedModel.DtDeliveryModel.Add(new DtDeliveryModel() { EquipmentModelSid = 2, CreateDatetime = DateTime.Parse("2020/4/1 0:00:00") }); if (expected_ExceptionType == typeof(RmsParameterException).FullName) { if (expected_ExceptionMessage.Contains("InstallableVersion")) { changedModel.InstallableVersion = RepositoryTestHelper.CreateSpecifiedNumberString(301); // 上限値+1 } else if (expected_ExceptionMessage.Contains("Version")) { changedModel.Version = RepositoryTestHelper.CreateSpecifiedNumberString(31); // 上限値+1 } else if (expected_ExceptionMessage.Contains("Description")) { changedModel.Description = RepositoryTestHelper.CreateSpecifiedNumberString(201); // 上限値+1 } else if (expected_ExceptionMessage.Contains("InformationId")) { changedModel.InformationId = RepositoryTestHelper.CreateSpecifiedNumberString(46); // 上限値+1 } } } string exceptionName = ""; string exceptionMessage = ""; try { if (expected_ExceptionType == typeof(ArgumentNullException).FullName) { changedModel = null; } // データを更新する var updatedModel = _deliveryFileRepository.UpdateDtDeliveryFileIfNoGroupStarted(changedModel); Assert.IsTrue((updatedModel != null) == canUpdate); if (updatedModel != null) { // 比較に使用しないパラメータはnull or 固定値にする updatedModel.UpdateDatetime = DateTime.Parse("2020/4/1 0:00:00"); updatedModel.RowVersion = null; updatedModel.DtDeliveryModel.ToList()[0].CreateDatetime = DateTime.Parse("2020/4/1 0:00:00"); } // データのjson化 string readJson = Utility.ObjectExtensions.ToStringJson(updatedModel); string expectJson = null; if (File.Exists(expected_DataJsonPath)) { expectJson = File.ReadAllText(expected_DataJsonPath); } // データの比較 Assert.AreEqual(expectJson, readJson); // 挿入SQLで登録した配信ファイル型式は削除されていることを確認する var readDeliveryModel = _deliveryModelRepository.ReadDtDeliveryModel(1); Assert.IsNull(readDeliveryModel); // TODO DBデータ内容をチェックする } catch (RmsCannotChangeDeliveredFileException e) { exceptionName = e.GetType().FullName; exceptionMessage = e.Message; } catch (RmsParameterException e) { exceptionName = e.GetType().FullName; exceptionMessage = e.Message; } catch (ArgumentNullException e) { exceptionName = e.GetType().FullName; exceptionMessage = typeof(DtDeliveryFile).FullName + " is null."; // HACK ←の部分をメッセージから抽出できれば... } // 例外発生チェック Assert.AreEqual(expected_ExceptionType, exceptionName); Assert.AreEqual(expected_ExceptionMessage, exceptionMessage); // 後処理 RepositoryTestHelper.ExecDeleteSql(in_DeleteNewDataSqlPath); }
public void CreateDtDirectoryUsageIfAlreadyMessageThrowExTest( string no, string in_InsertNewDataSqlPath, string in_DeleteNewDataSqlPath, string expected_DataJsonPath, string expected_ExceptionType, string expected_ExceptionMessage, string remarks) { // 初期データ挿入 RepositoryTestHelper.ExecInsertSql(in_InsertNewDataSqlPath); // データを作成する var baseDateTime = DateTime.UtcNow; var newDirectoryUsageData = new DtDirectoryUsage() { DeviceSid = 1, SourceEquipmentUid = RepositoryTestHelper.CreateSpecifiedNumberString(30), // 上限値いっぱい MessageId = RepositoryTestHelper.CreateSpecifiedNumberString(64), // 上限値いっぱい、既存でないメッセージID CreateDatetime = baseDateTime }; if (expected_ExceptionType == typeof(RmsException).FullName) { // 存在しないSidを指定する newDirectoryUsageData.DeviceSid = 999; } else if (expected_ExceptionType == typeof(ArgumentNullException).FullName) { newDirectoryUsageData = null; } else if (expected_ExceptionType == typeof(RmsAlreadyExistException).FullName) { newDirectoryUsageData.MessageId = "hoge"; // 既存のメッセージID } else if (expected_ExceptionType == typeof(RmsParameterException).FullName) { if (expected_ExceptionMessage.Contains("SourceEquipmentUid")) { newDirectoryUsageData.SourceEquipmentUid = RepositoryTestHelper.CreateSpecifiedNumberString(65); // 上限値+1 } else if (expected_ExceptionMessage.Contains("MessageId")) { newDirectoryUsageData.MessageId = RepositoryTestHelper.CreateSpecifiedNumberString(65); // 上限値+1、既存でないメッセージ } } string exceptionName = ""; string exceptionMessage = ""; try { var createdDirectoryUsageData = _directoryUsageRepository.CreateDtDirectoryUsageIfAlreadyMessageThrowEx(newDirectoryUsageData); if (createdDirectoryUsageData != null) { // 作成日時はDB側で設定されることを確認する Assert.AreNotEqual(baseDateTime, createdDirectoryUsageData.CreateDatetime); // 比較に使用しない値はnull or 固定値とする createdDirectoryUsageData.CreateDatetime = DateTime.Parse("2020/4/1 0:00:00"); } // データのjson化 string readJson = Utility.ObjectExtensions.ToStringJson(createdDirectoryUsageData); string expectJson = null; if (File.Exists(expected_DataJsonPath)) { expectJson = File.ReadAllText(expected_DataJsonPath); } // データの比較 Assert.AreEqual(expectJson, readJson); // TODO DBデータ内容をチェックする } catch (RmsAlreadyExistException e) { exceptionName = e.GetType().FullName; exceptionMessage = e.Message; } catch (RmsParameterException e) { exceptionName = e.GetType().FullName; exceptionMessage = e.Message; } catch (RmsException e) { exceptionName = e.GetType().FullName; exceptionMessage = e.Message; } catch (ArgumentNullException e) { exceptionName = e.GetType().FullName; exceptionMessage = typeof(DtDirectoryUsage).FullName + " is null."; // HACK ←の部分をメッセージから抽出できれば... } // 例外発生チェック Assert.AreEqual(expected_ExceptionType, exceptionName); Assert.AreEqual(expected_ExceptionMessage, exceptionMessage); // 後処理 RepositoryTestHelper.ExecDeleteSql(in_DeleteNewDataSqlPath); }