public void PrintSimDetailFactory_PopulateWithTwoBackTextFields_SecondBackPanelFieldSetCorrectly()
        {
            // Arrange
            var simDetailFactory = new PrintSimDetailFactory();

            ProductField[] productFields = new ProductField[]
            {
                new ProductField {
                    Deleted       = false, Editable = false, Printable = true, Font = "consolas", PrintSide = 1,
                    FontColourRGB = Color.Black.ToArgb(), FontSize = 10, X = 15, Y = 30, Value = Encoding.UTF8.GetBytes("Hello From Print Sim field 1")
                },
                new ProductField {
                    Deleted       = false, Editable = false, Printable = true, Font = "arial", PrintSide = 1,
                    FontColourRGB = Color.Red.ToArgb(), FontSize = 12, X = 20, Y = 52, Value = Encoding.UTF8.GetBytes("Hello From Print Sim field 2")
                }
            };

            var secondField     = productFields[1];
            var secondTextField = new PrintSimCardTextDetail(secondField.ValueToString(), secondField.X, secondField.Y, secondField.Font,
                                                             secondField.FontSize, secondField.FontColourRGB, FontStyle.Regular);

            // Act
            var simPrintDetails = simDetailFactory.Populate(productFields);

            // Assert
            simPrintDetails.BackPanelText[1].Should().BeEquivalentTo(secondTextField);
        }
        public void PrintSimDetailFactory_PopulateWithBackMixedFields_BackPanelTextFieldSetCorrectly()
        {
            // Arrange
            var simDetailFactory = new PrintSimDetailFactory();

            ProductField[] productFields = new ProductField[]
            {
                new ProductField {
                    Deleted       = false, Editable = false, Printable = true, Font = "consolas", PrintSide = 1, ProductPrintFieldTypeId = 0,
                    FontColourRGB = Color.Black.ToArgb(), FontSize = 10, X = 15, Y = 30, Value = Encoding.UTF8.GetBytes("Hello From Print Sim field 1")
                },
                new ProductField {
                    Deleted       = false, Editable = false, Printable = true, Font = "arial", PrintSide = 1, ProductPrintFieldTypeId = 0,
                    FontColourRGB = Color.Red.ToArgb(), FontSize = 12, X = 20, Y = 52, Value = Encoding.UTF8.GetBytes("Hello From Print Sim field 2")
                },
                new ProductField {
                    Deleted = false, Editable = false, Printable = true, PrintSide = 1, Width = 100, Height = 200, ProductPrintFieldTypeId = 1,
                    X       = 43, Y = 66, Value = Encoding.UTF8.GetBytes("Hello From Print Sim field 3")
                },
                new ProductField {
                    Deleted = false, Editable = false, Printable = true, PrintSide = 1, Width = 430, Height = 789, ProductPrintFieldTypeId = 1,
                    X       = 5, Y = 9, Value = Encoding.UTF8.GetBytes("Hello From Print Sim field 4")
                }
            };

            var firstField     = productFields[0];
            var firstTextField = new PrintSimCardTextDetail(firstField.ValueToString(), firstField.X, firstField.Y, firstField.Font,
                                                            firstField.FontSize, firstField.FontColourRGB, FontStyle.Regular);
            var secondField     = productFields[1];
            var secondTextField = new PrintSimCardTextDetail(secondField.ValueToString(), secondField.X, secondField.Y, secondField.Font,
                                                             secondField.FontSize, secondField.FontColourRGB, FontStyle.Regular);

            // Act
            var simPrintDetails = simDetailFactory.Populate(productFields);

            // Assert
            simPrintDetails.BackPanelText[0].Should().BeEquivalentTo(firstTextField);
            simPrintDetails.BackPanelText[1].Should().BeEquivalentTo(secondTextField);
        }