From 55e6f7579847fca6f258186f0a89ce3a6611bc7b Mon Sep 17 00:00:00 2001 From: Oleh-Kril Date: Fri, 17 Nov 2023 12:35:42 +0200 Subject: [PATCH 01/15] remove trailing comma --- Streetcode/Streetcode.WebApi/Controllers/BaseApiController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Streetcode/Streetcode.WebApi/Controllers/BaseApiController.cs b/Streetcode/Streetcode.WebApi/Controllers/BaseApiController.cs index 70e64be79..b51430095 100644 --- a/Streetcode/Streetcode.WebApi/Controllers/BaseApiController.cs +++ b/Streetcode/Streetcode.WebApi/Controllers/BaseApiController.cs @@ -46,5 +46,5 @@ protected ActionResult HandleResult(Result result) } return BadRequest(result.Reasons); - } + } } \ No newline at end of file From ed8c6bc44d3e46bc8220e94c4ca1df4ea2f89996 Mon Sep 17 00:00:00 2001 From: Oleh-Kril <91199925+Oleh-Kril@users.noreply.github.com> Date: Sun, 3 Dec 2023 19:41:26 +0200 Subject: [PATCH 02/15] extend getCount endpoint to return only published Streetcodes (#908) --- .../GetCount/GetStreetcodesCountHander.cs | 23 +++++++++++-------- .../GetCount/GetStreetcodesCountQuery.cs | 2 +- .../Streetcode/StreetcodeController.cs | 4 ++-- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Streetcode/Streetcode.BLL/MediatR/Streetcode/Streetcode/GetCount/GetStreetcodesCountHander.cs b/Streetcode/Streetcode.BLL/MediatR/Streetcode/Streetcode/GetCount/GetStreetcodesCountHander.cs index d9405bd15..bc5b679af 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Streetcode/Streetcode/GetCount/GetStreetcodesCountHander.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Streetcode/Streetcode/GetCount/GetStreetcodesCountHander.cs @@ -1,16 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using AutoMapper; +using AutoMapper; using FluentResults; using MediatR; using Microsoft.Extensions.Localization; -using Streetcode.BLL.DTO.Streetcode; using Streetcode.BLL.Interfaces.Logging; -using Streetcode.BLL.MediatR.Streetcode.Streetcode.GetAllShort; using Streetcode.BLL.SharedResource; +using Streetcode.DAL.Entities.Streetcode; +using Streetcode.DAL.Enums; using Streetcode.DAL.Repositories.Interfaces.Base; namespace Streetcode.BLL.MediatR.Streetcode.Streetcode.GetCount @@ -31,7 +26,17 @@ public GetStreetcodesCountHander(IRepositoryWrapper repositoryWrapper, IMapper m public async Task> Handle(GetStreetcodesCountQuery request, CancellationToken cancellationToken) { - var streetcodes = await _repositoryWrapper.StreetcodeRepository.GetAllAsync(); + IEnumerable streetcodes; + + if (request.onlyPublished) + { + streetcodes = await _repositoryWrapper.StreetcodeRepository + .GetAllAsync(s => s.Status == StreetcodeStatus.Published); + } + else + { + streetcodes = await _repositoryWrapper.StreetcodeRepository.GetAllAsync(); + } if (streetcodes != null) { diff --git a/Streetcode/Streetcode.BLL/MediatR/Streetcode/Streetcode/GetCount/GetStreetcodesCountQuery.cs b/Streetcode/Streetcode.BLL/MediatR/Streetcode/Streetcode/GetCount/GetStreetcodesCountQuery.cs index 0f8262151..8fb88e9dc 100644 --- a/Streetcode/Streetcode.BLL/MediatR/Streetcode/Streetcode/GetCount/GetStreetcodesCountQuery.cs +++ b/Streetcode/Streetcode.BLL/MediatR/Streetcode/Streetcode/GetCount/GetStreetcodesCountQuery.cs @@ -3,5 +3,5 @@ namespace Streetcode.BLL.MediatR.Streetcode.Streetcode.GetCount { - public record GetStreetcodesCountQuery : IRequest>; + public record GetStreetcodesCountQuery(bool onlyPublished) : IRequest>; } diff --git a/Streetcode/Streetcode.WebApi/Controllers/Streetcode/StreetcodeController.cs b/Streetcode/Streetcode.WebApi/Controllers/Streetcode/StreetcodeController.cs index 6205d3d7a..6cf02d06a 100644 --- a/Streetcode/Streetcode.WebApi/Controllers/Streetcode/StreetcodeController.cs +++ b/Streetcode/Streetcode.WebApi/Controllers/Streetcode/StreetcodeController.cs @@ -90,9 +90,9 @@ public async Task GetAllCatalog([FromQuery] int page, [FromQuery] } [HttpGet] - public async Task GetCount() + public async Task GetCount([FromQuery] bool? onlyPublished) { - return HandleResult(await Mediator.Send(new GetStreetcodesCountQuery())); + return HandleResult(await Mediator.Send(new GetStreetcodesCountQuery(onlyPublished ?? false))); } [HttpGet("{url}")] From 5bdc0d6cac5ca1b10fdb91d7dc8e4509b617dd22 Mon Sep 17 00:00:00 2001 From: Valerii Dekhtiuk Date: Wed, 6 Dec 2023 01:21:08 +0200 Subject: [PATCH 03/15] Add appsetting json --- Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json | 2 +- Streetcode/Streetcode.WebApi/appsettings.Local.json | 2 +- Streetcode/Streetcode.WebApi/appsettings.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json b/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json index 53cd46a8b..4613c1ca2 100644 --- a/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json +++ b/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Server=DESKTOP-I7Q35NQ\\SQLEXPRESS;Database=StreetcodeDbtest;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true;TrustServerCertificate=true" + "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=StreetcodeDbtest;Integrated Security=True" }, "Blob": { "BlobStoreKey": "BigThirtyTwoBiteCoolTestKeyCrypt", diff --git a/Streetcode/Streetcode.WebApi/appsettings.Local.json b/Streetcode/Streetcode.WebApi/appsettings.Local.json index 14b44479d..04a90d070 100644 --- a/Streetcode/Streetcode.WebApi/appsettings.Local.json +++ b/Streetcode/Streetcode.WebApi/appsettings.Local.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Server=127.0.0.1;Database=StreetcodeDb;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true" + "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=StreetcodeDbtest;Integrated Security=True" }, "CORS": { "AllowedOrigins": [ "http://localhost:3000" ], diff --git a/Streetcode/Streetcode.WebApi/appsettings.json b/Streetcode/Streetcode.WebApi/appsettings.json index c66f7473d..2595d52b9 100644 --- a/Streetcode/Streetcode.WebApi/appsettings.json +++ b/Streetcode/Streetcode.WebApi/appsettings.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Server=127.0.0.1;Database=StreetcodeDb;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true" + "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=StreetcodeDbtest;Integrated Security=True" }, "EmailConfiguration": { "From": "streetcodefordev@gmail.com", From 520e3dcd707f4db2fc6be1b556d9f7373c139c9f Mon Sep 17 00:00:00 2001 From: ValDekh Date: Wed, 6 Dec 2023 18:00:24 +0200 Subject: [PATCH 04/15] Add some cases --- .../Streetcode/StreetcodeControllerTests.cs | 23 +++++++++++++++++++ .../ControllerTests/Utils/StreetcodeClient.cs | 9 ++++++++ 2 files changed, 32 insertions(+) create mode 100644 Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs new file mode 100644 index 000000000..e04c4221c --- /dev/null +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs @@ -0,0 +1,23 @@ +using Streetcode.XIntegrationTest.ControllerTests.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Xunit; + +namespace Streetcode.XIntegrationTest.ControllerTests.Streetcode +{ + public class StreetcodeControllerTests : + BaseControllerTests, IClassFixture> + { + public StreetcodeControllerTests(CustomWebApplicationFactory factory) + :base(factory, "/api/Streetcode") + { + + } + + + + } +} diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs index 97e3eee4c..f6b27cd67 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs @@ -1,7 +1,9 @@ namespace Streetcode.XIntegrationTest.ControllerTests.Utils { + using global::Streetcode.BLL.MediatR.Streetcode.Streetcode.Update; using RestSharp; using RestSharp.Serializers; + using Streetcode.BLL.MediatR.Streetcode.Streetcode.Update; using System.Threading.Tasks; public class StreetcodeClient @@ -45,5 +47,12 @@ public async Task GetResponse(string requestString) return returns; } + public async Task UpdateAsync(UpdateStreetcodeCommand updateStreetcodeCommand) + { + var request = new RestRequest($"{this.SecondPartUrl}/Update", Method.Put); + request.AddJsonBody(updateStreetcodeCommand); + var response = await this.Client.ExecuteAsync(request); + return response; + } } } From 1560f3f8d2cebf0fe35f608a4b8698e36929a0d5 Mon Sep 17 00:00:00 2001 From: Kateryna Yatsiuk <113370393+KateYatsiuk@users.noreply.github.com> Date: Thu, 7 Dec 2023 13:12:47 +0200 Subject: [PATCH 05/15] Changed datestring max length to 100 instead of 50 (#901) --- .../Entities/Streetcode/StreetcodeContent.cs | 2 +- ...0231130202258_DatestringLength.Designer.cs | 1595 +++++++++++++++++ .../20231130202258_DatestringLength.cs | 37 + .../StreetcodeDbContextModelSnapshot.cs | 4 +- 4 files changed, 1635 insertions(+), 3 deletions(-) create mode 100644 Streetcode/Streetcode.DAL/Persistence/Migrations/20231130202258_DatestringLength.Designer.cs create mode 100644 Streetcode/Streetcode.DAL/Persistence/Migrations/20231130202258_DatestringLength.cs diff --git a/Streetcode/Streetcode.DAL/Entities/Streetcode/StreetcodeContent.cs b/Streetcode/Streetcode.DAL/Entities/Streetcode/StreetcodeContent.cs index 4514ce82a..e71306ebc 100644 --- a/Streetcode/Streetcode.DAL/Entities/Streetcode/StreetcodeContent.cs +++ b/Streetcode/Streetcode.DAL/Entities/Streetcode/StreetcodeContent.cs @@ -32,7 +32,7 @@ public class StreetcodeContent public string? Teaser { get; set; } [Required] - [MaxLength(50)] + [MaxLength(100)] public string? DateString { get; set; } [MaxLength(50)] diff --git a/Streetcode/Streetcode.DAL/Persistence/Migrations/20231130202258_DatestringLength.Designer.cs b/Streetcode/Streetcode.DAL/Persistence/Migrations/20231130202258_DatestringLength.Designer.cs new file mode 100644 index 000000000..7cfdfffaa --- /dev/null +++ b/Streetcode/Streetcode.DAL/Persistence/Migrations/20231130202258_DatestringLength.Designer.cs @@ -0,0 +1,1595 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Streetcode.DAL.Persistence; + +#nullable disable + +namespace Streetcode.DAL.Persistence.Migrations +{ + [DbContext(typeof(StreetcodeDbContext))] + [Migration("20231130202258_DatestringLength")] + partial class DatestringLength + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .UseCollation("SQL_Ukrainian_CP1251_CI_AS") + .HasAnnotation("ProductVersion", "6.0.11") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.Coordinates.Coordinate", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("CoordinateType") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Latitude") + .HasColumnType("decimal(18,4)"); + + b.Property("Longtitude") + .HasColumnType("decimal(18,4)"); + + b.HasKey("Id"); + + b.ToTable("coordinates", "add_content"); + + b.HasDiscriminator("CoordinateType").HasValue("coordinate_base"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.StreetcodeTagIndex", b => + { + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.Property("TagId") + .HasColumnType("int"); + + b.Property("Index") + .HasColumnType("int"); + + b.Property("IsVisible") + .HasColumnType("bit"); + + b.HasKey("StreetcodeId", "TagId"); + + b.HasIndex("TagId"); + + b.ToTable("streetcode_tag_index", "add_content"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.Subtitle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.Property("SubtitleText") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.HasKey("Id"); + + b.HasIndex("StreetcodeId"); + + b.ToTable("subtitles", "add_content"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.Tag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Title") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("tags", "add_content"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Analytics.StatisticRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Address") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("QrId") + .HasColumnType("int"); + + b.Property("StreetcodeCoordinateId") + .HasColumnType("int"); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("StreetcodeCoordinateId") + .IsUnique(); + + b.HasIndex("StreetcodeId"); + + b.ToTable("qr_coordinates", "coordinates"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Feedback.Response", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Description") + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Name") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("responses", "feedback"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Jobs.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Description") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)"); + + b.Property("Salary") + .IsRequired() + .HasMaxLength(15) + .HasColumnType("nvarchar(15)"); + + b.Property("Status") + .HasColumnType("bit"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(65) + .HasColumnType("nvarchar(65)"); + + b.HasKey("Id"); + + b.ToTable("job", "jobs"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Audio", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("BlobName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MimeType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.Property("Title") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.ToTable("audios", "media"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Images.Art", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Description") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("ImageId") + .HasColumnType("int"); + + b.Property("Title") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id"); + + b.HasIndex("ImageId") + .IsUnique(); + + b.ToTable("arts", "media"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Images.Image", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("BlobName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("MimeType") + .IsRequired() + .HasMaxLength(10) + .HasColumnType("nvarchar(10)"); + + b.HasKey("Id"); + + b.ToTable("images", "media"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Images.ImageDetails", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Alt") + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); + + b.Property("ImageId") + .HasColumnType("int"); + + b.Property("Title") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.HasIndex("ImageId") + .IsUnique(); + + b.ToTable("image_details", "media"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Images.StreetcodeImage", b => + { + b.Property("ImageId") + .HasColumnType("int"); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.HasKey("ImageId", "StreetcodeId"); + + b.HasIndex("StreetcodeId"); + + b.ToTable("streetcode_image", "streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Video", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.Property("Title") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Url") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("StreetcodeId"); + + b.ToTable("videos", "media"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.News.News", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("ImageId") + .HasColumnType("int"); + + b.Property("Text") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("URL") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.HasIndex("ImageId") + .IsUnique() + .HasFilter("[ImageId] IS NOT NULL"); + + b.HasIndex("URL") + .IsUnique(); + + b.ToTable("news", "news"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Partners.Partner", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Description") + .HasMaxLength(600) + .HasColumnType("nvarchar(600)"); + + b.Property("IsKeyPartner") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false); + + b.Property("IsVisibleEverywhere") + .HasColumnType("bit"); + + b.Property("LogoId") + .HasColumnType("int"); + + b.Property("TargetUrl") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("UrlTitle") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("LogoId") + .IsUnique(); + + b.ToTable("partners", "partners"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Partners.PartnerSourceLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("LogoType") + .HasColumnType("tinyint"); + + b.Property("PartnerId") + .HasColumnType("int"); + + b.Property("TargetUrl") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("PartnerId"); + + b.ToTable("partner_source_links", "partners"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Partners.StreetcodePartner", b => + { + b.Property("PartnerId") + .HasColumnType("int"); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.HasKey("PartnerId", "StreetcodeId"); + + b.HasIndex("StreetcodeId"); + + b.ToTable("streetcode_partners", "streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Sources.SourceLinkCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ImageId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.HasIndex("ImageId"); + + b.ToTable("source_link_categories", "sources"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Sources.StreetcodeCategoryContent", b => + { + b.Property("SourceLinkCategoryId") + .HasColumnType("int"); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(10000) + .HasColumnType("nvarchar(max)"); + + b.HasKey("SourceLinkCategoryId", "StreetcodeId"); + + b.HasIndex("StreetcodeId"); + + b.ToTable("streetcode_source_link_categories", "sources"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.RelatedFigure", b => + { + b.Property("ObserverId") + .HasColumnType("int"); + + b.Property("TargetId") + .HasColumnType("int"); + + b.HasKey("ObserverId", "TargetId"); + + b.HasIndex("TargetId"); + + b.ToTable("related_figures", "streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.StreetcodeArt", b => + { + b.Property("ArtId") + .HasColumnType("int"); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.Property("Index") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1); + + b.HasKey("ArtId", "StreetcodeId"); + + b.HasIndex("StreetcodeId"); + + b.HasIndex("ArtId", "StreetcodeId"); + + b.ToTable("streetcode_art", "streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Alias") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("AudioId") + .HasColumnType("int"); + + b.Property("CreatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime2") + .HasDefaultValueSql("GETDATE()"); + + b.Property("DateString") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("EventEndOrPersonDeathDate") + .HasColumnType("datetime2"); + + b.Property("EventStartOrPersonBirthDate") + .HasColumnType("datetime2"); + + b.Property("Index") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("StreetcodeType") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Teaser") + .HasMaxLength(650) + .HasColumnType("nvarchar(650)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("TransliterationUrl") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("UpdatedAt") + .ValueGeneratedOnAdd() + .HasColumnType("datetime2") + .HasDefaultValueSql("GETDATE()"); + + b.Property("ViewCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0); + + b.HasKey("Id"); + + b.HasIndex("AudioId") + .IsUnique() + .HasFilter("[AudioId] IS NOT NULL"); + + b.HasIndex("Index") + .IsUnique(); + + b.HasIndex("TransliterationUrl") + .IsUnique(); + + b.ToTable("streetcodes", "streetcode"); + + b.HasDiscriminator("StreetcodeType").HasValue("streetcode-base"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.TextContent.Fact", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("FactContent") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("nvarchar(600)"); + + b.Property("ImageId") + .HasColumnType("int"); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.HasIndex("ImageId"); + + b.HasIndex("StreetcodeId"); + + b.ToTable("facts", "streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.TextContent.RelatedTerm", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("TermId") + .HasColumnType("int"); + + b.Property("Word") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("TermId"); + + b.ToTable("related_terms", "streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.TextContent.Term", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Description") + .IsRequired() + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("terms", "streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.TextContent.Text", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("AdditionalText") + .HasMaxLength(500) + .HasColumnType("nvarchar(500)"); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.Property("TextContent") + .IsRequired() + .HasMaxLength(15000) + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(300) + .HasColumnType("nvarchar(300)"); + + b.HasKey("Id"); + + b.HasIndex("StreetcodeId") + .IsUnique(); + + b.ToTable("texts", "streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Team.Positions", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Position") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("positions", "team"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Team.TeamMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Description") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("ImageId") + .HasColumnType("int"); + + b.Property("IsMain") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ImageId") + .IsUnique(); + + b.ToTable("team_members", "team"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Team.TeamMemberLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("LogoType") + .HasColumnType("tinyint"); + + b.Property("TargetUrl") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("TeamMemberId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("TeamMemberId"); + + b.ToTable("team_member_links", "team"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Team.TeamMemberPositions", b => + { + b.Property("TeamMemberId") + .HasColumnType("int"); + + b.Property("PositionsId") + .HasColumnType("int"); + + b.HasKey("TeamMemberId", "PositionsId"); + + b.HasIndex("PositionsId"); + + b.ToTable("team_member_positions", "team"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Timeline.HistoricalContext", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Title") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("historical_contexts", "timeline"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Timeline.HistoricalContextTimeline", b => + { + b.Property("TimelineId") + .HasColumnType("int"); + + b.Property("HistoricalContextId") + .HasColumnType("int"); + + b.HasKey("TimelineId", "HistoricalContextId"); + + b.HasIndex("HistoricalContextId"); + + b.ToTable("HistoricalContextsTimelines"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Timeline.TimelineItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Date") + .HasColumnType("datetime2"); + + b.Property("DateViewPattern") + .HasColumnType("int"); + + b.Property("Description") + .HasMaxLength(600) + .HasColumnType("nvarchar(600)"); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.Property("Title") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.HasKey("Id"); + + b.HasIndex("StreetcodeId"); + + b.ToTable("timeline_items", "timeline"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Toponyms.StreetcodeToponym", b => + { + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.Property("ToponymId") + .HasColumnType("int"); + + b.HasKey("StreetcodeId", "ToponymId"); + + b.HasIndex("ToponymId"); + + b.ToTable("streetcode_toponym", "streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Toponyms.Toponym", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("AdminRegionNew") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("AdminRegionOld") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Community") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Gromada") + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("Oblast") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("StreetName") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.Property("StreetType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("toponyms", "toponyms"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Transactions.TransactionLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.Property("Url") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("UrlTitle") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("StreetcodeId") + .IsUnique(); + + b.ToTable("transaction_links", "transactions"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Users.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Login") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Role") + .HasColumnType("int"); + + b.Property("Surname") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("Users", "Users"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.Coordinates.Types.StreetcodeCoordinate", b => + { + b.HasBaseType("Streetcode.DAL.Entities.AdditionalContent.Coordinates.Coordinate"); + + b.Property("StreetcodeId") + .HasColumnType("int"); + + b.HasIndex("StreetcodeId"); + + b.ToTable("coordinates", "add_content"); + + b.HasDiscriminator().HasValue("coordinate_streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.Coordinates.Types.ToponymCoordinate", b => + { + b.HasBaseType("Streetcode.DAL.Entities.AdditionalContent.Coordinates.Coordinate"); + + b.Property("ToponymId") + .HasColumnType("int"); + + b.HasIndex("ToponymId") + .IsUnique() + .HasFilter("[ToponymId] IS NOT NULL"); + + b.ToTable("coordinates", "add_content"); + + b.HasDiscriminator().HasValue("coordinate_toponym"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.Types.EventStreetcode", b => + { + b.HasBaseType("Streetcode.DAL.Entities.Streetcode.StreetcodeContent"); + + b.ToTable("streetcodes", "streetcode"); + + b.HasDiscriminator().HasValue("streetcode-event"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.Types.PersonStreetcode", b => + { + b.HasBaseType("Streetcode.DAL.Entities.Streetcode.StreetcodeContent"); + + b.Property("FirstName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("LastName") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Rank") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.ToTable("streetcodes", "streetcode"); + + b.HasDiscriminator().HasValue("streetcode-person"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.StreetcodeTagIndex", b => + { + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany("StreetcodeTagIndices") + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Streetcode.DAL.Entities.AdditionalContent.Tag", "Tag") + .WithMany("StreetcodeTagIndices") + .HasForeignKey("TagId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Streetcode"); + + b.Navigation("Tag"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.Subtitle", b => + { + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany("Subtitles") + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Analytics.StatisticRecord", b => + { + b.HasOne("Streetcode.DAL.Entities.AdditionalContent.Coordinates.Types.StreetcodeCoordinate", "StreetcodeCoordinate") + .WithOne("StatisticRecord") + .HasForeignKey("Streetcode.DAL.Entities.Analytics.StatisticRecord", "StreetcodeCoordinateId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany("StatisticRecords") + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Streetcode"); + + b.Navigation("StreetcodeCoordinate"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Images.Art", b => + { + b.HasOne("Streetcode.DAL.Entities.Media.Images.Image", "Image") + .WithOne("Art") + .HasForeignKey("Streetcode.DAL.Entities.Media.Images.Art", "ImageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Image"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Images.ImageDetails", b => + { + b.HasOne("Streetcode.DAL.Entities.Media.Images.Image", "Image") + .WithOne("ImageDetails") + .HasForeignKey("Streetcode.DAL.Entities.Media.Images.ImageDetails", "ImageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Image"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Images.StreetcodeImage", b => + { + b.HasOne("Streetcode.DAL.Entities.Media.Images.Image", "Image") + .WithMany() + .HasForeignKey("ImageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany() + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Image"); + + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Video", b => + { + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany("Videos") + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.News.News", b => + { + b.HasOne("Streetcode.DAL.Entities.Media.Images.Image", "Image") + .WithOne("News") + .HasForeignKey("Streetcode.DAL.Entities.News.News", "ImageId"); + + b.Navigation("Image"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Partners.Partner", b => + { + b.HasOne("Streetcode.DAL.Entities.Media.Images.Image", "Logo") + .WithOne("Partner") + .HasForeignKey("Streetcode.DAL.Entities.Partners.Partner", "LogoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Logo"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Partners.PartnerSourceLink", b => + { + b.HasOne("Streetcode.DAL.Entities.Partners.Partner", "Partner") + .WithMany("PartnerSourceLinks") + .HasForeignKey("PartnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Partner"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Partners.StreetcodePartner", b => + { + b.HasOne("Streetcode.DAL.Entities.Partners.Partner", "Partner") + .WithMany() + .HasForeignKey("PartnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany() + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Partner"); + + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Sources.SourceLinkCategory", b => + { + b.HasOne("Streetcode.DAL.Entities.Media.Images.Image", "Image") + .WithMany("SourceLinkCategories") + .HasForeignKey("ImageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Image"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Sources.StreetcodeCategoryContent", b => + { + b.HasOne("Streetcode.DAL.Entities.Sources.SourceLinkCategory", "SourceLinkCategory") + .WithMany("StreetcodeCategoryContents") + .HasForeignKey("SourceLinkCategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany("StreetcodeCategoryContents") + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("SourceLinkCategory"); + + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.RelatedFigure", b => + { + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Observer") + .WithMany("Observers") + .HasForeignKey("ObserverId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Target") + .WithMany("Targets") + .HasForeignKey("TargetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Observer"); + + b.Navigation("Target"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.StreetcodeArt", b => + { + b.HasOne("Streetcode.DAL.Entities.Media.Images.Art", "Art") + .WithMany("StreetcodeArts") + .HasForeignKey("ArtId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany("StreetcodeArts") + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Art"); + + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", b => + { + b.HasOne("Streetcode.DAL.Entities.Media.Audio", "Audio") + .WithOne("Streetcode") + .HasForeignKey("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "AudioId") + .OnDelete(DeleteBehavior.Cascade); + + b.Navigation("Audio"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.TextContent.Fact", b => + { + b.HasOne("Streetcode.DAL.Entities.Media.Images.Image", "Image") + .WithMany("Facts") + .HasForeignKey("ImageId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany("Facts") + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Image"); + + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.TextContent.RelatedTerm", b => + { + b.HasOne("Streetcode.DAL.Entities.Streetcode.TextContent.Term", "Term") + .WithMany("RelatedTerms") + .HasForeignKey("TermId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Term"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.TextContent.Text", b => + { + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithOne("Text") + .HasForeignKey("Streetcode.DAL.Entities.Streetcode.TextContent.Text", "StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Team.TeamMember", b => + { + b.HasOne("Streetcode.DAL.Entities.Media.Images.Image", "Image") + .WithOne("TeamMember") + .HasForeignKey("Streetcode.DAL.Entities.Team.TeamMember", "ImageId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Image"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Team.TeamMemberLink", b => + { + b.HasOne("Streetcode.DAL.Entities.Team.TeamMember", "TeamMember") + .WithMany("TeamMemberLinks") + .HasForeignKey("TeamMemberId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TeamMember"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Team.TeamMemberPositions", b => + { + b.HasOne("Streetcode.DAL.Entities.Team.Positions", "Positions") + .WithMany() + .HasForeignKey("PositionsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Streetcode.DAL.Entities.Team.TeamMember", "TeamMember") + .WithMany() + .HasForeignKey("TeamMemberId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Positions"); + + b.Navigation("TeamMember"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Timeline.HistoricalContextTimeline", b => + { + b.HasOne("Streetcode.DAL.Entities.Timeline.HistoricalContext", "HistoricalContext") + .WithMany("HistoricalContextTimelines") + .HasForeignKey("HistoricalContextId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Streetcode.DAL.Entities.Timeline.TimelineItem", "Timeline") + .WithMany("HistoricalContextTimelines") + .HasForeignKey("TimelineId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("HistoricalContext"); + + b.Navigation("Timeline"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Timeline.TimelineItem", b => + { + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany("TimelineItems") + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Toponyms.StreetcodeToponym", b => + { + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany() + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Streetcode.DAL.Entities.Toponyms.Toponym", "Toponym") + .WithMany() + .HasForeignKey("ToponymId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Streetcode"); + + b.Navigation("Toponym"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Transactions.TransactionLink", b => + { + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithOne("TransactionLink") + .HasForeignKey("Streetcode.DAL.Entities.Transactions.TransactionLink", "StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.Coordinates.Types.StreetcodeCoordinate", b => + { + b.HasOne("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", "Streetcode") + .WithMany("Coordinates") + .HasForeignKey("StreetcodeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.Coordinates.Types.ToponymCoordinate", b => + { + b.HasOne("Streetcode.DAL.Entities.Toponyms.Toponym", "Toponym") + .WithOne("Coordinate") + .HasForeignKey("Streetcode.DAL.Entities.AdditionalContent.Coordinates.Types.ToponymCoordinate", "ToponymId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Toponym"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.Tag", b => + { + b.Navigation("StreetcodeTagIndices"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Audio", b => + { + b.Navigation("Streetcode"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Images.Art", b => + { + b.Navigation("StreetcodeArts"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Media.Images.Image", b => + { + b.Navigation("Art"); + + b.Navigation("Facts"); + + b.Navigation("ImageDetails"); + + b.Navigation("News"); + + b.Navigation("Partner"); + + b.Navigation("SourceLinkCategories"); + + b.Navigation("TeamMember"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Partners.Partner", b => + { + b.Navigation("PartnerSourceLinks"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Sources.SourceLinkCategory", b => + { + b.Navigation("StreetcodeCategoryContents"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.StreetcodeContent", b => + { + b.Navigation("Coordinates"); + + b.Navigation("Facts"); + + b.Navigation("Observers"); + + b.Navigation("StatisticRecords"); + + b.Navigation("StreetcodeArts"); + + b.Navigation("StreetcodeCategoryContents"); + + b.Navigation("StreetcodeTagIndices"); + + b.Navigation("Subtitles"); + + b.Navigation("Targets"); + + b.Navigation("Text"); + + b.Navigation("TimelineItems"); + + b.Navigation("TransactionLink"); + + b.Navigation("Videos"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Streetcode.TextContent.Term", b => + { + b.Navigation("RelatedTerms"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Team.TeamMember", b => + { + b.Navigation("TeamMemberLinks"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Timeline.HistoricalContext", b => + { + b.Navigation("HistoricalContextTimelines"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Timeline.TimelineItem", b => + { + b.Navigation("HistoricalContextTimelines"); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.Toponyms.Toponym", b => + { + b.Navigation("Coordinate") + .IsRequired(); + }); + + modelBuilder.Entity("Streetcode.DAL.Entities.AdditionalContent.Coordinates.Types.StreetcodeCoordinate", b => + { + b.Navigation("StatisticRecord") + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Streetcode/Streetcode.DAL/Persistence/Migrations/20231130202258_DatestringLength.cs b/Streetcode/Streetcode.DAL/Persistence/Migrations/20231130202258_DatestringLength.cs new file mode 100644 index 000000000..707b37cba --- /dev/null +++ b/Streetcode/Streetcode.DAL/Persistence/Migrations/20231130202258_DatestringLength.cs @@ -0,0 +1,37 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Streetcode.DAL.Persistence.Migrations +{ + public partial class DatestringLength : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "DateString", + schema: "streetcode", + table: "streetcodes", + type: "nvarchar(100)", + maxLength: 100, + nullable: false, + oldClrType: typeof(string), + oldType: "nvarchar(50)", + oldMaxLength: 50); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "DateString", + schema: "streetcode", + table: "streetcodes", + type: "nvarchar(50)", + maxLength: 50, + nullable: false, + oldClrType: typeof(string), + oldType: "nvarchar(100)", + oldMaxLength: 100); + } + } +} diff --git a/Streetcode/Streetcode.DAL/Persistence/Migrations/StreetcodeDbContextModelSnapshot.cs b/Streetcode/Streetcode.DAL/Persistence/Migrations/StreetcodeDbContextModelSnapshot.cs index d8703c870..ffda3f915 100644 --- a/Streetcode/Streetcode.DAL/Persistence/Migrations/StreetcodeDbContextModelSnapshot.cs +++ b/Streetcode/Streetcode.DAL/Persistence/Migrations/StreetcodeDbContextModelSnapshot.cs @@ -576,8 +576,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("DateString") .IsRequired() - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); b.Property("EventEndOrPersonDeathDate") .HasColumnType("datetime2"); From 5cce849ad42cc408738e952fd26ea99f29ad3b8d Mon Sep 17 00:00:00 2001 From: ValDekh Date: Fri, 8 Dec 2023 18:15:13 +0200 Subject: [PATCH 06/15] Add some changes --- .../appsettings.IntegrationTests.json | 1 + .../Streetcode.WebApi/appsettings.Local.json | 1 + Streetcode/Streetcode.WebApi/appsettings.json | 1 + .../CoordinateControllerTests.cs | 12 ++++++------ .../AdditionalContent/TagControllerTests.cs | 19 +++++++++---------- .../ControllerTests/BaseControllerTests.cs | 15 +++++++++------ .../Streetcode/StreetcodeControllerTests.cs | 10 ++++++---- .../Streetcode/ExtractTestStreetcode.cs | 1 + .../ControllerTests/Utils/StreetcodeClient.cs | 3 +-- 9 files changed, 35 insertions(+), 28 deletions(-) diff --git a/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json b/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json index 4613c1ca2..a8da0b7b3 100644 --- a/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json +++ b/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json @@ -1,5 +1,6 @@ { "ConnectionStrings": { + // "DefaultConnection": "Server=DESKTOP-I7Q35NQ\\SQLEXPRESS;Database=StreetcodeDbtest;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true;TrustServerCertificate=true" "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=StreetcodeDbtest;Integrated Security=True" }, "Blob": { diff --git a/Streetcode/Streetcode.WebApi/appsettings.Local.json b/Streetcode/Streetcode.WebApi/appsettings.Local.json index 04a90d070..f027ab9e6 100644 --- a/Streetcode/Streetcode.WebApi/appsettings.Local.json +++ b/Streetcode/Streetcode.WebApi/appsettings.Local.json @@ -1,5 +1,6 @@ { "ConnectionStrings": { + // "DefaultConnection": "Server=127.0.0.1;Database=StreetcodeDb;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true" "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=StreetcodeDbtest;Integrated Security=True" }, "CORS": { diff --git a/Streetcode/Streetcode.WebApi/appsettings.json b/Streetcode/Streetcode.WebApi/appsettings.json index 2595d52b9..cf0046d47 100644 --- a/Streetcode/Streetcode.WebApi/appsettings.json +++ b/Streetcode/Streetcode.WebApi/appsettings.json @@ -1,5 +1,6 @@ { "ConnectionStrings": { + // "DefaultConnection": "Server=127.0.0.1;Database=StreetcodeDb;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true" "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=StreetcodeDbtest;Integrated Security=True" }, "EmailConfiguration": { diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/AdditionalContent/CoordinateControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/AdditionalContent/CoordinateControllerTests.cs index 5f74ab6c9..5986c9ae5 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/AdditionalContent/CoordinateControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/AdditionalContent/CoordinateControllerTests.cs @@ -1,10 +1,10 @@ -namespace Streetcode.XIntegrationTest.ControllerTests.AdditionalContent -{ - using Streetcode.BLL.DTO.AdditionalContent.Coordinates.Types; - using Streetcode.XIntegrationTest.ControllerTests.Utils; - using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; - using Xunit; +using Streetcode.BLL.DTO.AdditionalContent.Coordinates.Types; +using Streetcode.XIntegrationTest.ControllerTests.Utils; +using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; +using Xunit; +namespace Streetcode.XIntegrationTest.ControllerTests.AdditionalContent +{ public class CoordinateControllerTests : BaseControllerTests, IClassFixture> { public CoordinateControllerTests(CustomWebApplicationFactory factory) diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/AdditionalContent/TagControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/AdditionalContent/TagControllerTests.cs index e28dfa36b..ef20a8664 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/AdditionalContent/TagControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/AdditionalContent/TagControllerTests.cs @@ -1,14 +1,13 @@ -namespace Streetcode.XIntegrationTest.ControllerTests.AdditionalContent +using global::Streetcode.XIntegrationTest.ControllerTests.Utils; +using Streetcode.BLL.DTO.AdditionalContent; +using Streetcode.BLL.DTO.AdditionalContent.Tag; +using Streetcode.DAL.Entities.AdditionalContent; +using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.AdditionalContent.Tag; +using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; +using Xunit; + +namespace Streetcode.XIntegrationTest.ControllerTests.AdditionalContent { - using Streetcode.BLL.DTO.AdditionalContent; - using Streetcode.BLL.DTO.AdditionalContent.Tag; - using Streetcode.DAL.Entities.AdditionalContent; - using Streetcode.DAL.Entities.Streetcode.TextContent; - using Streetcode.XIntegrationTest.ControllerTests.Utils; - using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.AdditionalContent.Tag; - using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; - using Xunit; - public class TagControllerTests : BaseControllerTests, IClassFixture> { public TagControllerTests(CustomWebApplicationFactory factory) diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/BaseControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/BaseControllerTests.cs index b645ddd5a..0bd132cc9 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/BaseControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/BaseControllerTests.cs @@ -1,10 +1,13 @@ -namespace Streetcode.XIntegrationTest.ControllerTests +using Streetcode.DAL.Persistence; +using Streetcode.XIntegrationTest.ControllerTests.Utils; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Streetcode.DAL.Persistence; +using Streetcode.XIntegrationTest.ControllerTests.Utils; +using Xunit; + +namespace Streetcode.XIntegrationTest.ControllerTests { - using Microsoft.EntityFrameworkCore; - using Microsoft.Extensions.Configuration; - using Streetcode.DAL.Persistence; - using Streetcode.XIntegrationTest.ControllerTests.Utils; - using Xunit; public class BaseControllerTests : IntegrationTestBase, IClassFixture> { diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs index e04c4221c..3bed673a1 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs @@ -1,4 +1,5 @@ using Streetcode.XIntegrationTest.ControllerTests.Utils; +using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; using System; using System.Collections.Generic; using System.Linq; @@ -11,13 +12,14 @@ namespace Streetcode.XIntegrationTest.ControllerTests.Streetcode public class StreetcodeControllerTests : BaseControllerTests, IClassFixture> { - public StreetcodeControllerTests(CustomWebApplicationFactory factory) - :base(factory, "/api/Streetcode") + public StreetcodeControllerTests(CustomWebApplicationFactory factory) + : base(factory, "/api/Streetcode") { } - - + //[Fact] + //[ExtractTestStreetcode] + //{ } } diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs index 4d7546b39..ea4c78269 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs @@ -28,6 +28,7 @@ public override void Before(MethodInfo methodUnderTest) Alias = "dsf", Title = "Title", TransliterationUrl = Guid.NewGuid().ToString(), + Teaser = "Test Teaser", }); sqlDbHelper.SaveChanges(); } diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs index f6b27cd67..ed4109fd6 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs @@ -1,10 +1,9 @@ namespace Streetcode.XIntegrationTest.ControllerTests.Utils { + using System.Threading.Tasks; using global::Streetcode.BLL.MediatR.Streetcode.Streetcode.Update; using RestSharp; using RestSharp.Serializers; - using Streetcode.BLL.MediatR.Streetcode.Streetcode.Update; - using System.Threading.Tasks; public class StreetcodeClient { From f10a07aebeb057e821b54b67d9948ce4ec947908 Mon Sep 17 00:00:00 2001 From: Valerii Dekhtiuk Date: Mon, 11 Dec 2023 00:12:17 +0200 Subject: [PATCH 07/15] Some addition --- .../Media/VideoControllerTests.cs | 10 ++++---- .../Streetcode/StreetcodeControllerTests.cs | 24 +++++++++++++++---- .../Streetcode/ExtractTestStreetcode.cs | 8 +++++++ 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/VideoControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/VideoControllerTests.cs index a59cd3865..1cca4051e 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/VideoControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/VideoControllerTests.cs @@ -1,9 +1,9 @@ -namespace Streetcode.XIntegrationTest.ControllerTests.Media +using Streetcode.BLL.DTO.Media; +using Streetcode.BLL.DTO.Media.Audio; +using Streetcode.XIntegrationTest.ControllerTests.Utils; +using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Media.Video; +namespace Streetcode.XIntegrationTest.ControllerTests.Media { - using Streetcode.BLL.DTO.Media; - using Streetcode.BLL.DTO.Media.Audio; - using Streetcode.XIntegrationTest.ControllerTests.Utils; - using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Media.Video; using Xunit; public class VideoControllerTests : BaseControllerTests, IClassFixture> diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs index 3bed673a1..e3258e882 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs @@ -1,4 +1,7 @@ -using Streetcode.XIntegrationTest.ControllerTests.Utils; +using Streetcode.BLL.DTO.Streetcode.Update; +using Streetcode.BLL.MediatR.Streetcode.Streetcode.Update; +using Streetcode.DAL.Entities.Streetcode; +using Streetcode.XIntegrationTest.ControllerTests.Utils; using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; using System; using System.Collections.Generic; @@ -18,8 +21,21 @@ public StreetcodeControllerTests(CustomWebApplicationFactory factory) } - //[Fact] - //[ExtractTestStreetcode] - //{ + [Fact] + [ExtractTestStreetcode] + public async Task Update_ReturnSuccessStatusCode() + { + StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; + + var updateStreetcodeCommand = new UpdateStreetcodeCommand + { + Streetcode = new StreetcodeUpdateDTO + { + Id = expectedStreetcode.Id, + Title = "New Title", + TransliterationUrl = "new-transliteration-url", + } + }; + } } } diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs index ea4c78269..5fb55b0d5 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs @@ -33,5 +33,13 @@ public override void Before(MethodInfo methodUnderTest) sqlDbHelper.SaveChanges(); } } + + public override void After(MethodInfo methodUnderTest) + { + var sqlDbHelper = BaseControllerTests.GetSqlDbHelper(); + StreetcodeForTest.Title = "Updated Title"; + StreetcodeForTest.TransliterationUrl = "updated-transliteration-url"; + sqlDbHelper.SaveChanges(); + } } } From 1bea96ebd2da335255e29fcd1717dc438519b791 Mon Sep 17 00:00:00 2001 From: ValDekh Date: Mon, 11 Dec 2023 18:09:17 +0200 Subject: [PATCH 08/15] Add some cases --- .../ControllerTests/BaseControllerTests.cs | 4 +- .../Media/AudioControllerTests.cs | 1 - .../Images/StreetcodeArtControllerTests.cs | 10 ++-- .../Media/VideoControllerTests.cs | 1 - .../Streetcode/StreetcodeControllerTests.cs | 59 ++++++++++++++----- .../ExtractTestStreetcodeCoordinate.cs | 16 ++--- .../ExtractTestToponymCoordinate.cs | 7 +-- .../Subtitle/ExtractTestSubtitle.cs | 13 +--- .../AdditionalContent/Tag/ExtractTestTag.cs | 5 +- .../Tag/StreetcodeTagIndexSetup.cs | 5 -- .../Media/Images/Art/ExtractTestArt.cs | 2 +- .../Media/Images/Image/ExtractTestImage.cs | 2 +- .../StreetcodeArt/ExtractTestStreetcodeArt.cs | 4 +- .../Media/Video/ExtractTestVideo.cs | 2 +- .../Partners/ExtractTestPartners.cs | 7 +-- .../ExtractTestSourceLinkCategory.cs | 10 +--- .../Streetcode/ExtractTestStreetcode.cs | 3 +- .../RelatedFigure/ExtractTestRelatedFigure.cs | 7 +-- .../TextContent/Facts/ExtractTestFact.cs | 7 +-- .../TextContent/Terms/ExstractTestTerm.cs | 8 +-- .../TextContent/Texts/ExstractTestText.cs | 7 +-- .../Timelines/ExtractTestTimelineItem.cs | 7 +-- .../Toponyms/ExtractTestToponym.cs | 5 +- .../ExtractTestTransactionLink.cs | 9 +-- .../Utils/CustomWebApplicationFactory.cs | 2 +- .../ControllerTests/Utils/StreetcodeClient.cs | 21 +++---- .../Utils/BlobStorageFixture.cs | 6 +- 27 files changed, 94 insertions(+), 136 deletions(-) diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/BaseControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/BaseControllerTests.cs index 0bd132cc9..7767b53ee 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/BaseControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/BaseControllerTests.cs @@ -1,6 +1,4 @@ -using Streetcode.DAL.Persistence; -using Streetcode.XIntegrationTest.ControllerTests.Utils; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Streetcode.DAL.Persistence; using Streetcode.XIntegrationTest.ControllerTests.Utils; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/AudioControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/AudioControllerTests.cs index 5fc97daec..f19749633 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/AudioControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/AudioControllerTests.cs @@ -2,7 +2,6 @@ using Streetcode.DAL.Entities.Media; using Streetcode.XIntegrationTest.ControllerTests.Utils; using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Media.Audio; -using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; using Xunit; namespace Streetcode.XIntegrationTest.ControllerTests.Media diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/Images/StreetcodeArtControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/Images/StreetcodeArtControllerTests.cs index 64a0cf559..62a906f18 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/Images/StreetcodeArtControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/Images/StreetcodeArtControllerTests.cs @@ -1,9 +1,9 @@ -namespace Streetcode.XIntegrationTest.ControllerTests.Media.Images +using Streetcode.BLL.DTO.Media.Art; +using Streetcode.XIntegrationTest.ControllerTests.Utils; +using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; +using Xunit; +namespace Streetcode.XIntegrationTest.ControllerTests.Media.Images { - using Streetcode.BLL.DTO.Media.Art; - using Streetcode.XIntegrationTest.ControllerTests.Utils; - using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; - using Xunit; public class StreetcodeArtControllerTests : BaseControllerTests, IClassFixture> { diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/VideoControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/VideoControllerTests.cs index 1cca4051e..6825ea683 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/VideoControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Media/VideoControllerTests.cs @@ -1,5 +1,4 @@ using Streetcode.BLL.DTO.Media; -using Streetcode.BLL.DTO.Media.Audio; using Streetcode.XIntegrationTest.ControllerTests.Utils; using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Media.Video; namespace Streetcode.XIntegrationTest.ControllerTests.Media diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs index e3258e882..3487f88fd 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs @@ -1,13 +1,21 @@ -using Streetcode.BLL.DTO.Streetcode.Update; -using Streetcode.BLL.MediatR.Streetcode.Streetcode.Update; +using Newtonsoft.Json; +using Streetcode.BLL.DTO.AdditionalContent.Subtitles; +using Streetcode.BLL.DTO.AdditionalContent.Tag; +using Streetcode.BLL.DTO.Analytics.Update; +using Streetcode.BLL.DTO.Media.Art; +using Streetcode.BLL.DTO.Media.Audio; +using Streetcode.BLL.DTO.Media.Images; +using Streetcode.BLL.DTO.Media.Video; +using Streetcode.BLL.DTO.Partners.Update; +using Streetcode.BLL.DTO.Sources.Update; +using Streetcode.BLL.DTO.Streetcode.RelatedFigure; +using Streetcode.BLL.DTO.Streetcode.TextContent.Fact; +using Streetcode.BLL.DTO.Streetcode.Update; +using Streetcode.BLL.DTO.Timeline.Update; +using Streetcode.BLL.DTO.Toponyms; using Streetcode.DAL.Entities.Streetcode; using Streetcode.XIntegrationTest.ControllerTests.Utils; using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Xunit; namespace Streetcode.XIntegrationTest.ControllerTests.Streetcode @@ -27,15 +35,38 @@ public async Task Update_ReturnSuccessStatusCode() { StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - var updateStreetcodeCommand = new UpdateStreetcodeCommand + // var updateStreetcodeCommand = new UpdateStreetcodeCommand( + var updateStreetCodeDTO = new StreetcodeUpdateDTO { - Streetcode = new StreetcodeUpdateDTO - { - Id = expectedStreetcode.Id, - Title = "New Title", - TransliterationUrl = "new-transliteration-url", - } + Id = expectedStreetcode.Id, + Title = "New Title", + TransliterationUrl = "new-transliteration-url", + Tags = new List(), + Facts = new List(), + Audios = new List(), + Images = new List(), + Videos = new List(), + Partners = new List(), + Toponyms = new List(), + Subtitles = new List(), + DateString = "20 травня 2023", + TimelineItems = new List(), + RelatedFigures = new List(), + StreetcodeArts = new List(), + StatisticRecords = new List(), + StreetcodeCategoryContents = new List() }; + var response = await this.client.UpdateAsync(updateStreetCodeDTO); + StreetcodeContent updatedStreetcode = ExtractTestStreetcode.StreetcodeForTest; + + var responseContent = JsonConvert.DeserializeObject(response.Content); + + Assert.Multiple(() => + { + Assert.True(response.IsSuccessStatusCode); + Assert.Equal(updatedStreetcode.Title, responseContent.Title); + Assert.Equal(updatedStreetcode.TransliterationUrl, responseContent.TransliterationUrl); + }); } } } diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Coordinate/ExtractTestStreetcodeCoordinate.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Coordinate/ExtractTestStreetcodeCoordinate.cs index cb0bc5c9d..c8aa5b104 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Coordinate/ExtractTestStreetcodeCoordinate.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Coordinate/ExtractTestStreetcodeCoordinate.cs @@ -19,14 +19,14 @@ public override void Before(MethodInfo methodUnderTest) { StreetcodeContent first = sqlDbHelper.GetExistItem(); first ??= sqlDbHelper.AddNewItem(new StreetcodeContent() - { - Index = 10, - UpdatedAt = DateTime.Now, - CreatedAt = DateTime.Now, - EventStartOrPersonBirthDate = DateTime.Now, - EventEndOrPersonDeathDate = DateTime.Now, - ViewCount = 1, - }); + { + Index = 10, + UpdatedAt = DateTime.Now, + CreatedAt = DateTime.Now, + EventStartOrPersonBirthDate = DateTime.Now, + EventEndOrPersonDeathDate = DateTime.Now, + ViewCount = 1, + }); CoordinateForTest = sqlDbHelper.AddNewItem( new StreetcodeCoordinate() diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Coordinate/ExtractTestToponymCoordinate.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Coordinate/ExtractTestToponymCoordinate.cs index eb8a45891..9884bc733 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Coordinate/ExtractTestToponymCoordinate.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Coordinate/ExtractTestToponymCoordinate.cs @@ -1,17 +1,12 @@ using Streetcode.DAL.Entities.AdditionalContent.Coordinates.Types; using Streetcode.DAL.Entities.Toponyms; -using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; -using System.Threading.Tasks; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.AdditionalContent.Coordinate { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - internal class ExtractTestToponymCoordinate:BeforeAfterTestAttribute + internal class ExtractTestToponymCoordinate : BeforeAfterTestAttribute { public static ToponymCoordinate ToponymCoordinateForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Subtitle/ExtractTestSubtitle.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Subtitle/ExtractTestSubtitle.cs index 7c577860c..6758057bc 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Subtitle/ExtractTestSubtitle.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Subtitle/ExtractTestSubtitle.cs @@ -1,15 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; -using Streetcode.DAL.Entities; -using Streetcode.DAL.Entities.Streetcode; -using Streetcode.DAL.Persistence; +using Streetcode.DAL.Entities.Streetcode; using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; +using System.Reflection; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.AdditionalContent.Subtitle diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Tag/ExtractTestTag.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Tag/ExtractTestTag.cs index 33d3b63b2..25bd4db21 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Tag/ExtractTestTag.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Tag/ExtractTestTag.cs @@ -1,11 +1,10 @@ -using Streetcode.DAL.Entities.AdditionalContent; -using System.Reflection; +using System.Reflection; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.AdditionalContent.Tag { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - public class ExtractTestTag: BeforeAfterTestAttribute + public class ExtractTestTag : BeforeAfterTestAttribute { public static DAL.Entities.AdditionalContent.Tag TagForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Tag/StreetcodeTagIndexSetup.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Tag/StreetcodeTagIndexSetup.cs index 41f223b91..2dbc8ef87 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Tag/StreetcodeTagIndexSetup.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/AdditionalContent/Tag/StreetcodeTagIndexSetup.cs @@ -1,10 +1,5 @@ using Streetcode.DAL.Entities.AdditionalContent; using Streetcode.DAL.Entities.Streetcode; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.AdditionalContent.Tag { diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/Art/ExtractTestArt.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/Art/ExtractTestArt.cs index 56f738846..10e339d5f 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/Art/ExtractTestArt.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/Art/ExtractTestArt.cs @@ -6,7 +6,7 @@ namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Media.Images.Art { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - internal class ExtractTestArt: BeforeAfterTestAttribute + internal class ExtractTestArt : BeforeAfterTestAttribute { public static DAL.Entities.Media.Images.Art ArtForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/Image/ExtractTestImage.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/Image/ExtractTestImage.cs index 0b595a58c..adbe0c84e 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/Image/ExtractTestImage.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/Image/ExtractTestImage.cs @@ -7,7 +7,7 @@ namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Media.Images.Image { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - public class ExtractTestImage: BeforeAfterTestAttribute + public class ExtractTestImage : BeforeAfterTestAttribute { public static DAL.Entities.Media.Images.Image ImageForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/StreetcodeArt/ExtractTestStreetcodeArt.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/StreetcodeArt/ExtractTestStreetcodeArt.cs index 06cb3fd95..0486e2f8f 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/StreetcodeArt/ExtractTestStreetcodeArt.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Images/StreetcodeArt/ExtractTestStreetcodeArt.cs @@ -6,7 +6,7 @@ namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Media.Images.StreetcodeArt { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - internal class ExtractTestStreetcodeArt:BeforeAfterTestAttribute + internal class ExtractTestStreetcodeArt : BeforeAfterTestAttribute { public static DAL.Entities.Streetcode.StreetcodeArt StreetcodeArtForTest; @@ -14,7 +14,7 @@ public override void Before(MethodInfo methodUnderTest) { var sqlDbHelper = BaseControllerTests.GetSqlDbHelper(); StreetcodeArtForTest = sqlDbHelper.GetExistItem(); - if(StreetcodeArtForTest == null) + if (StreetcodeArtForTest == null) { if (ExtractTestStreetcode.StreetcodeForTest == null) { diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Video/ExtractTestVideo.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Video/ExtractTestVideo.cs index 002b457e3..0cbbb38f8 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Video/ExtractTestVideo.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Media/Video/ExtractTestVideo.cs @@ -6,7 +6,7 @@ namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Media.Video { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - internal class ExtractTestVideo: BeforeAfterTestAttribute + internal class ExtractTestVideo : BeforeAfterTestAttribute { public static DAL.Entities.Media.Video VideoForTest; public static StreetcodeContent StreetcodeWithVideo; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Partners/ExtractTestPartners.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Partners/ExtractTestPartners.cs index dd9db72e2..ed7ccf3c3 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Partners/ExtractTestPartners.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Partners/ExtractTestPartners.cs @@ -1,17 +1,12 @@ using Streetcode.DAL.Entities.Partners; using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Media.Images.Image; -using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; -using System.Threading.Tasks; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Partners { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - internal class ExtractTestPartners: BeforeAfterTestAttribute + internal class ExtractTestPartners : BeforeAfterTestAttribute { public static Partner PartnerForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Source/SourceLinkCategories/ExtractTestSourceLinkCategory.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Source/SourceLinkCategories/ExtractTestSourceLinkCategory.cs index c96d6330c..380f3ce65 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Source/SourceLinkCategories/ExtractTestSourceLinkCategory.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Source/SourceLinkCategories/ExtractTestSourceLinkCategory.cs @@ -1,18 +1,12 @@ -using Streetcode.DAL.Entities.Partners; -using Streetcode.DAL.Entities.Sources; +using Streetcode.DAL.Entities.Sources; using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Media.Images.Image; -using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; -using System.Threading.Tasks; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Source.SourceLinkCategories { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - internal class ExtractTestSourceLinkCategory:BeforeAfterTestAttribute + internal class ExtractTestSourceLinkCategory : BeforeAfterTestAttribute { public static SourceLinkCategory SourceLinkCategoryForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs index 5fb55b0d5..2f4030238 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs @@ -1,5 +1,4 @@ -using Streetcode.DAL.Entities.AdditionalContent; -using Streetcode.DAL.Entities.Streetcode; +using Streetcode.DAL.Entities.Streetcode; using System.Reflection; using Xunit.Sdk; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/RelatedFigure/ExtractTestRelatedFigure.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/RelatedFigure/ExtractTestRelatedFigure.cs index 84d896e4d..ea31620d7 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/RelatedFigure/ExtractTestRelatedFigure.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/RelatedFigure/ExtractTestRelatedFigure.cs @@ -1,16 +1,11 @@ using Streetcode.DAL.Entities.Streetcode; -using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; -using System.Threading.Tasks; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode.RelatedFigure { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - internal class ExtractTestRelatedFigure: BeforeAfterTestAttribute + internal class ExtractTestRelatedFigure : BeforeAfterTestAttribute { public static DAL.Entities.Streetcode.RelatedFigure RelatedFigureForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Facts/ExtractTestFact.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Facts/ExtractTestFact.cs index b0ef66ce9..aa52d8f21 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Facts/ExtractTestFact.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Facts/ExtractTestFact.cs @@ -1,16 +1,11 @@ using Streetcode.DAL.Entities.Streetcode.TextContent; -using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; -using System.Threading.Tasks; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode.TextContent.Facts { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - public class ExtractTestFact: BeforeAfterTestAttribute + public class ExtractTestFact : BeforeAfterTestAttribute { public static Fact FactForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Terms/ExstractTestTerm.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Terms/ExstractTestTerm.cs index cc745822f..bd28a9c2d 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Terms/ExstractTestTerm.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Terms/ExstractTestTerm.cs @@ -1,17 +1,11 @@ using Streetcode.DAL.Entities.Streetcode.TextContent; -using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode.TextContent.Facts; -using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; -using System.Threading.Tasks; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode.TextContent.Terms { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - internal class ExstractTestTerm: BeforeAfterTestAttribute + internal class ExstractTestTerm : BeforeAfterTestAttribute { public static Term TermForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Texts/ExstractTestText.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Texts/ExstractTestText.cs index 36135d839..42e2bb4e0 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Texts/ExstractTestText.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/TextContent/Texts/ExstractTestText.cs @@ -1,16 +1,11 @@ using Streetcode.DAL.Entities.Streetcode.TextContent; -using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; -using System.Threading.Tasks; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode.TextContent.Texts { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - internal class ExstractTestText :BeforeAfterTestAttribute + internal class ExstractTestText : BeforeAfterTestAttribute { public static Text TextForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Timelines/ExtractTestTimelineItem.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Timelines/ExtractTestTimelineItem.cs index 4ecaef22b..bed77d9a8 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Timelines/ExtractTestTimelineItem.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Timelines/ExtractTestTimelineItem.cs @@ -1,16 +1,11 @@ using Streetcode.DAL.Entities.Timeline; -using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; -using System.Threading.Tasks; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Timelines { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - internal class ExtractTestTimelineItem: BeforeAfterTestAttribute + internal class ExtractTestTimelineItem : BeforeAfterTestAttribute { public static TimelineItem TimelineItemForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Toponyms/ExtractTestToponym.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Toponyms/ExtractTestToponym.cs index 97c55ff66..24d6628fe 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Toponyms/ExtractTestToponym.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Toponyms/ExtractTestToponym.cs @@ -1,15 +1,12 @@ using Streetcode.DAL.Entities.Toponyms; using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.AdditionalContent.Coordinate; -using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Toponyms { [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] - internal class ExtractTestToponym:BeforeAfterTestAttribute + internal class ExtractTestToponym : BeforeAfterTestAttribute { public static Toponym ToponymForTest; diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Transactions/ExtractTestTransactionLink.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Transactions/ExtractTestTransactionLink.cs index 3561a7ddd..6d509064c 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Transactions/ExtractTestTransactionLink.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Transactions/ExtractTestTransactionLink.cs @@ -1,13 +1,6 @@ -using Streetcode.DAL.Entities.AdditionalContent.Coordinates.Types; -using Streetcode.DAL.Entities.Transactions; +using Streetcode.DAL.Entities.Transactions; using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; -using System; -using System.Collections.Generic; -using System.Linq; using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using System.Transactions; using Xunit.Sdk; namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Transactions diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/CustomWebApplicationFactory.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/CustomWebApplicationFactory.cs index 8e27ecf3f..db47e2e8d 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/CustomWebApplicationFactory.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/CustomWebApplicationFactory.cs @@ -1,8 +1,8 @@ namespace Streetcode.XIntegrationTest.ControllerTests.Utils { - using System; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc.Testing; + using System; public class CustomWebApplicationFactory : WebApplicationFactory where TProgram : class diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs index ed4109fd6..1be932316 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/StreetcodeClient.cs @@ -1,19 +1,18 @@ -namespace Streetcode.XIntegrationTest.ControllerTests.Utils -{ - using System.Threading.Tasks; - using global::Streetcode.BLL.MediatR.Streetcode.Streetcode.Update; - using RestSharp; - using RestSharp.Serializers; +using RestSharp; +using RestSharp.Serializers; +using Streetcode.BLL.DTO.Streetcode.Update; +namespace Streetcode.XIntegrationTest.ControllerTests.Utils +{ public class StreetcodeClient { protected RestClient Client; public string SecondPartUrl { get; } - public StreetcodeClient(HttpClient client, string secondPartUrl = "") + public StreetcodeClient(HttpClient client, string secondPartUrl = "") { - this.Client = new RestClient(client) { AcceptedContentTypes=ContentType.JsonAccept }; + this.Client = new RestClient(client) { AcceptedContentTypes = ContentType.JsonAccept }; this.SecondPartUrl = secondPartUrl; } @@ -46,10 +45,12 @@ public async Task GetResponse(string requestString) return returns; } - public async Task UpdateAsync(UpdateStreetcodeCommand updateStreetcodeCommand) + public async Task UpdateAsync(StreetcodeUpdateDTO updateStreetcodeDTO) { var request = new RestRequest($"{this.SecondPartUrl}/Update", Method.Put); - request.AddJsonBody(updateStreetcodeCommand); + request.AddJsonBody(updateStreetcodeDTO); + request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; }; + request.AddHeader("content-type", "application/json"); var response = await this.Client.ExecuteAsync(request); return response; } diff --git a/Streetcode/Streetcode.XIntegrationTest/ServiceTests/BlobServiceTests/Utils/BlobStorageFixture.cs b/Streetcode/Streetcode.XIntegrationTest/ServiceTests/BlobServiceTests/Utils/BlobStorageFixture.cs index 07eb4bc2c..911681aa8 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ServiceTests/BlobServiceTests/Utils/BlobStorageFixture.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ServiceTests/BlobServiceTests/Utils/BlobStorageFixture.cs @@ -5,8 +5,6 @@ using Streetcode.DAL.Entities.Media; using Streetcode.DAL.Entities.Media.Images; using Streetcode.DAL.Persistence; -using Streetcode.DAL.Repositories.Realizations.Base; -using Streetcode.XIntegrationTest.Base; using System.Text; namespace Streetcode.XIntegrationTest.ServiceTests.BlobServiceTests.Utils @@ -29,8 +27,8 @@ public BlobStorageFixture() blobPath = environmentVariables.Value.BlobStorePath; blobKey = environmentVariables.Value.BlobStoreKey; - // TestDbContext = TestDBFixture.CreateContext(Configuration.GetConnectionString("DefaultConnection")); - // RepositoryWrapper repo = new RepositoryWrapper(TestDbContext); + // TestDbContext = TestDBFixture.CreateContext(Configuration.GetConnectionString("DefaultConnection")); + // RepositoryWrapper repo = new RepositoryWrapper(TestDbContext); blobService = new BlobService(environmentVariables); // add repo Directory.CreateDirectory(blobPath); From 5f1b948aba5fe64aaf9e563eddb2b098e3408992 Mon Sep 17 00:00:00 2001 From: Valerii Dekhtiuk Date: Tue, 12 Dec 2023 01:27:47 +0200 Subject: [PATCH 09/15] Add some logic --- .../Streetcode/StreetcodeControllerTests.cs | 20 ++++++++++--------- .../Streetcode/ExtractTestStreetcode.cs | 3 +-- .../ControllerTests/Utils/SqlDbHelper.cs | 6 ++++++ 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs index 3487f88fd..bcd5ed5fa 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs @@ -35,7 +35,6 @@ public async Task Update_ReturnSuccessStatusCode() { StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - // var updateStreetcodeCommand = new UpdateStreetcodeCommand( var updateStreetCodeDTO = new StreetcodeUpdateDTO { Id = expectedStreetcode.Id, @@ -57,16 +56,19 @@ public async Task Update_ReturnSuccessStatusCode() StreetcodeCategoryContents = new List() }; var response = await this.client.UpdateAsync(updateStreetCodeDTO); - StreetcodeContent updatedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - var responseContent = JsonConvert.DeserializeObject(response.Content); + Assert.True(response.IsSuccessStatusCode); - Assert.Multiple(() => - { - Assert.True(response.IsSuccessStatusCode); - Assert.Equal(updatedStreetcode.Title, responseContent.Title); - Assert.Equal(updatedStreetcode.TransliterationUrl, responseContent.TransliterationUrl); - }); + //StreetcodeContent updatedStreetcode = ExtractTestStreetcode.StreetcodeForTest; + + //var responseContent = JsonConvert.DeserializeObject(response.Content); + + //Assert.Multiple(() => + //{ + // Assert.True(response.IsSuccessStatusCode); + // Assert.Equal(updatedStreetcode.Title, responseContent.Title); + // Assert.Equal(updatedStreetcode.TransliterationUrl, responseContent.TransliterationUrl); + //}); } } } diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs index 2f4030238..2a7cc5b5a 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs @@ -36,8 +36,7 @@ public override void Before(MethodInfo methodUnderTest) public override void After(MethodInfo methodUnderTest) { var sqlDbHelper = BaseControllerTests.GetSqlDbHelper(); - StreetcodeForTest.Title = "Updated Title"; - StreetcodeForTest.TransliterationUrl = "updated-transliteration-url"; + sqlDbHelper.RemoveRange(); sqlDbHelper.SaveChanges(); } } diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/SqlDbHelper.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/SqlDbHelper.cs index 137d0b39e..1aa65daf4 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/SqlDbHelper.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/SqlDbHelper.cs @@ -83,6 +83,12 @@ public T DeleteItem(T item) return this.dbContext.Set().Remove(item).Entity; } + public void RemoveRange() + where T : class, new() + { + this.dbContext.Set().RemoveRange(this.dbContext.Set()); + this.dbContext.SaveChanges(); + } public void SaveChanges() => this.dbContext.SaveChanges(); } } From 10627114c809351effa1f43aa067096c6df6ae67 Mon Sep 17 00:00:00 2001 From: ValDekh Date: Tue, 12 Dec 2023 17:59:43 +0200 Subject: [PATCH 10/15] Add some test cases --- .../Streetcode/StreetcodeControllerTests.cs | 71 ++++++++++++++----- 1 file changed, 54 insertions(+), 17 deletions(-) diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs index bcd5ed5fa..931f4277f 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs @@ -16,6 +16,7 @@ using Streetcode.DAL.Entities.Streetcode; using Streetcode.XIntegrationTest.ControllerTests.Utils; using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; +using System.Net; using Xunit; namespace Streetcode.XIntegrationTest.ControllerTests.Streetcode @@ -35,9 +36,59 @@ public async Task Update_ReturnSuccessStatusCode() { StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - var updateStreetCodeDTO = new StreetcodeUpdateDTO + var updateStreetCodeDTO = this.CreateMoqStreetCodeDTO(expectedStreetcode.Id); + var response = await this.client.UpdateAsync(updateStreetCodeDTO); + + Assert.True(response.IsSuccessStatusCode); + } + + [Fact] + [ExtractTestStreetcode] + public async Task Update_ChangesTitleAndTransliterationUrl() + { + StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; + + var updateStreetCodeDTO = this.CreateMoqStreetCodeDTO(expectedStreetcode.Id); + await this.client.UpdateAsync(updateStreetCodeDTO); + + var responseGetByIdUpdated = await client.GetByIdAsync(expectedStreetcode.Id); + var responseContent = JsonConvert.DeserializeObject(responseGetByIdUpdated.Content); + + Assert.Multiple(() => + { + Assert.Equal(updateStreetCodeDTO.Title, responseContent.Title); + Assert.Equal(updateStreetCodeDTO.TransliterationUrl, responseContent.TransliterationUrl); + }); + } + + [Fact] + [ExtractTestStreetcode] + public async Task Update_WithIncorrectId_ReturnsBadRequest() + { + + StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; + var updateStreetCodeDTO = this.CreateMoqStreetCodeDTO(expectedStreetcode.Id + 1); + var response = await this.client.UpdateAsync(updateStreetCodeDTO); + + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + } + + [Fact] + [ExtractTestStreetcode] + public async Task Update_WithInvalidData_ReturnsBadRequest() + { + StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; + var updateStreetCodeDTO = this.CreateMoqStreetCodeDTO(expectedStreetcode.Id); + updateStreetCodeDTO.Title = String.IsNullOrEmpty; // Invalid data + var response = await this.client.UpdateAsync(updateStreetCodeDTO); + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + } + + private StreetcodeUpdateDTO CreateMoqStreetCodeDTO(int id) + { + return new StreetcodeUpdateDTO { - Id = expectedStreetcode.Id, + Id = id, Title = "New Title", TransliterationUrl = "new-transliteration-url", Tags = new List(), @@ -53,22 +104,8 @@ public async Task Update_ReturnSuccessStatusCode() RelatedFigures = new List(), StreetcodeArts = new List(), StatisticRecords = new List(), - StreetcodeCategoryContents = new List() + StreetcodeCategoryContents = new List(), }; - var response = await this.client.UpdateAsync(updateStreetCodeDTO); - - Assert.True(response.IsSuccessStatusCode); - - //StreetcodeContent updatedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - - //var responseContent = JsonConvert.DeserializeObject(response.Content); - - //Assert.Multiple(() => - //{ - // Assert.True(response.IsSuccessStatusCode); - // Assert.Equal(updatedStreetcode.Title, responseContent.Title); - // Assert.Equal(updatedStreetcode.TransliterationUrl, responseContent.TransliterationUrl); - //}); } } } From ba5484266548efd3efb6bacfb16771800d899af0 Mon Sep 17 00:00:00 2001 From: ValDekh Date: Wed, 13 Dec 2023 18:03:40 +0200 Subject: [PATCH 11/15] Add Update StreetCode Integration Tests --- .../Streetcode/StreetcodeControllerTests.cs | 38 +++++++++++++++---- .../Streetcode/ExtractTestStreetcode.cs | 17 ++++++++- 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs index 931f4277f..796e3ef53 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs @@ -1,5 +1,4 @@ -using Newtonsoft.Json; -using Streetcode.BLL.DTO.AdditionalContent.Subtitles; +using Streetcode.BLL.DTO.AdditionalContent.Subtitles; using Streetcode.BLL.DTO.AdditionalContent.Tag; using Streetcode.BLL.DTO.Analytics.Update; using Streetcode.BLL.DTO.Media.Art; @@ -13,6 +12,7 @@ using Streetcode.BLL.DTO.Streetcode.Update; using Streetcode.BLL.DTO.Timeline.Update; using Streetcode.BLL.DTO.Toponyms; +using Streetcode.BLL.Enums; using Streetcode.DAL.Entities.Streetcode; using Streetcode.XIntegrationTest.ControllerTests.Utils; using Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode; @@ -52,12 +52,11 @@ public async Task Update_ChangesTitleAndTransliterationUrl() await this.client.UpdateAsync(updateStreetCodeDTO); var responseGetByIdUpdated = await client.GetByIdAsync(expectedStreetcode.Id); - var responseContent = JsonConvert.DeserializeObject(responseGetByIdUpdated.Content); - + var streetCodeContent = CaseIsensitiveJsonDeserializer.Deserialize(responseGetByIdUpdated.Content); Assert.Multiple(() => { - Assert.Equal(updateStreetCodeDTO.Title, responseContent.Title); - Assert.Equal(updateStreetCodeDTO.TransliterationUrl, responseContent.TransliterationUrl); + Assert.Equal(updateStreetCodeDTO.Title, streetCodeContent.Title); + Assert.Equal(updateStreetCodeDTO.TransliterationUrl, streetCodeContent.TransliterationUrl); }); } @@ -79,7 +78,32 @@ public async Task Update_WithInvalidData_ReturnsBadRequest() { StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; var updateStreetCodeDTO = this.CreateMoqStreetCodeDTO(expectedStreetcode.Id); - updateStreetCodeDTO.Title = String.IsNullOrEmpty; // Invalid data + updateStreetCodeDTO.Title = null; // Invalid data + var response = await this.client.UpdateAsync(updateStreetCodeDTO); + Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); + } + + [Fact] + [ExtractTestStreetcode] + public async Task Update_WithInvalidTags_ReturnsBadRequest() + { + StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; + var updateStreetCodeDTO = this.CreateMoqStreetCodeDTO(expectedStreetcode.Id); + + // Invalid tag data + updateStreetCodeDTO.Tags = new List + { + new StreetcodeTagUpdateDTO + { + Id = 9999, // Non-existent tag ID + Title = "Invalid Tag", + IsVisible = true, + Index = 0, + StreetcodeId = expectedStreetcode.Id, + ModelState = ModelState.Updated + }, + }; + var response = await this.client.UpdateAsync(updateStreetCodeDTO); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); } diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs index 2a7cc5b5a..c4f325642 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestStreetcode.cs @@ -36,8 +36,21 @@ public override void Before(MethodInfo methodUnderTest) public override void After(MethodInfo methodUnderTest) { var sqlDbHelper = BaseControllerTests.GetSqlDbHelper(); - sqlDbHelper.RemoveRange(); - sqlDbHelper.SaveChanges(); + var streetcodeContent = sqlDbHelper.GetExistItem(); + if (streetcodeContent != null) + { + // Restore the original StreetcodeContent + streetcodeContent.EventStartOrPersonBirthDate = StreetcodeForTest.EventStartOrPersonBirthDate; + streetcodeContent.EventEndOrPersonDeathDate = StreetcodeForTest.EventEndOrPersonDeathDate; + streetcodeContent.ViewCount = StreetcodeForTest.ViewCount; + streetcodeContent.DateString = StreetcodeForTest.DateString; + streetcodeContent.Alias = StreetcodeForTest.Alias; + streetcodeContent.Title = StreetcodeForTest.Title; + streetcodeContent.TransliterationUrl = StreetcodeForTest.TransliterationUrl; + streetcodeContent.Teaser = StreetcodeForTest.Teaser; + + sqlDbHelper.SaveChanges(); + } } } } From ac8c2d9363b85b433b71f7d9e733f877a1ed0ea6 Mon Sep 17 00:00:00 2001 From: ValDekh Date: Thu, 14 Dec 2023 12:12:37 +0200 Subject: [PATCH 12/15] Correct AppSettings --- Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json | 3 +-- Streetcode/Streetcode.WebApi/appsettings.Local.json | 3 +-- Streetcode/Streetcode.WebApi/appsettings.json | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json b/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json index a8da0b7b3..6ed5ebe22 100644 --- a/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json +++ b/Streetcode/Streetcode.WebApi/appsettings.IntegrationTests.json @@ -1,7 +1,6 @@ { "ConnectionStrings": { - // "DefaultConnection": "Server=DESKTOP-I7Q35NQ\\SQLEXPRESS;Database=StreetcodeDbtest;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true;TrustServerCertificate=true" - "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=StreetcodeDbtest;Integrated Security=True" + "DefaultConnection": "Server=DESKTOP-I7Q35NQ\\SQLEXPRESS;Database=StreetcodeDbtest;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true;TrustServerCertificate=true" }, "Blob": { "BlobStoreKey": "BigThirtyTwoBiteCoolTestKeyCrypt", diff --git a/Streetcode/Streetcode.WebApi/appsettings.Local.json b/Streetcode/Streetcode.WebApi/appsettings.Local.json index f027ab9e6..eece212cc 100644 --- a/Streetcode/Streetcode.WebApi/appsettings.Local.json +++ b/Streetcode/Streetcode.WebApi/appsettings.Local.json @@ -1,7 +1,6 @@ { "ConnectionStrings": { - // "DefaultConnection": "Server=127.0.0.1;Database=StreetcodeDb;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true" - "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=StreetcodeDbtest;Integrated Security=True" + "DefaultConnection": "Server=127.0.0.1;Database=StreetcodeDb;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true" }, "CORS": { "AllowedOrigins": [ "http://localhost:3000" ], diff --git a/Streetcode/Streetcode.WebApi/appsettings.json b/Streetcode/Streetcode.WebApi/appsettings.json index cf0046d47..2e035202e 100644 --- a/Streetcode/Streetcode.WebApi/appsettings.json +++ b/Streetcode/Streetcode.WebApi/appsettings.json @@ -1,7 +1,6 @@ { "ConnectionStrings": { - // "DefaultConnection": "Server=127.0.0.1;Database=StreetcodeDb;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true" - "DefaultConnection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=StreetcodeDbtest;Integrated Security=True" + "DefaultConnection": "Server=127.0.0.1;Database=StreetcodeDb;User Id=sa;Password=Admin@1234;MultipleActiveResultSets=true" }, "EmailConfiguration": { "From": "streetcodefordev@gmail.com", From 36e1f75a2cf47f0d3326f03b0f97699795192677 Mon Sep 17 00:00:00 2001 From: ValDekh Date: Fri, 15 Dec 2023 12:52:17 +0200 Subject: [PATCH 13/15] Add update folder --- .../{ => Update}/StreetcodeControllerTests.cs | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) rename Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/{ => Update}/StreetcodeControllerTests.cs (85%) diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeControllerTests.cs similarity index 85% rename from Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs rename to Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeControllerTests.cs index 796e3ef53..abaa5dd83 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/StreetcodeControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeControllerTests.cs @@ -19,7 +19,7 @@ using System.Net; using Xunit; -namespace Streetcode.XIntegrationTest.ControllerTests.Streetcode +namespace Streetcode.XIntegrationTest.ControllerTests.Streetcode.Update { public class StreetcodeControllerTests : BaseControllerTests, IClassFixture> @@ -36,8 +36,8 @@ public async Task Update_ReturnSuccessStatusCode() { StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - var updateStreetCodeDTO = this.CreateMoqStreetCodeDTO(expectedStreetcode.Id); - var response = await this.client.UpdateAsync(updateStreetCodeDTO); + var updateStreetCodeDTO = CreateMoqStreetCodeDTO(expectedStreetcode.Id); + var response = await client.UpdateAsync(updateStreetCodeDTO); Assert.True(response.IsSuccessStatusCode); } @@ -48,8 +48,8 @@ public async Task Update_ChangesTitleAndTransliterationUrl() { StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - var updateStreetCodeDTO = this.CreateMoqStreetCodeDTO(expectedStreetcode.Id); - await this.client.UpdateAsync(updateStreetCodeDTO); + var updateStreetCodeDTO = CreateMoqStreetCodeDTO(expectedStreetcode.Id); + await client.UpdateAsync(updateStreetCodeDTO); var responseGetByIdUpdated = await client.GetByIdAsync(expectedStreetcode.Id); var streetCodeContent = CaseIsensitiveJsonDeserializer.Deserialize(responseGetByIdUpdated.Content); @@ -66,8 +66,8 @@ public async Task Update_WithIncorrectId_ReturnsBadRequest() { StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - var updateStreetCodeDTO = this.CreateMoqStreetCodeDTO(expectedStreetcode.Id + 1); - var response = await this.client.UpdateAsync(updateStreetCodeDTO); + var updateStreetCodeDTO = CreateMoqStreetCodeDTO(expectedStreetcode.Id + 1); + var response = await client.UpdateAsync(updateStreetCodeDTO); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); } @@ -77,9 +77,9 @@ public async Task Update_WithIncorrectId_ReturnsBadRequest() public async Task Update_WithInvalidData_ReturnsBadRequest() { StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - var updateStreetCodeDTO = this.CreateMoqStreetCodeDTO(expectedStreetcode.Id); + var updateStreetCodeDTO = CreateMoqStreetCodeDTO(expectedStreetcode.Id); updateStreetCodeDTO.Title = null; // Invalid data - var response = await this.client.UpdateAsync(updateStreetCodeDTO); + var response = await client.UpdateAsync(updateStreetCodeDTO); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); } @@ -88,7 +88,7 @@ public async Task Update_WithInvalidData_ReturnsBadRequest() public async Task Update_WithInvalidTags_ReturnsBadRequest() { StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - var updateStreetCodeDTO = this.CreateMoqStreetCodeDTO(expectedStreetcode.Id); + var updateStreetCodeDTO = CreateMoqStreetCodeDTO(expectedStreetcode.Id); // Invalid tag data updateStreetCodeDTO.Tags = new List @@ -104,7 +104,7 @@ public async Task Update_WithInvalidTags_ReturnsBadRequest() }, }; - var response = await this.client.UpdateAsync(updateStreetCodeDTO); + var response = await client.UpdateAsync(updateStreetCodeDTO); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); } From 2b1b477ecaa1a0381ec8527119651e79e0836318 Mon Sep 17 00:00:00 2001 From: ValDekh Date: Mon, 18 Dec 2023 10:40:02 +0200 Subject: [PATCH 14/15] Change naming --- ...eControllerTests.cs => StreetcodeUpdateControllerTests.cs} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/{StreetcodeControllerTests.cs => StreetcodeUpdateControllerTests.cs} (97%) diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeUpdateControllerTests.cs similarity index 97% rename from Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeControllerTests.cs rename to Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeUpdateControllerTests.cs index abaa5dd83..a1a8f7ec0 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeUpdateControllerTests.cs @@ -21,10 +21,10 @@ namespace Streetcode.XIntegrationTest.ControllerTests.Streetcode.Update { - public class StreetcodeControllerTests : + public class StreetcodeUpdateControllerTests : BaseControllerTests, IClassFixture> { - public StreetcodeControllerTests(CustomWebApplicationFactory factory) + public StreetcodeUpdateControllerTests(CustomWebApplicationFactory factory) : base(factory, "/api/Streetcode") { From 4d8ed3414f1e4e8e359e3831e59e73d39f8afdb6 Mon Sep 17 00:00:00 2001 From: Valerii Dekhtiuk Date: Mon, 18 Dec 2023 23:37:45 +0200 Subject: [PATCH 15/15] Correct some errors --- .../Update/StreetcodeUpdateControllerTests.cs | 56 ++++++++++++------- .../Streetcode/ExtractTestUpdateStreetcode.cs | 56 +++++++++++++++++++ 2 files changed, 92 insertions(+), 20 deletions(-) create mode 100644 Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestUpdateStreetcode.cs diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeUpdateControllerTests.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeUpdateControllerTests.cs index a1a8f7ec0..1349106c1 100644 --- a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeUpdateControllerTests.cs +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Streetcode/Update/StreetcodeUpdateControllerTests.cs @@ -31,24 +31,30 @@ public StreetcodeUpdateControllerTests(CustomWebApplicationFactory fact } [Fact] - [ExtractTestStreetcode] + [ExtractTestUpdateStreetcode] public async Task Update_ReturnSuccessStatusCode() { - StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; + StreetcodeContent expectedStreetcode = ExtractTestUpdateStreetcode.StreetcodeForTest; - var updateStreetCodeDTO = CreateMoqStreetCodeDTO(expectedStreetcode.Id); + var updateStreetCodeDTO = CreateMoqStreetCodeDTO( + expectedStreetcode.Id, + expectedStreetcode.Index, + expectedStreetcode.TransliterationUrl); var response = await client.UpdateAsync(updateStreetCodeDTO); Assert.True(response.IsSuccessStatusCode); } [Fact] - [ExtractTestStreetcode] + [ExtractTestUpdateStreetcode] public async Task Update_ChangesTitleAndTransliterationUrl() { - StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; + StreetcodeContent expectedStreetcode = ExtractTestUpdateStreetcode.StreetcodeForTest; - var updateStreetCodeDTO = CreateMoqStreetCodeDTO(expectedStreetcode.Id); + var updateStreetCodeDTO = CreateMoqStreetCodeDTO( + expectedStreetcode.Id, + expectedStreetcode.Index, + expectedStreetcode.TransliterationUrl); await client.UpdateAsync(updateStreetCodeDTO); var responseGetByIdUpdated = await client.GetByIdAsync(expectedStreetcode.Id); @@ -56,39 +62,48 @@ public async Task Update_ChangesTitleAndTransliterationUrl() Assert.Multiple(() => { Assert.Equal(updateStreetCodeDTO.Title, streetCodeContent.Title); - Assert.Equal(updateStreetCodeDTO.TransliterationUrl, streetCodeContent.TransliterationUrl); + Assert.Equal(updateStreetCodeDTO.DateString, streetCodeContent.DateString); }); } [Fact] - [ExtractTestStreetcode] - public async Task Update_WithIncorrectId_ReturnsBadRequest() + [ExtractTestUpdateStreetcode] + public async Task Update_WithInvalidId_ReturnsBadRequest() { - StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - var updateStreetCodeDTO = CreateMoqStreetCodeDTO(expectedStreetcode.Id + 1); + StreetcodeContent expectedStreetcode = ExtractTestUpdateStreetcode.StreetcodeForTest; + var updateStreetCodeDTO = CreateMoqStreetCodeDTO( + expectedStreetcode.Id + 1, + expectedStreetcode.Index, + expectedStreetcode.TransliterationUrl); var response = await client.UpdateAsync(updateStreetCodeDTO); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); } [Fact] - [ExtractTestStreetcode] + [ExtractTestUpdateStreetcode] public async Task Update_WithInvalidData_ReturnsBadRequest() { - StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - var updateStreetCodeDTO = CreateMoqStreetCodeDTO(expectedStreetcode.Id); + StreetcodeContent expectedStreetcode = ExtractTestUpdateStreetcode.StreetcodeForTest; + var updateStreetCodeDTO = CreateMoqStreetCodeDTO( + expectedStreetcode.Id, + expectedStreetcode.Index, + expectedStreetcode.TransliterationUrl); updateStreetCodeDTO.Title = null; // Invalid data var response = await client.UpdateAsync(updateStreetCodeDTO); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); } [Fact] - [ExtractTestStreetcode] + [ExtractTestUpdateStreetcode] public async Task Update_WithInvalidTags_ReturnsBadRequest() { - StreetcodeContent expectedStreetcode = ExtractTestStreetcode.StreetcodeForTest; - var updateStreetCodeDTO = CreateMoqStreetCodeDTO(expectedStreetcode.Id); + StreetcodeContent expectedStreetcode = ExtractTestUpdateStreetcode.StreetcodeForTest; + var updateStreetCodeDTO = CreateMoqStreetCodeDTO( + expectedStreetcode.Id, + expectedStreetcode.Index, + expectedStreetcode.TransliterationUrl); // Invalid tag data updateStreetCodeDTO.Tags = new List @@ -108,13 +123,14 @@ public async Task Update_WithInvalidTags_ReturnsBadRequest() Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); } - private StreetcodeUpdateDTO CreateMoqStreetCodeDTO(int id) + private StreetcodeUpdateDTO CreateMoqStreetCodeDTO(int id, int index, string transliterationUrl ) { return new StreetcodeUpdateDTO { Id = id, + Index = index, Title = "New Title", - TransliterationUrl = "new-transliteration-url", + TransliterationUrl = transliterationUrl, Tags = new List(), Facts = new List(), Audios = new List(), @@ -123,7 +139,7 @@ private StreetcodeUpdateDTO CreateMoqStreetCodeDTO(int id) Partners = new List(), Toponyms = new List(), Subtitles = new List(), - DateString = "20 травня 2023", + DateString = "22 травня 2023", TimelineItems = new List(), RelatedFigures = new List(), StreetcodeArts = new List(), diff --git a/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestUpdateStreetcode.cs b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestUpdateStreetcode.cs new file mode 100644 index 000000000..8e0f5b71a --- /dev/null +++ b/Streetcode/Streetcode.XIntegrationTest/ControllerTests/Utils/BeforeAndAfterTestAtribute/Streetcode/ExtractTestUpdateStreetcode.cs @@ -0,0 +1,56 @@ +using Streetcode.DAL.Entities.Streetcode; +using System.Reflection; +using Xunit.Sdk; + +namespace Streetcode.XIntegrationTest.ControllerTests.Utils.BeforeAndAfterTestAtribute.Streetcode +{ + [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)] + class ExtractTestUpdateStreetcode : BeforeAfterTestAttribute + { + public static StreetcodeContent StreetcodeForTest; + + public override void Before(MethodInfo methodUnderTest) + { + var sqlDbHelper = BaseControllerTests.GetSqlDbHelper(); + StreetcodeForTest = sqlDbHelper.GetExistItem(); + if (StreetcodeForTest == null) + { + StreetcodeForTest = sqlDbHelper.AddNewItem(new StreetcodeContent() + { + Index = new Random().Next(0, 1000000), + UpdatedAt = DateTime.Now, + CreatedAt = DateTime.Now, + EventStartOrPersonBirthDate = DateTime.Now, + EventEndOrPersonDeathDate = DateTime.Now, + ViewCount = 1, + DateString = "20 травня 2023", + Alias = "dsf", + Title = "Title", + TransliterationUrl = Guid.NewGuid().ToString(), + Teaser = "Test Teaser", + }); + sqlDbHelper.SaveChanges(); + } + } + + public override void After(MethodInfo methodUnderTest) + { + var sqlDbHelper = BaseControllerTests.GetSqlDbHelper(); + var streetcodeContent = sqlDbHelper.GetExistItem(); + if (streetcodeContent != null) + { + // Restore the original StreetcodeContent + streetcodeContent.EventStartOrPersonBirthDate = StreetcodeForTest.EventStartOrPersonBirthDate; + streetcodeContent.EventEndOrPersonDeathDate = StreetcodeForTest.EventEndOrPersonDeathDate; + streetcodeContent.ViewCount = StreetcodeForTest.ViewCount; + streetcodeContent.DateString = StreetcodeForTest.DateString; + streetcodeContent.Alias = StreetcodeForTest.Alias; + streetcodeContent.Title = StreetcodeForTest.Title; + streetcodeContent.TransliterationUrl = StreetcodeForTest.TransliterationUrl; + streetcodeContent.Teaser = StreetcodeForTest.Teaser; + + sqlDbHelper.SaveChanges(); + } + } + } +}