diff --git a/README.md b/README.md index 71cb53b..2e007c7 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This repository contains the source code for the Meanbee Royal Mail PHP Library. ## Using the Library -To use the library, call the **getMethods** method with your country code ([in the ISO 3166 format](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)), package value, and package weight. +To use the library, call the **getMethods** method with your country code ([in the ISO 3166 format](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)), package value, and package weight. #### Example Usage ```PHP @@ -23,7 +23,7 @@ This program is automatically unit tested with phpunit and travis. ## CSV data format -This library uses six CSV files to determine which shipping methods are available: +This library uses six CSV files to determine which shipping methods are available: 1. [1_countryCodeToZone.csv](https://github.com/meanbee/royalmail/blob/develop/lib/Meanbee/RoyalmailPHPLibrary/data/1_countryToZone.csv) * Country code @@ -32,41 +32,39 @@ This library uses six CSV files to determine which shipping methods are availabl * WORLD_ZONE_EU * WORLD_ZONE_ONE * WORLD_ZONE_TWO - + 2. [2_zoneToDeliveryMethod.csv](https://github.com/meanbee/royalmail/blob/develop/lib/Meanbee/RoyalmailPHPLibrary/data/2_zoneToDeliveryMethod.csv) * World zone - * Shipping zone. + * Shipping zone. + + Each shipping method's name starts with the world zone it links to as prices differ between zones. - Each shipping method's name starts with the world zone it links to as prices differ between zones. - -3. [3_deliveryMethodMeta.csv](https://github.com/meanbee/royalmail/blob/develop/lib/Meanbee/RoyalmailPHPLibrary/data/3_deliveryMethodMeta.csv) +3. [3_deliveryMethodMeta.csv](https://github.com/meanbee/royalmail/blob/develop/lib/Meanbee/RoyalmailPHPLibrary/data/3_deliveryMethodMeta.csv) * Delivery method * Minimum price of method * Maximum price available to the method (the maximum price of shipping cart this method applies to) * Max insurance available on method * Clean method name. The clean method name represents the name of the method group, and is also represented in the 5 and 6 csvs. The clean method name is used to match multiple methods of the same type to the correct group. - + 4. [4_deliveryToPrice.csv](https://github.com/meanbee/royalmail/blob/develop/lib/Meanbee/RoyalmailPHPLibrary/data/4_deliveryToPrice.csv) * Method name * Minimum weight * Maximum weight - * Max insurance value available to the method * Price of method * Max insurance value * In the case of small or medium parcel up to 2kg in weight "SMALL" or "MEDIUM" else blank - -5. [5_cleanNameToMethod.csv](https://github.com/meanbee/royalmail/blob/develop/lib/Meanbee/RoyalmailPHPLibrary/data/5_cleanNameToMethod.csv) + +5. [5_cleanNameToMethod.csv](https://github.com/meanbee/royalmail/blob/develop/lib/Meanbee/RoyalmailPHPLibrary/data/5_cleanNameToMethod.csv) * Method group name * Clean method name * Dirty method name Each method group name is a all lowercase name that represents the group of method names overall. One method name represnts multipel method names. - + 6. [6_cleanNameToMethodGroup](https://github.com/meanbee/royalmail/blob/develop/lib/Meanbee/RoyalmailPHPLibrary/data/6_cleanNameMethodGroup.csv) * Method group name * Clean method name - This csv is used to form list of just the clean method names if necessasary. + This csv is used to form list of just the clean method names if necessasary. Method names are constructed in the WORLDZONE_NAME_WITH_UNDERSCORES format with a separate method being added for each separate foramt. Examples of these can be seen in multiple of the csvs. In the case of extra insurance available on the item, another method must be created. An example can be seen in the 3_deliveryMethodMeta.csv. - diff --git a/data/3_deliveryMethodMeta.csv b/data/3_deliveryMethodMeta.csv index 8555132..a23eef8 100644 --- a/data/3_deliveryMethodMeta.csv +++ b/data/3_deliveryMethodMeta.csv @@ -67,30 +67,42 @@ WORLD_ZONE_TWO_INTERNATIONAL_SIGNED_SMALL_PARCEL_EXTRA_INSURANCE,50.01,250,250," WORLD_ZONE_TWO_INTERNATIONAL_ECONOMY_LETTER,0,20,20,"International Economy Letter" WORLD_ZONE_TWO_INTERNATIONAL_ECONOMY_LARGE_LETTER,0,20,20,"International Economy Large Letter" WORLD_ZONE_TWO_INTERNATIONAL_ECONOMY_SMALL_PARCEL,0,20,20,"International Economy Small Parcel" -UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM_500,0,500,500,"Special Delivery: Guaranteed by 1pm" -UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM_1000,501,1000,1000,"Special Delivery: Guaranteed by 1pm" -UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM_2500,1001,2500,2500,"Special Delivery: Guaranteed by 1pm" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_500,0,500,500,"Special Delivery: Guaranteed by 1pm" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_1000,501,1000,1000,"Special Delivery: Guaranteed by 1pm" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_2500,1001,2500,2500,"Special Delivery: Guaranteed by 1pm" UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_50,0,50,50,"Special Delivery: Guaranteed by 9am" UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_1000,51,1000,1000,"Special Delivery: Guaranteed by 9am" UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_2500,1001,2500,2500,"Special Delivery: Guaranteed by 9am" -UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM_SATURDAY_500,0,500,500,"Special Delivery: Guaranteed by 1pm Saturday" -UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM_SATURDAY_1000,501,1000,1000,"Special Delivery: Guaranteed by 1pm Saturday" -UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM_SATURDAY_2500,1001,2500,2500,"Special Delivery: Guaranteed by 1pm Saturday" -UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_9AM_SATURDAY_50,0,50,50,"Special Delivery: Guaranteed by 9am Saturday" -UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_9AM_SATURDAY_1000,51,1000,1000,"Special Delivery: Guaranteed by 9am Saturday" -UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_9AM_SATURDAY_2500,1001,2500,2500,"Special Delivery: Guaranteed by 9am Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_500,0,500,500,"Special Delivery: Guaranteed by 1pm Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_1000,501,1000,1000,"Special Delivery: Guaranteed by 1pm Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_2500,1001,2500,2500,"Special Delivery: Guaranteed by 1pm Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_50,0,50,50,"Special Delivery: Guaranteed by 9am Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_1000,51,1000,1000,"Special Delivery: Guaranteed by 9am Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_2500,1001,2500,2500,"Special Delivery: Guaranteed by 9am Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_500,0,500,500,"Special Delivery: Guaranteed by 1pm" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_1000,501,1000,1000,"Special Delivery: Guaranteed by 1pm" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_2500,1001,2500,2500,"Special Delivery: Guaranteed by 1pm" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_50,0,50,50,"Special Delivery: Guaranteed by 9am" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_1000,51,1000,1000,"Special Delivery: Guaranteed by 9am" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_2500,1001,2500,2500,"Special Delivery: Guaranteed by 9am" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_500,0,500,500,"Special Delivery: Guaranteed by 1pm Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_1000,501,1000,1000,"Special Delivery: Guaranteed by 1pm Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_2500,1001,2500,2500,"Special Delivery: Guaranteed by 1pm Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_50,0,50,50,"Special Delivery: Guaranteed by 9am Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_1000,51,1000,1000,"Special Delivery: Guaranteed by 9am Saturday" +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_2500,1001,2500,2500,"Special Delivery: Guaranteed by 9am Saturday" UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_LETTER,0,50,50,"Signed For: First Class Letter" UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_LARGE_LETTER,0,50,50,"Signed For: First Class Large Letter" -UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_SMALL_PARCEL,0,50,50,"Signed For: First Small Parcel" -UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_MEDIUM_PARCEL,0,50,50,"Signed For: First Medium Parcel" +UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_SMALL_PARCEL,0,50,50,"Signed For: First Class Small Parcel" +UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_MEDIUM_PARCEL,0,50,50,"Signed For: First Class Medium Parcel" UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_LETTER,0,50,50,"Signed For: Second Class Class Letter" UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_LARGE_LETTER,0,50,50,"Signed For: Second Class Class Large Letter" UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_SMALL_PARCEL,0,50,50,"Signed For: Second Class Small Parcel" UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_MEDIUM_PARCEL,0,50,50,"Signed For: Second Class Medium Parcel" -UK_STANDARD_FIRST_CLASS_LETTER,0,20,20,"First Class: Letter" -UK_STANDARD_FIRST_CLASS_LARGE_LETTER,0,20,20,"First Class: Large Letter" -UK_STANDARD_FIRST_CLASS_SMALL_PARCEL,0,20,20,"First Class: Small Parcel" -UK_STANDARD_FIRST_CLASS_MEDIUM_PARCEL,0,20,20,"First Class: Medium Parcel" +UK_STANDARD_FIRST_CLASS_LETTER,0,20,20,"Standard First Class Letter" +UK_STANDARD_FIRST_CLASS_LARGE_LETTER,0,20,20,"Standard First Class Large Letter" +UK_STANDARD_FIRST_CLASS_SMALL_PARCEL,0,20,20,"Standard First Class Small Parcel" +UK_STANDARD_FIRST_CLASS_MEDIUM_PARCEL,0,20,20,"Standard First Class Medium Parcel" UK_STANDARD_SECOND_CLASS_LETTER,0,20,20,"Second Class: Letter" UK_STANDARD_SECOND_CLASS_LARGE_LETTER,0,20,20,"Second Class: Large Letter" UK_STANDARD_SECOND_CLASS_SMALL_PARCEL,0,20,20,"Second Class: Small Parcel" diff --git a/data/4_deliveryToPrice.csv b/data/4_deliveryToPrice.csv index 9b8d73f..f5ad987 100644 --- a/data/4_deliveryToPrice.csv +++ b/data/4_deliveryToPrice.csv @@ -1,6 +1,6 @@ WORLD_ZONE_EU_INTERNATIONAL_STANDARD_LETTER,0.001,0.010,1.00,20, -WORLD_ZONE_EU_INTERNATIONAL_STANDARD_LETTER,0.001,0.010,1.00,20, -WORLD_ZONE_EU_INTERNATIONAL_STANDARD_LETTER,0.001,0.010,1.52,20, +WORLD_ZONE_EU_INTERNATIONAL_STANDARD_LETTER,0.011,0.020,1.00,20, +WORLD_ZONE_EU_INTERNATIONAL_STANDARD_LETTER,0.021,0.100,1.52,20, WORLD_ZONE_EU_INTERNATIONAL_STANDARD_LARGE_LETTER,0.001,0.100,2.45,20, WORLD_ZONE_EU_INTERNATIONAL_STANDARD_LARGE_LETTER,0.101,0.250,3.70,20, WORLD_ZONE_EU_INTERNATIONAL_STANDARD_LARGE_LETTER,0.251,0.500,5.15,20, @@ -111,8 +111,8 @@ WORLD_ZONE_EU_INTERNATIONAL_SIGNED_SMALL_PARCEL_EXTRA_INSURANCE,1.251,1.500,17.7 WORLD_ZONE_EU_INTERNATIONAL_SIGNED_SMALL_PARCEL_EXTRA_INSURANCE,1.501,1.750,18.31,250, WORLD_ZONE_EU_INTERNATIONAL_SIGNED_SMALL_PARCEL_EXTRA_INSURANCE,1.751,2.000,19.46,250, WORLD_ZONE_ONE_INTERNATIONAL_STANDARD_LETTER,0.001,0.010,1.00,20, -WORLD_ZONE_ONE_INTERNATIONAL_STANDARD_LETTER,0.001,0.010,1.33,20, -WORLD_ZONE_ONE_INTERNATIONAL_STANDARD_LETTER,0.001,0.010,2.25,20, +WORLD_ZONE_ONE_INTERNATIONAL_STANDARD_LETTER,0.011,0.020,1.33,20, +WORLD_ZONE_ONE_INTERNATIONAL_STANDARD_LETTER,0.021,0.100,2.25,20, WORLD_ZONE_ONE_INTERNATIONAL_STANDARD_LARGE_LETTER,0.001,0.100,3.15,20, WORLD_ZONE_ONE_INTERNATIONAL_STANDARD_LARGE_LETTER,0.101,0.250,4.75,20, WORLD_ZONE_ONE_INTERNATIONAL_STANDARD_LARGE_LETTER,0.251,0.500,7.45,20, @@ -239,8 +239,8 @@ WORLD_ZONE_ONE_INTERNATIONAL_ECONOMY_SMALL_PARCEL,1.251,1.500,10.76,20, WORLD_ZONE_ONE_INTERNATIONAL_ECONOMY_SMALL_PARCEL,1.501,1.750,12.11,20, WORLD_ZONE_ONE_INTERNATIONAL_ECONOMY_SMALL_PARCEL,1.751,2.000,13.26,20, WORLD_ZONE_TWO_INTERNATIONAL_STANDARD_LETTER,0.001,0.010,1.00,20, -WORLD_ZONE_TWO_INTERNATIONAL_STANDARD_LETTER,0.001,0.010,1.33,20, -WORLD_ZONE_TWO_INTERNATIONAL_STANDARD_LETTER,0.001,0.010,2.25,20, +WORLD_ZONE_TWO_INTERNATIONAL_STANDARD_LETTER,0.011,0.020,1.33,20, +WORLD_ZONE_TWO_INTERNATIONAL_STANDARD_LETTER,0.021,0.100,2.25,20, WORLD_ZONE_TWO_INTERNATIONAL_STANDARD_LARGE_LETTER,0.001,0.100,3.30,20, WORLD_ZONE_TWO_INTERNATIONAL_STANDARD_LARGE_LETTER,0.101,0.250,5.05,20, WORLD_ZONE_TWO_INTERNATIONAL_STANDARD_LARGE_LETTER,0.251,0.500,7.90,20, @@ -396,6 +396,36 @@ UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_2500,0.001,0.100,24.06,2500, UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_2500,0.101,0.500,26.46,2500, UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_2500,0.501,1.000,28.20,2500, UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_2500,1.001,2.000,32.64,2500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_500,0.001,0.100,10.74,500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_500,0.101,0.500,11.70,500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_500,0.501,1.000,13.26,500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_500,1.001,2.000,16.20,500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_500,2.001,10.000,34.92,500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_500,10.001,20.000,52.44,500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_1000,0.001,0.100,11.94,1000, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_1000,0.101,0.500,12.90,1000, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_1000,0.501,1.000,14.46,1000, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_1000,1.001,2.000,17.40,1000, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_1000,2.001,10.000,36.12,1000, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_1000,10.001,20.000,53.64,1000, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_2500,0.001,0.100,14.34,2500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_2500,0.101,0.500,15.30,2500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_2500,0.501,1.000,16.86,2500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_2500,1.001,2.000,19.80,2500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_2500,2.001,10.000,38.52,2500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_2500,10.001,20.000,56.04,2500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_50,0.001,0.100,21.36,50, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_50,0.101,0.500,23.76,50, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_50,0.501,1.000,25.50,50, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_50,1.001,2.000,29.94,50, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_1000,0.001,0.100,23.56,1000, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_1000,0.101,0.500,25.96,1000, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_1000,0.501,1.000,27.70,1000, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_1000,1.001,2.000,32.14,1000, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_2500,0.001,0.100,27.06,2500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_2500,0.101,0.500,29.46,2500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_2500,0.501,1.000,31.20,2500, +UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_2500,1.001,2.000,35.64,2500, UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM_SATURDAY_500,0.001,0.100,10.74,500, UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM_SATURDAY_500,0.101,0.500,11.70,500, UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM_SATURDAY_500,0.501,1.000,13.26,500, @@ -435,7 +465,7 @@ UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_SMALL_PARCEL,0.001,1.000,4.40,50, UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_SMALL_PARCEL,1.001,2.000,6.55,50,SMALL UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_MEDIUM_PARCEL,0.001,1.000,6.75,50,MEDIUM UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_MEDIUM_PARCEL,1.001,2.000,10.00,50,MEDIUM -UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_MEDIUM_PARCEL,2.001,5.00016.95,50, +UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_MEDIUM_PARCEL,2.001,5.000,16.95,50, UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_MEDIUM_PARCEL,5.001,10.000,23.00,50, UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_MEDIUM_PARCEL,10.001,20.000,34.50, UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_LETTER,0.001,0.100,1.64,50, @@ -461,7 +491,7 @@ UK_STANDARD_FIRST_CLASS_MEDIUM_PARCEL,0.001,1.000,5.65,20,MEDIUM UK_STANDARD_FIRST_CLASS_MEDIUM_PARCEL,1.001,2.000,8.90,20,MEDIUM UK_STANDARD_FIRST_CLASS_MEDIUM_PARCEL,2.001,5.000,15.85,20, UK_STANDARD_FIRST_CLASS_MEDIUM_PARCEL,5.001,10.000,21.90,20, -UK_STANDARD_FIRST_CLASS_MEDIUM_PARCEL,10.001,20.000,33.40, +UK_STANDARD_FIRST_CLASS_MEDIUM_PARCEL,10.001,20.000,33.40,20, UK_STANDARD_SECOND_CLASS_LETTER,0.001,0.100,0.54,20, UK_STANDARD_SECOND_CLASS_LARGE_LETTER,0.001,0.100,0.74,20, UK_STANDARD_SECOND_CLASS_LARGE_LETTER,0.101,0.250,1.19,20, @@ -543,4 +573,4 @@ PARCELFORCE_WORLDWIDE_EXPRESS_48_SATURDAY,5.001,10.000,25.40,100, PARCELFORCE_WORLDWIDE_EXPRESS_48_SATURDAY,10.001,15.000,32.14,100, PARCELFORCE_WORLDWIDE_EXPRESS_48_SATURDAY,15.001,20.000,37.51,100, PARCELFORCE_WORLDWIDE_EXPRESS_48_SATURDAY,20.001,25.000,38.68,100, -PARCELFORCE_WORLDWIDE_EXPRESS_48_SATURDAY,25.001,30.000,52.78,100, \ No newline at end of file +PARCELFORCE_WORLDWIDE_EXPRESS_48_SATURDAY,25.001,30.000,52.78,100, diff --git a/data/5_cleanNameToMethod.csv b/data/5_cleanNameToMethod.csv index 123aee2..d07d725 100644 --- a/data/5_cleanNameToMethod.csv +++ b/data/5_cleanNameToMethod.csv @@ -12,8 +12,8 @@ "specialdelivery9amsaturday","Special Delivery: Guaranteed by 9am Saturday",UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_2500,1001,2500,2500 "firstclasslettersignedfor","Signed For: First Class Letter",UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_LETTER,0,50,50 "firstclasslargelettersignedfor","Signed For: First Class Large Letter",UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_LARGE_LETTER,0,50,50 -"firstclasssignedforsmall","Signed For: First Small Parcel",UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_SMALL_PARCEL,0,50,50 -"firstclasssignedformedium","Signed For: First Medium Parcel",UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_MEDIUM_PARCEL,0,50,50 +"firstclasssignedforsmall","Signed For: First Class Small Parcel",UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_SMALL_PARCEL,0,50,50 +"firstclasssignedformedium","Signed For: First Class Medium Parcel",UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_MEDIUM_PARCEL,0,50,50 "secondclasslettersignedfor","Signed For: Second Class Class Letter",UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_LETTER,0,50,50 "secondclasslargelettersignedfor","Signed For: Second Class Class Large Letter",UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_LARGE_LETTER,0,50,50 "secondclasssmallparcelsignedfor","Signed For: Second Class Small Parcel",UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_SMALL_PARCEL,0,50,50 @@ -36,8 +36,8 @@ "internationalstandardsmallparcel","International Standard Small Parcel",WORLD_ZONE_ONE_INTERNATIONAL_STANDARD_SMALL_PARCEL,0,20,20 "internationalstandardsmallparcel","International Standard Small Parcel",WORLD_ZONE_TWO_INTERNATIONAL_STANDARD_SMALL_PARCEL,0,20,20 "internationallettertrackedsigned","International Tracked and Signed Letter",WORLD_ZONE_EU_INTERNATIONAL_TRACKED_AND_SIGNED_LETTER,0,50,50 -"internationallettertrackedsigned","International Tracked and Signed Letter",WORLD_ZONE_ONE_INTERNATIONAL_TRACKED_AND_SIGNED_LARGE_LETTER,0,50,50 -"internationallettertrackedsigned","International Tracked and Signed Letter",WORLD_ZONE_TWO_INTERNATIONAL_TRACKED_AND_SIGNED_LARGE_LETTER,0,50,50 +"internationallettertrackedsigned","International Tracked and Signed Letter",WORLD_ZONE_ONE_INTERNATIONAL_TRACKED_AND_SIGNED_LETTER,0,50,50 +"internationallettertrackedsigned","International Tracked and Signed Letter",WORLD_ZONE_TWO_INTERNATIONAL_TRACKED_AND_SIGNED_LETTER,0,50,50 "internationallettertrackedsigned","International Tracked and Signed Letter",WORLD_ZONE_EU_INTERNATIONAL_TRACKED_AND_SIGNED_LETTER_EXTRA_INSURANCE,50.01,250,250 "internationallettertrackedsigned","International Tracked and Signed Letter",WORLD_ZONE_ONE_INTERNATIONAL_TRACKED_AND_SIGNED_LETTER_EXTRA_INSURANCE,50.01,250,250 "internationallettertrackedsigned","International Tracked and Signed Letter",WORLD_ZONE_TWO_INTERNATIONAL_TRACKED_AND_SIGNED_LETTER_EXTRA_INSURANCE,50.01,250,250 @@ -49,7 +49,7 @@ "internationallargelettertrackedandsigned","International Tracked and Signed Large Letter",WORLD_ZONE_TWO_INTERNATIONAL_TRACKED_AND_SIGNED_LARGE_LETTER_EXTRA_INSURANCE,50.01,250,250 "internationalsmallparceltrackedsigned","International Tracked and Signed Small Parcel",WORLD_ZONE_EU_INTERNATIONAL_TRACKED_AND_SIGNED_SMALL_PARCEL,0,50,50 "internationalsmallparceltrackedsigned","International Tracked and Signed Small Parcel",WORLD_ZONE_ONE_INTERNATIONAL_TRACKED_AND_SIGNED_SMALL_PARCEL,0,50,50 -"internationalsmallparceltrackedsigned","International Tracked and Signed Small Parcel",WORLD_ZONE_ONE_INTERNATIONAL_TRACKED_AND_SIGNED_SMALL_PARCEL,0,50,50 +"internationalsmallparceltrackedsigned","International Tracked and Signed Small Parcel",WORLD_ZONE_TWO_INTERNATIONAL_TRACKED_AND_SIGNED_SMALL_PARCEL,0,50,50 "internationalsmallparceltrackedsigned","International Tracked and Signed Small Parcel",WORLD_ZONE_EU_INTERNATIONAL_TRACKED_AND_SIGNED_SMALL_PARCEL_EXTRA_INSURANCE,50.01,250,250 "internationalsmallparceltrackedsigned","International Tracked and Signed Small Parcel",WORLD_ZONE_ONE_INTERNATIONAL_TRACKED_AND_SIGNED_SMALL_PARCEL_EXTRA_INSURANCE,50.01,250,250 "internationalsmallparceltrackedsigned","International Tracked and Signed Small Parcel",WORLD_ZONE_TWO_INTERNATIONAL_TRACKED_AND_SIGNED_SMALL_PARCEL_EXTRA_INSURANCE,50.01,250,250 @@ -61,7 +61,7 @@ "internationaltrackedletter","International Tracked Letter",WORLD_ZONE_TWO_INTERNATIONAL_TRACKED_LETTER_EXTRA_INSURANCE,50.01,250,250 "internationaltrackedlargeletter","International Tracked Large Letter",WORLD_ZONE_EU_INTERNATIONAL_TRACKED_LARGE_LETTER,0,50,50 "internationaltrackedlargeletter","International Tracked Large Letter",WORLD_ZONE_ONE_INTERNATIONAL_TRACKED_LARGE_LETTER,0,50,50 -"internationaltrackedlargeletter","International Tracked Large Letter",WORLD_ZONE_ONE_INTERNATIONAL_TRACKED_LARGE_LETTER,0,50,50 +"internationaltrackedlargeletter","International Tracked Large Letter",WORLD_ZONE_TWO_INTERNATIONAL_TRACKED_LARGE_LETTER,0,50,50 "internationaltrackedlargeletter","International Tracked Large Letter",WORLD_ZONE_EU_INTERNATIONAL_TRACKED_LARGE_LETTER_EXTRA_INSURANCE,50.01,250,250 "internationaltrackedlargeletter","International Tracked Large Letter",WORLD_ZONE_ONE_INTERNATIONAL_TRACKED_LARGE_LETTER_EXTRA_INSURANCE,50.01,250,250 "internationaltrackedlargeletter","International Tracked Large Letter",WORLD_ZONE_TWO_INTERNATIONAL_TRACKED_LARGE_LETTER_EXTRA_INSURANCE,50.01,250,250 @@ -71,9 +71,9 @@ "internationaltrackedsmallparcel","International Tracked Small Parcel",WORLD_ZONE_EU_INTERNATIONAL_TRACKED_SMALL_PARCEL_EXTRA_INSURANCE,50.01,250,250 "internationaltrackedsmallparcel","International Tracked Small Parcel",WORLD_ZONE_ONE_INTERNATIONAL_TRACKED_SMALL_PARCEL_EXTRA_INSURANCE,50.01,250,250 "internationaltrackedsmallparcel","International Tracked Small Parcel",WORLD_ZONE_TWO_INTERNATIONAL_TRACKED_SMALL_PARCEL_EXTRA_INSURANCE,50.01,250,250 -"internationallettersigned","International Signed Letter",WORLD_ZONE_EU_INTERNATIONAL_SIGNED_LETTER,0,50,20 -"internationallettersigned","International Signed Letter",WORLD_ZONE_ONE_INTERNATIONAL_SIGNED_LETTER,0,50,20 -"internationallettersigned","International Signed Letter",WORLD_ZONE_TWO_INTERNATIONAL_SIGNED_LETTER,0,50,20 +"internationallettersigned","International Signed Letter",WORLD_ZONE_EU_INTERNATIONAL_SIGNED_LETTER,0,50,50 +"internationallettersigned","International Signed Letter",WORLD_ZONE_ONE_INTERNATIONAL_SIGNED_LETTER,0,50,50 +"internationallettersigned","International Signed Letter",WORLD_ZONE_TWO_INTERNATIONAL_SIGNED_LETTER,0,50,50 "internationallettersigned","International Signed Letter",WORLD_ZONE_EU_INTERNATIONAL_SIGNED_LETTER_EXTRA_INSURANCE,50.01,250,250 "internationallettersigned","International Signed Letter",WORLD_ZONE_ONE_INTERNATIONAL_SIGNED_LETTER_EXTRA_INSURANCE,50.01,250,250 "internationallettersigned","International Signed Letter",WORLD_ZONE_TWO_INTERNATIONAL_SIGNED_LETTER_EXTRA_INSURANCE,50.01,250,250 diff --git a/data/6_cleanNameMethodGroup.csv b/data/6_cleanNameMethodGroup.csv index 6b57f41..a85763f 100644 --- a/data/6_cleanNameMethodGroup.csv +++ b/data/6_cleanNameMethodGroup.csv @@ -31,8 +31,6 @@ "internationalsignedlargeletter","International Signed Large Letter" "internationalsignedsmallparcel","International Signed Small Parcel" "internationaleconomyletter","International Economy Letter" -"internationaleconomyletter","International Economy Letter" -"internationaleconomylargeletter","International Economy Large Letter" "internationaleconomylargeletter","International Economy Large Letter" "internationaleconomysmallparcel","International Economy Small Parcel" "parcelforceworldwideexpress9","Parcelforce Worldwide: Express 9" diff --git a/src/Data.php b/src/Data.php index 67b7ba9..af52826 100644 --- a/src/Data.php +++ b/src/Data.php @@ -24,19 +24,19 @@ class Data public $mappingCleanNameMethodGroup = array(); // 1st array used, stores the csv of country to zone - private $mappingCountryToZone = array(); + public $mappingCountryToZone = array(); // 2nd array used, stores the csv of zone to method - private $mappingZoneToMethod = array(); + public $mappingZoneToMethod = array(); // 3rd array used, stores the csv of shipping method // to the meta information. This includes the insurance // amount, and the corresponding price levels - private $mappingMethodToMeta = array(); + public $mappingMethodToMeta = array(); // 4th array used, stores the csv of the delivery method // to the weight and price - private $mappingDeliveryToPrice = array(); + public $mappingDeliveryToPrice = array(); // Array to temporarily hold the sorted country code methods private $sortedCountryCodeMethods = array(); diff --git a/tests/RoyalmailTest.php b/tests/RoyalmailTest.php index 9ab12dd..cd919c7 100644 --- a/tests/RoyalmailTest.php +++ b/tests/RoyalmailTest.php @@ -3,7 +3,22 @@ class RoyalmailTest extends \PHPUnit_Framework_TestCase { + const METHOD_NAME_ROW_META_CSV = 0; + const METHOD_NAME_ROW_CLEANNAME_CSV = 2; + const METHOD_NAME_ROW_PRICE_CSV = 0; + const METHOD_CLEAN_NAME_ROW_META_CSV = 4; + const METHOD_CLEAN_NAME_ROW_CLEANNAME_CSV = 1; + const METHOD_CLEAN_NAME_ROW_CLEANNAMEGROUP_CSV = 1; + const METHOD_CLEAN_NAME_GROUP_CLEANNAME_CSV = 0; + const METHOD_CLEAN_NAME_GROUP_CLEANNAMEGROUP_CSV = 0; + const INSURANCE_ROW_META_CSV = 3; + const INSURANCE_ROW_PRICE_CSV = 4; + const INSURANCE_ROW_CLEANNAME_CSV = 5; + + /** @var CalculateMethod $calculateMethodClass */ private $calculateMethodClass; + + /** @var Data $dataClass */ private $dataClass; private $emptyArray; private $testDataClassArray; @@ -13,6 +28,7 @@ class RoyalmailTest extends \PHPUnit_Framework_TestCase */ public function setUp() { + /** @var CalculateMethod */ $this->calculateMethodClass = new CalculateMethod(); $this->dataClass = new Data( $this->calculateMethodClass->_csvCountryCode, @@ -24,72 +40,307 @@ public function setUp() ); $this->emptyArray = array(); - $this->testDataClassArray = Array - ( - 0 => Array - ( - 'shippingMethodName' => 'WORLD_ZONE_EU_INTERNATIONAL_TRACKED_AND_SIGNED_LETTER', - 'minimumWeight' => 0.021, - 'maximumWeight' => 0.100, - 'methodPrice' => 6.52, - 'insuranceValue' => 50, - 'shippingMethodNameClean' => 'Royal Mail International Tracked and Signed Letter' - ), - 1 => Array - ( - 'shippingMethodName' => 'WORLD_ZONE_EU_INTERNATIONAL_TRACKED_AND_SIGNED_LARGE_LETTER', - 'minimumWeight' => 0.001, - 'maximumWeight' => 0.100, - 'methodPrice' => 08.10, - 'insuranceValue' => 50, - 'shippingMethodNameClean' => 'Royal Mail International Tracked and Signed Large Letter' - ), - 2 => Array - ( - 'shippingMethodName' => 'WORLD_ZONE_EU_INTERNATIONAL_SIGNED_LETTER', - 'minimumWeight' => 0.020, - 'maximumWeight' => 0.100, - 'methodPrice' => 6.52, - 'insuranceValue' => 50, - 'shippingMethodNameClean' => 'Royal Mail International Signed' - ), - 3 => Array - ( - 'shippingMethodName' => 'UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM', - 'minimumWeight' => 0.001, - 'maximumWeight' => 0.100, - 'methodPrice' => 6.45, - 'insuranceValue' => 500, - 'shippingMethodNameClean' => 'Royal Mail Special Delivery: Guaranteed by 1pm' - ), - 4 => Array - ( - 'shippingMethodName' => 'UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM', - 'minimumWeight' => 0.001, - 'maximumWeight' => 0.100, - 'methodPrice' => 7.45, - 'insuranceValue' => 1000, - 'shippingMethodNameClean' => 'Royal Mail Special Delivery: Guaranteed by 1pm' - ), - 5 => Array - ( - 'shippingMethodName' => 'UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVER_1PM', - 'minimumWeight' => 0.001, - 'maximumWeight' => 0.100, - 'methodPrice' => 9.45, - 'insuranceValue' => 2500, - 'shippingMethodNameClean' => 'Royal Mail Special Delivery: Guaranteed by 1pm' - ), - 6 => Array - ( - 'shippingMethodName' => 'UK_STANDARD_FIRST_CLASS_LETTER', - 'minimumWeight' => 0.001, - 'maximumWeight' => 0.100, - 'methodPrice' => 0.63, - 'insuranceValue' => 20, - 'shippingMethodNameClean' => 'Royal Mail Standard First Class Letter' - ) - + $this->testDataClassArray = array( + 0 => + array( + 'shippingMethodName' => 'UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_500', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '6.45', + 'insuranceValue' => '500', + 'shippingMethodNameClean' => 'Special Delivery: Guaranteed by 1pm', + 'size' => '', + ), + 1 => + array( + 'shippingMethodName' => 'UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_50', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '18.36', + 'insuranceValue' => '50', + 'shippingMethodNameClean' => 'Special Delivery: Guaranteed by 9am', + 'size' => '', + ), + 2 => + array( + 'shippingMethodName' => 'UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_1PM_SATURDAY_500', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '10.74', + 'insuranceValue' => '500', + 'shippingMethodNameClean' => 'Special Delivery: Guaranteed by 1pm Saturday', + 'size' => '', + ), + 3 => + array( + 'shippingMethodName' => 'UK_GUARANTEED_ROYAL_MAIL_SPECIAL_DELIVERY_9AM_SATURDAY_50', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '21.36', + 'insuranceValue' => '50', + 'shippingMethodNameClean' => 'Special Delivery: Guaranteed by 9am Saturday', + 'size' => '', + ), + 4 => + array( + 'shippingMethodName' => 'UK_STANDARD_FIRST_CLASS_LETTER', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '0.63', + 'insuranceValue' => '20', + 'shippingMethodNameClean' => 'Standard First Class Letter', + 'size' => '', + ), + 5 => + array( + 'shippingMethodName' => 'UK_STANDARD_FIRST_CLASS_LARGE_LETTER', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '0.95', + 'insuranceValue' => '20', + 'shippingMethodNameClean' => 'Standard First Class Large Letter', + 'size' => '', + ), + 6 => + array( + 'shippingMethodName' => 'UK_STANDARD_FIRST_CLASS_SMALL_PARCEL', + 'minimumWeight' => '0.001', + 'maximumWeight' => '1.000', + 'methodPrice' => '3.30', + 'insuranceValue' => '20', + 'shippingMethodNameClean' => 'Standard First Class Small Parcel', + 'size' => 'SMALL', + ), + 7 => + array( + 'shippingMethodName' => 'UK_STANDARD_FIRST_CLASS_MEDIUM_PARCEL', + 'minimumWeight' => '0.001', + 'maximumWeight' => '1.000', + 'methodPrice' => '5.65', + 'insuranceValue' => '20', + 'shippingMethodNameClean' => 'Standard First Class Medium Parcel', + 'size' => 'MEDIUM', + ), + 8 => + array( + 'shippingMethodName' => 'UK_STANDARD_SECOND_CLASS_LETTER', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '0.54', + 'insuranceValue' => '20', + 'shippingMethodNameClean' => 'Second Class: Letter', + 'size' => '', + ), + 9 => + array( + 'shippingMethodName' => 'UK_STANDARD_SECOND_CLASS_LARGE_LETTER', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '0.74', + 'insuranceValue' => '20', + 'shippingMethodNameClean' => 'Second Class: Large Letter', + 'size' => '', + ), + 10 => + array( + 'shippingMethodName' => 'UK_STANDARD_SECOND_CLASS_SMALL_PARCEL', + 'minimumWeight' => '0.001', + 'maximumWeight' => '1.000', + 'methodPrice' => '2.80', + 'insuranceValue' => '20', + 'shippingMethodNameClean' => 'Second Class: Small Parcel', + 'size' => 'SMALL', + ), + 11 => + array( + 'shippingMethodName' => 'UK_STANDARD_SECOND_CLASS_MEDIUM_PARCEL', + 'minimumWeight' => '0.001', + 'maximumWeight' => '1.000', + 'methodPrice' => '4.89', + 'insuranceValue' => '20', + 'shippingMethodNameClean' => 'Second Class: Medium Parcel', + 'size' => 'MEDIUM', + ), + 12 => + array( + 'shippingMethodName' => 'UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_LETTER', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '1.73', + 'insuranceValue' => '50', + 'shippingMethodNameClean' => 'Signed For: First Class Letter', + 'size' => '', + ), + 13 => + array( + 'shippingMethodName' => 'UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_LARGE_LETTER', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '2.05', + 'insuranceValue' => '50', + 'shippingMethodNameClean' => 'Signed For: First Class Large Letter', + 'size' => '', + ), + 14 => + array( + 'shippingMethodName' => 'UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_SMALL_PARCEL', + 'minimumWeight' => '0.001', + 'maximumWeight' => '1.000', + 'methodPrice' => '4.40', + 'insuranceValue' => '50', + 'shippingMethodNameClean' => 'Signed For: First Class Small Parcel', + 'size' => 'SMALL', + ), + 15 => + array( + 'shippingMethodName' => 'UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_FIRST_CLASS_MEDIUM_PARCEL', + 'minimumWeight' => '0.001', + 'maximumWeight' => '1.000', + 'methodPrice' => '6.75', + 'insuranceValue' => '50', + 'shippingMethodNameClean' => 'Signed For: First Class Medium Parcel', + 'size' => 'MEDIUM', + ), + 16 => + array( + 'shippingMethodName' => 'UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_LETTER', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '1.64', + 'insuranceValue' => '50', + 'shippingMethodNameClean' => 'Signed For: Second Class Class Letter', + 'size' => '', + ), + 17 => + array( + 'shippingMethodName' => 'UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_LARGE_LETTER', + 'minimumWeight' => '0.001', + 'maximumWeight' => '0.100', + 'methodPrice' => '1.84', + 'insuranceValue' => '50', + 'shippingMethodNameClean' => 'Signed For: Second Class Class Large Letter', + 'size' => '', + ), + 18 => + array( + 'shippingMethodName' => 'UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_SMALL_PARCEL', + 'minimumWeight' => '0.001', + 'maximumWeight' => '1.000', + 'methodPrice' => '3.90', + 'insuranceValue' => '50', + 'shippingMethodNameClean' => 'Signed For: Second Class Small Parcel', + 'size' => 'SMALL', + ), + 19 => + array( + 'shippingMethodName' => 'UK_CONFIRMED_ROYAL_MAIL_SIGNED_FOR_SECOND_CLASS_MEDIUM_PARCEL', + 'minimumWeight' => '0.001', + 'maximumWeight' => '1.000', + 'methodPrice' => '5.99', + 'insuranceValue' => '50', + 'shippingMethodNameClean' => 'Signed For: Second Class Medium Parcel', + 'size' => 'MEDIUM', + ), + 20 => + array( + 'shippingMethodName' => 'PARCELFORCE_WORLDWIDE_EXPRESS_9', + 'minimumWeight' => '0.001', + 'maximumWeight' => '2.000', + 'methodPrice' => '39.48', + 'insuranceValue' => '200', + 'shippingMethodNameClean' => 'Parcelforce Worldwide: Express 9', + 'size' => '', + ), + 21 => + array( + 'shippingMethodName' => 'PARCELFORCE_WORLDWIDE_EXPRESS_10', + 'minimumWeight' => '0.001', + 'maximumWeight' => '2.000', + 'methodPrice' => '29.46', + 'insuranceValue' => '200', + 'shippingMethodNameClean' => 'Parcelforce Worldwide: Express 10', + 'size' => '', + ), + 22 => + array( + 'shippingMethodName' => 'PARCELFORCE_WORLDWIDE_EXPRESS_AM', + 'minimumWeight' => '0.001', + 'maximumWeight' => '2.000', + 'methodPrice' => '19.49', + 'insuranceValue' => '200', + 'shippingMethodNameClean' => 'Parcelforce Worldwide: Express AM', + 'size' => '', + ), + 23 => + array( + 'shippingMethodName' => 'PARCELFORCE_WORLDWIDE_EXPRESS_24', + 'minimumWeight' => '0.001', + 'maximumWeight' => '2.000', + 'methodPrice' => '16.49', + 'insuranceValue' => '100', + 'shippingMethodNameClean' => 'Parcelforce Worldwide: Express 24', + 'size' => '', + ), + 24 => + array( + 'shippingMethodName' => 'PARCELFORCE_WORLDWIDE_EXPRESS_48', + 'minimumWeight' => '0.001', + 'maximumWeight' => '2.000', + 'methodPrice' => '11.99', + 'insuranceValue' => '100', + 'shippingMethodNameClean' => 'Parcelforce Worldwide: Express 48', + 'size' => '', + ), + 25 => + array( + 'shippingMethodName' => 'PARCELFORCE_WORLDWIDE_EXPRESS_9_SATURDAY', + 'minimumWeight' => '0.001', + 'maximumWeight' => '2.000', + 'methodPrice' => '48.48', + 'insuranceValue' => '200', + 'shippingMethodNameClean' => 'Parcelforce Worldwide: Express 9 Saturday', + 'size' => '', + ), + 26 => + array( + 'shippingMethodName' => 'PARCELFORCE_WORLDWIDE_EXPRESS_10_SATURDAY', + 'minimumWeight' => '0.001', + 'maximumWeight' => '2.000', + 'methodPrice' => '38.48', + 'insuranceValue' => '200', + 'shippingMethodNameClean' => 'Parcelforce Worldwide: Express 10 Saturday', + 'size' => '', + ), + 27 => + array( + 'shippingMethodName' => 'PARCELFORCE_WORLDWIDE_EXPRESS_AM_SATURDAY', + 'minimumWeight' => '0.001', + 'maximumWeight' => '2.000', + 'methodPrice' => '28.49', + 'insuranceValue' => '200', + 'shippingMethodNameClean' => 'Parcelforce Worldwide: Express AM Saturday', + 'size' => '', + ), + 28 => + array( + 'shippingMethodName' => 'PARCELFORCE_WORLDWIDE_EXPRESS_24_SATURDAY', + 'minimumWeight' => '0.001', + 'maximumWeight' => '2.000', + 'methodPrice' => '25.49', + 'insuranceValue' => '100', + 'shippingMethodNameClean' => 'Parcelforce Worldwide: Express 24 Saturday', + 'size' => '', + ), + 29 => + array( + 'shippingMethodName' => 'PARCELFORCE_WORLDWIDE_EXPRESS_48_SATURDAY', + 'minimumWeight' => '0.001', + 'maximumWeight' => '2.000', + 'methodPrice' => '21.99', + 'insuranceValue' => '100', + 'shippingMethodNameClean' => 'Parcelforce Worldwide: Express 48 Saturday', + 'size' => '', + ), ); } @@ -185,4 +436,74 @@ public function testRoyalmailClassNull() $this->assertEquals($this->emptyArray, $this->calculateMethodClass->getMethods(null, null, null)); } + /** + * Test co compare the meta names vs the clean name to check that the correct value + * exists and is being used. + */ + public function testMethodToMetaVsCleanName() + { + foreach ($this->dataClass->mappingMethodToMeta as $array => $data) { + $methodNotExist = false; + foreach ($this->dataClass->mappingCleanNameToMethod as $method => $methodData) { + // Check the the names are equal + if ($data[self::METHOD_NAME_ROW_META_CSV] == $methodData[self::METHOD_NAME_ROW_CLEANNAME_CSV]) { + $methodNotExist = true; + $this->assertEquals($data[self::METHOD_CLEAN_NAME_ROW_META_CSV], + $methodData[self::METHOD_CLEAN_NAME_ROW_CLEANNAME_CSV], + sprintf("Clean names %s and %s were not equal", $data[self::METHOD_CLEAN_NAME_ROW_META_CSV], + $methodData[self::METHOD_CLEAN_NAME_ROW_CLEANNAME_CSV])); + } + + } + $this->assertTrue($methodNotExist, + sprintf("%s was not found in CleanNameToMethod csv$.", $data[self::METHOD_NAME_ROW_META_CSV])); + } + } + + /** + * Test for insurance value checking that the correct insurance value is being + * used in the CSV files + */ + public function testInsuranceValue() + { + foreach ($this->dataClass->mappingMethodToMeta as $array => $data) { + foreach ($this->dataClass->mappingDeliveryToPrice as $method => $methodData) { + if ($data[self::METHOD_NAME_ROW_META_CSV] == $methodData[self::METHOD_NAME_ROW_PRICE_CSV]) { + if ($methodData[self::INSURANCE_ROW_PRICE_CSV] != "") { + $this->assertEquals($data[self::INSURANCE_ROW_META_CSV], + $methodData[self::INSURANCE_ROW_PRICE_CSV]); + print_r($data, $method); + } + } + } + } + + foreach ($this->dataClass->mappingMethodToMeta as $array => $data) { + foreach ($this->dataClass->mappingCleanNameToMethod as $method => $methodData) { + if ($data[self::METHOD_NAME_ROW_META_CSV] == $methodData[self::METHOD_NAME_ROW_CLEANNAME_CSV]) { + if ($methodData[self::INSURANCE_ROW_CLEANNAME_CSV] != "") { + $this->assertEquals($data[self::INSURANCE_ROW_META_CSV], $methodData[self::INSURANCE_ROW_CLEANNAME_CSV]); + print_r($data, $method); + } + } + } + + } + } + + /** + * Test to compare the method clean name vs the method group, ensuring that + * the clean names are correct and exists. + */ + public function testCleanNameVsMethodGroup() + { + foreach ($this->dataClass->mappingCleanNameToMethod as $array => $data) { + foreach ($this->dataClass->mappingCleanNameMethodGroup as $method => $methodData) { + if ($data[self::METHOD_CLEAN_NAME_ROW_CLEANNAME_CSV] == $methodData[self::METHOD_CLEAN_NAME_ROW_CLEANNAMEGROUP_CSV]) { + $this->assertEquals($data[self::METHOD_CLEAN_NAME_GROUP_CLEANNAME_CSV], + $methodData[self::METHOD_CLEAN_NAME_GROUP_CLEANNAMEGROUP_CSV]); + } + } + } + } } \ No newline at end of file