Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Creating test case for explicit expansion of a collection and its chi…
…ld reference.
  • Loading branch information
BlaiseD committed Apr 18, 2020
commit bd663e604bd15902dc3d7c5982ee0d3d4f645d18
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class ExpandCollections : AutoMapperSpecBase
protected override MapperConfiguration Configuration => new MapperConfiguration(cfg =>
{
cfg.CreateMap<Category, CategoryDto>();
cfg.CreateMap<TrainingCourse, TrainingCourseDto>().ForMember(c => c.Content, o => o.ExplicitExpansion());
cfg.CreateMap<TrainingCourse, TrainingCourseDto>();
cfg.CreateMap<TrainingContent, TrainingContentDto>().ForMember(c => c.Category, o => o.ExplicitExpansion());
});

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
using AutoMapper.UnitTests;
using Shouldly;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.Diagnostics;
using System.Linq;
using Xunit;

namespace AutoMapper.IntegrationTests.Net4
{
public class ExplicitlyExpandCollectionsAndChildReferences : AutoMapperSpecBase
{
TrainingCourseDto _course;

protected override MapperConfiguration Configuration => new MapperConfiguration(cfg =>
{
cfg.CreateMap<Category, CategoryDto>();
cfg.CreateMap<TrainingCourse, TrainingCourseDto>().ForMember(c => c.Content, o => o.ExplicitExpansion());
cfg.CreateMap<TrainingContent, TrainingContentDto>().ForMember(c => c.Category, o => o.ExplicitExpansion());
});

protected override void Because_of()
{
using (var context = new ClientContext())
{
context.Database.Log = s => Trace.WriteLine(s);
_course = ProjectTo<TrainingCourseDto>(context.TrainingCourses, null, c => c.Content.Select(co => co.Category)).FirstOrDefault(n => n.CourseName == "Course 1");
}
}


[Fact]
public void Should_expand_collections_items()
{
_course.Content[0].Category.CategoryName.ShouldBe("Category 1");
}

class Initializer : DropCreateDatabaseAlways<ClientContext>
{
protected override void Seed(ClientContext context)
{
var category = new Category { CategoryName = "Category 1" };
var course = new TrainingCourse { CourseName = "Course 1" };
context.TrainingCourses.Add(course);
var content = new TrainingContent { ContentName = "Content 1", Category = category };
context.TrainingContents.Add(content);
course.Content.Add(content);
}
}

class ClientContext : DbContext
{
public ClientContext()
{
Database.SetInitializer(new Initializer());
}
public DbSet<Category> Categories { get; set; }
public DbSet<TrainingCourse> TrainingCourses { get; set; }
public DbSet<TrainingContent> TrainingContents { get; set; }
}

public class TrainingCourse
{
[Key]
public int CourseId { get; set; }

public string CourseName { get; set; }

public virtual IList<TrainingContent> Content { get; set; } = new List<TrainingContent>();
}

public class TrainingContent
{
[Key]
public int ContentId { get; set; }

public string ContentName { get; set; }

public Category Category { get; set; }
}

public class Category
{
public int CategoryId { get; set; }
public string CategoryName { get; set; }
}


public class TrainingCourseDto
{
public int CourseId { get; set; }

public string CourseName { get; set; }

public virtual IList<TrainingContentDto> Content { get; set; }
}

public class CategoryDto
{
public int CategoryId { get; set; }
public string CategoryName { get; set; }
}

public class TrainingContentDto
{
public int ContentId { get; set; }

public string ContentName { get; set; }

public CategoryDto Category { get; set; }
}
}
}