default_generation_definitions = array( 'coupon_class' => '\WC_Coupon', ); } public function create_object( $args ) { if ( is_wp_error( $args ) ) codecept_debug( $args ); $coupon_class = $args['coupon_class' ]; unset( $args['coupon_class'] ); $coupon = new $coupon_class(); $amount = Dummy::instance()->number( 0, 75 ); $coupon->set_props( array_merge( array( 'code' => $amount . 'off', 'amount' => floatval( $amount ), 'date_expires' => null, 'discount_type' => 'percent', 'description' => 'Test coupon', ), $args ) ); // Set meta data. if ( ! empty( $args['meta_data'] ) ) { $coupon->set_meta_data( $args['meta_data'] ); } return $coupon->save(); } public function update_object( $object, $fields ) { if ( ! $object instanceof \WC_Coupon && 0 !== absint( $object ) ) { $object = $this->get_object_by_id( $object ); } foreach( $fields as $field => $field_value ) { if ( ! is_callable( array( $object, "set_{$field}" ) ) ) { throw new \Exception( sprintf( '"%1$s" is not a valid %2$s coupon field.', $field, $object->get_type() ) ); } $object->{"set_{$field}"}( $field_value ); } $object->save(); } public function get_object_by_id( $id ) { return new \WC_Coupon( $id ); } }