Beispiel #1
0
 public void SettingFieldsByPropertyShouldFillInternalDict()
 {
     var item = new CIFItem();
     Expect(item["Supplier ID"] == null);
     item.SupplierID = "ID";
     Expect(item["Supplier ID"] == "ID");
 }
Beispiel #2
0
        public void ShouldCorrectlyHandlePunchOutEnabledValues()
        {
            var item = new CIFItem();
            var cases = new Dictionary<string, bool?>()
                            {
                                {"True", true},
                                {"TRUE", true},
                                {"true", true},
                                {"t", true},
                                {"T", true},
                                {"1", true},

                                {"False", false},
                                {"FALSE", false},
                                {"false", false},
                                {"f", false},
                                {"F", false},
                                {"0", false},

                                {"", null},
                                {" ", null},
                                {"fuzzy", null},
                                {" true", null},
                                {" false", null},
                                {"true ", null},
                                {"false ", null},
                                {"X", null},
                                {"Y", null},
                                {"N", null},
                            };

            foreach(var c in cases)
            {
                item[Constants.PunchOutEnabled] = c.Key;
                Expect(item.PunchOutEnabled == c.Value, "{0} is not {1}", c.Key, c.Value);
            }

            // Check null
            item[Constants.PunchOutEnabled] = null;
            Expect(item.PunchOutEnabled == null);
        }
Beispiel #3
0
        public void ShouldWriteCIFFile()
        {
            using (var stream = OpenStreamWriter("Output-Test.cif"))
            {
                var writer = new CIFWriter(stream);
                var debug = new DebuggingCIFWriter();

                var items = new List<CIFItem>();
                var item = new CIFItem();
                item["Supplier ID"] = "ALT-F4";
                item["Supplier Part ID"] = "12345";
                // TODO fill all standard fields
                items.Add(item);
                // TODO add more
                debug.Items = items;

                debug.Header = new CIFHeader();
                debug.Header.Charset = "UTF-8";
                debug.Header.CodeFormat = "UNSPSC";
                debug.Header.Comments = "This is a comment";
                debug.Header.Currency = "EUR";
                debug.Header.DUNS = null;
                debug.Header.FieldNames = string.Join(",", Constants.RequiredFields);
                debug.Header.ItemCount = items.Count;
                debug.Header.LoadMode = 'F';
                debug.Header.SupplierIDDomain = "DUNS";
                debug.Header.TimestampDate = DateTime.Now;
                debug.Header.UNUoM = true;

                debug.Trailer = null;

                writer.Write(debug);

                Expect(debug.HeaderCalls == 1);
                Expect(debug.ItemCalls == 1);
                Expect(debug.TrailerCalls == 1);

                // TODO read in and compare back-to-back
            }
        }
Beispiel #4
0
 public void ShouldNotValidateUnlessAllRequiredFieldsAreSet()
 {
     var item = new CIFItem();
     Expect(item.IsValid == false);
     Expect(item.Errors.Length > 0);
     Expect(item.Errors.Any(e => Regex.IsMatch(e, "Supplier ID")));
     item["Supplier ID"] = "ALT-F4";
     item["Supplier Part ID"] = "12345";
     Expect(item.IsValid == false);
     Expect(item.Errors.Length > 0);
     Expect(item.Errors.Any(e => !Regex.IsMatch(e, "Supplier ID")));
     item.ManufacturerPartID = "ManuPartID";
     item.ItemDescription = "Item description";
     item.SPSCCode = "SPSC";
     item.UnitPrice = 1.23m;
     item.UnitsOfMeasure = "EA";
     item.LeadTime = 7;
     item.ManufacturerName = "Meplato";
     item.SupplierURL = "http://supplysite.net/";
     item.ManufacturerURL = "http://producer.net/";
     item.MarketPrice = 1.50m;
     Expect(item.IsValid == true);
     Expect(item.Errors.Length == 0);
 }
 public override void HandleItem(CIFItem item)
 {
     ItemCalls += 1;
     Items.Add(item);
 }
Beispiel #6
0
 public void ValidationIsEvaluatedWhenRetrievingErrors()
 {
     var item = new CIFItem();
     Expect(item.Errors != null);
     Expect(item.Errors.Length > 0);
 }
Beispiel #7
0
 public void ValidationIsEvaluatedWhenCallingIsValid()
 {
     var item = new CIFItem();
     Expect(item.IsValid == false);
     Expect(item.Errors != null);
     Expect(item.Errors.Length > 0);
 }
Beispiel #8
0
 public void ValidationErrorsOccurOnNullOnly()
 {
     // we allow items to be empty, but not null
     var item = new CIFItem();
     Expect(item.IsValid == false); // triggers validation and sets errors
     Expect(item.Errors != null);
     Expect(item.Errors.Any(e => Regex.IsMatch(e, "Supplier ID")));
     item.SupplierID = "";
     Expect(item.IsValid == false); // triggers validation and sets errors
     Expect(item.Errors.Any(e => !Regex.IsMatch(e, "Supplier ID")));
 }
Beispiel #9
0
        public void ShouldSerializeGivenFieldsToCSV()
        {
            var item = new CIFItem();
            // required fields
            item.SupplierID = "ALT-F4";
            item.SupplierPartID = "12345";
            item.ManufacturerPartID = "ManuPartID";
            item.ItemDescription = "3.5\" disc";
            item.SPSCCode = "SPSC";
            item.UnitPrice = 1230.00m;
            item.UnitsOfMeasure = "EA";
            item.LeadTime = 7;
            item.ManufacturerName = "Meplato";
            item.SupplierURL = "http://supplysite.net/";
            item.ManufacturerURL = "http://producer.net/";
            item.MarketPrice = 1500.12m;
            // optional fields
            item.Tier = "1";
            item.Name = "Name";
            item.Language = "de_DE";
            item.Currency = "EUR";
            item.ExpirationDate = new DateTime(2010, 1, 13, 23, 01, 02);
            item.EffectiveDate = new DateTime(2011, 2, 14, 22, 02, 04);
            item.ClassificationCodes = new Dictionary<string, string>() {{"ACME", "8BE100" }};
            item.ParametricData = new Dictionary<string, string>()
                                      {{"TYPE", "SEAMLESS"}, {"SIZE", "20"}, {"WEIGHT PER FOOT", "94.00"}};
            item.ParametricName = "PIPES";
            item.PunchOutEnabled = true;
            item.TerritoryAvailable = "US,GB,IT";
            item.SupplierPartAuxiliaryID = "red";
            item.Delete = true;
            // custom fields
            item["Mall Groups"] = "A,B,C";

            // validate
            Expect(item.IsValid == true);
            Expect(item.Errors.Length == 0);

            // Generate CSV
            Expect("" == item.ToCSV(null));
            Expect("" == item.ToCSV(new string[0]));

            // required
            string result = item.ToCSV(Constants.RequiredFields);
            Expect("ALT-F4,12345,ManuPartID,3.5\" disc,SPSC,1230.00,EA,7,Meplato,http://supplysite.net/,http://producer.net/,1500.12" == result);

            // required + optional
            string[] requiredPlusOptional = Constants.RequiredFields.Concat(Constants.OptionalFields).ToArray();
            result = item.ToCSV(requiredPlusOptional);
            Expect(
                "ALT-F4,12345,ManuPartID,3.5\" disc,SPSC,1230.00,EA,7,Meplato,http://supplysite.net/,http://producer.net/,1500.12,1,Name,de_DE,EUR,2010-01-13,2011-02-14,{ACME=8BE100},{TYPE=SEAMLESS;SIZE=20;WEIGHT PER FOOT=94.00},PIPES,True,\"US,GB,IT\",red,True" ==
                result);

            // required + optional + custom
            string[] requiredPlusOptionalPlusCustom = Constants.RequiredFields.Concat(Constants.OptionalFields).Concat(new[] {"Mall Groups"}).ToArray();
            result = item.ToCSV(requiredPlusOptionalPlusCustom);
            Expect(
                "ALT-F4,12345,ManuPartID,3.5\" disc,SPSC,1230.00,EA,7,Meplato,http://supplysite.net/,http://producer.net/,1500.12,1,Name,de_DE,EUR,2010-01-13,2011-02-14,{ACME=8BE100},{TYPE=SEAMLESS;SIZE=20;WEIGHT PER FOOT=94.00},PIPES,True,\"US,GB,IT\",red,True,\"A,B,C\"" ==
                result);

            // required + optional + custom + some non-specified
            string[] requiredPlusOptionalPlusCustomPlusMissing = Constants.RequiredFields.Concat(Constants.OptionalFields).Concat(new[] { "Mall Groups", "Not specified", "Another non-specified" }).ToArray();
            result = item.ToCSV(requiredPlusOptionalPlusCustomPlusMissing);
            Expect(
                "ALT-F4,12345,ManuPartID,3.5\" disc,SPSC,1230.00,EA,7,Meplato,http://supplysite.net/,http://producer.net/,1500.12,1,Name,de_DE,EUR,2010-01-13,2011-02-14,{ACME=8BE100},{TYPE=SEAMLESS;SIZE=20;WEIGHT PER FOOT=94.00},PIPES,True,\"US,GB,IT\",red,True,\"A,B,C\",," ==
                result);
        }