ulf-jzl
asked on
UnitTest ADO.Net Entity Framework
Hi!
Having some problem with my UnitTest, I'm trying to test my Add (INSERT) method, but it does not behave the way I want.
I have a Store Procedure that executes the INSERT statement, I have done all the mapping and it works fine. The first insert works, it inserts the values as it should. When I run it again with the same FolderPath the store procedure should NOT INSERT it again, that works fine too, but still I get 1 returned from ctx.SaveChanges() method, but It should return 0?
Having some problem with my UnitTest, I'm trying to test my Add (INSERT) method, but it does not behave the way I want.
I have a Store Procedure that executes the INSERT statement, I have done all the mapping and it works fine. The first insert works, it inserts the values as it should. When I run it again with the same FolderPath the store procedure should NOT INSERT it again, that works fine too, but still I get 1 returned from ctx.SaveChanges() method, but It should return 0?
[TestMethod]
public void AddTest()
{
// Arrange
IRepository<FileSystemWatcher> repository = new FileSystemWatcherRepository();
FileSystemWatcher entity = new FileSystemWatcher() { FolderPath = @"C:\Test" };
// Act
bool actual = repository.Add(entity);
// Assert
Assert.IsTrue(actual);
}
public bool Add(FileSystemWatcher entity)
{
// Get Entity
using (var ctx = new FbiDmsEntities())
{
// Add object to entity
ctx.AddToFileSystemWatcher(entity);
// Commit
int result = ctx.SaveChanges();
// Affected rows
if (result == 1)
{
return true;
}
else
{
return false;
}
}
}
Use [FBI.DMS];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
SET NOCOUNT ON;
GO
-- ====================================================
-- Author:
-- Create date: 2011-02-13
-- Description: Insert a folder path
-- ====================================================
IF OBJECT_ID('InsertFileSystemWatcher') IS NOT NULL
DROP PROC InsertFileSystemWatcher;
GO
CREATE PROCEDURE InsertFileSystemWatcher
(
@FolderPath varchar(300)
)
AS
DECLARE @Id int;
BEGIN TRANSACTION FileSystemWatcherInsert
WITH MARK N'Inserting a file system watcher folder path';
BEGIN
-- Check so this folder path already exists
SELECT @Id = [FileSystemWatcherId]
FROM dbo.[FileSystemWatcher]
WHERE
[FolderPath] = @FolderPath;
END;
BEGIN
--State 1: Do not insert if the folder path already exists, raise error
IF @Id IS NULL
BEGIN
-- INSERT folder path
INSERT
INTO dbo.[FileSystemWatcher]
(
[FolderPath]
)
VALUES
(
@FolderPath
);
END;
ELSE
BEGIN
RAISERROR ('The record already exists in the database.', 1, 1);
END;
END;
-- commit the transaction
COMMIT TRANSACTION FileSystemWatcherInsert;
GO
-------------------------------------
Table
-------------------------------------
USE [FBI.DMS]
GO
/****** Object: Table [dbo].[FileSystemWatcher] Script Date: 02/17/2011 08:48:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[FileSystemWatcher](
[FileSystemWatcherId] [int] IDENTITY(1,1) NOT NULL,
[TimeStamp] [datetime] NOT NULL,
[FolderPath] [nchar](300) NOT NULL,
CONSTRAINT [PK_FileSystemWatcherSettings] PRIMARY KEY CLUSTERED
(
[FileSystemWatcherId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FileSystemWatcher] ADD CONSTRAINT [DF_FileSystemWatcherSettings_TimeStamp] DEFAULT (getdate()) FOR [TimeStamp]
GO
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
here is the url to the new question
https://www.experts-exchange.com/questions/26829873/ADO-Net-Entity-Framework-Get-affected-rows.html
https://www.experts-exchange.com/questions/26829873/ADO-Net-Entity-Framework-Get-affected-rows.html
ASKER