public void CreateAttachment_PassData_GetAttachmentModel()
        {
            //arrange
            var options = new DbContextOptionsBuilder <AttachmentDbContext>()
                          .UseInMemoryDatabase(databaseName: "CreateAttachment_PassData_GetAttachmentModel")
                          .Options;
            //act
            AttachmentModel result;

            using (var context = new AttachmentDbContext(options))
            {
                var service = new SqlServerAttachmenBusiness(context);
                result = service.CreateAttachmentTemporarily(new TemporaryAttachmentKeyModel {
                    EntityName = "x", FieldName = "y", Token = "z"
                });
            }
            //assert
            Assert.IsNotNull(result);
            using (var context = new AttachmentDbContext(options))
            {
                var item = context.Attachments.SingleOrDefault(x => x.Id == result.AttachmentId);
                Assert.IsNotNull(item);
                Assert.AreEqual("x", item.EntityName);
                Assert.AreEqual("y", item.FieldName);
                Assert.AreEqual("z", item.Token);
                Assert.AreEqual(null, item.EntityId);
            }
        }
        /// <summary>
        /// Create SqlServerAttachmenBusiness based on given connection string
        /// </summary>
        /// <param name="connectionString"></param>
        /// <returns></returns>
        public static SqlServerAttachmenBusiness SqlServerAttachmenBusinessFactory(string connectionString)
        {
            var optionsBuilder = new DbContextOptionsBuilder <AttachmentDbContext>();

            optionsBuilder.UseSqlServer(connectionString);
            var dbContext = new AttachmentDbContext(optionsBuilder.Options);

            return(new SqlServerAttachmenBusiness(dbContext));
        }
        public void CreateAttachment_Token_PassInvalidArgument_GetException(string entity, string field, string token)
        {
            //arrange
            var options = new DbContextOptionsBuilder <AttachmentDbContext>()
                          .UseInMemoryDatabase(databaseName: "CreateAttachment_PassNull_GetException")
                          .Options;

            //act
            using (var context = new AttachmentDbContext(options))
            {
                var service = new SqlServerAttachmenBusiness(context);
                Assert.Throws <ArgumentNullException>(() =>
                {
                    //act
                    service.CreateAttachmentTemporarily(new TemporaryAttachmentKeyModel {
                        EntityName = entity, FieldName = field, Token = token
                    });
                });
            }
        }
 public SqlServerAttachmenBusiness(AttachmentDbContext dbContext)
 {
     _DbContext = dbContext;
 }