DBIx-Class-Schema-Diff

 view release on metacpan or  search on metacpan

t/01_basic.t  view on Meta::CPAN



# add to existing columns to change their attrs:
$s1b->source('Customer')->add_columns( 
  "first_name",
  { data_type => "varchar", is_nullable => 1, size => 45 },
  "last_name",
  { data_type => "varchar", is_nullable => 0, size => 60 }
);

is_deeply(
  NewD( old_schema => $s1, new_schema => $s1b )->diff,
  {
    Country => {
      _event => "changed",
      columns => {
        foo => {
          _event => "added"
        }
      }
    },
    Customer => {
      _event => "changed",
      columns => {
        first_name => {
          _event => "changed",
          diff => {
            is_nullable => 1
          }
        },
        last_name => {
          _event => "changed",
          diff => {
            size => 60
          }
        }
      }
    }
  },
  "Saw on-the-fly changes to 'first_name' and 'last_name' columns"
);



is_deeply(
  NewD( old_schema => $s1, new_schema => $s3 )->diff,
  {
    Address => {
      _event => "changed",
      isa => [
        "+Test::DummyClass",
      ],
      relationships => {
        customers2 => {
          _event => "added"
        },
        staffs => {
          _event => "changed",
          diff => {
            attrs => {
              cascade_delete => 1
            }
          }
        }
      },
      table_name => "sakila.address"
    },
    City => {
      _event => "changed",
      table_name => "city1",
      constraints => {
        primary => {
          _event => "deleted"
        }
      }
    },
    Film => {
      _event => "changed",
      columns => {
        film_id => {
          _event => "changed",
          diff => {
            is_auto_increment => 0
          }
        },
        id => {
          _event => "added"
        },
        rating => {
          _event => "changed",
          diff => {
            extra => {
              list => [
                "G",
                "PG",
                "PG-13",
                "R",
                "NC-17",
                "TV-MA"
              ]
            }
          }
        },
        rental_rate => {
          _event => "changed",
          diff => {
            size => [
              6,
              2
            ]
          }
        }
      },
      constraints => {
        primary => {
          _event => "changed",
          diff => {
            columns => [
              "id"
            ]
          }

t/01_basic.t  view on Meta::CPAN

      _event => "changed",
      columns => {
        last_update => {
          _event => "changed",
          diff => {
            is_nullable => 1
          }
        }
      }
    },
    FooBar => {
      _event => "added"
    },
    Rental => {
      _event => "changed",
      relationships => {
        customer => {
          _event => "deleted"
        }
      },
      constraints => {
        rental_date => {
          _event => "deleted"
        },
        rental_date1 => {
          _event => "added"
        }
      }
    },
    SaleByStore => {
      _event => "deleted"
    },
    Store => {
      _event => "changed",
      constraints => {
        idx_unique_store_manager => {
          _event => "added"
        }
      }
    }
  },
  "Saw expected changes between Sakila and Sakila3"
);

is_deeply(
  NewD( old_schema => $s3, new_schema => $s1 )->diff,
  {
    Address => {
      _event => "changed",
      isa => [
        "-Test::DummyClass"
      ],
      relationships => {
        customers2 => {
          _event => "deleted"
        },
        staffs => {
          _event => "changed",
          diff => {
            attrs => {
              cascade_delete => 0
            }
          }
        }
      },
      table_name => "address"
    },
    City => {
      _event => "changed",
      table_name => "city",
      constraints => {
        primary => {
          _event => "added"
        }
      }
    },
    Film => {
      _event => "changed",
      columns => {
        film_id => {
          _event => "changed",
          diff => {
            is_auto_increment => 1
          }
        },
        id => {
          _event => "deleted"
        },
        rating => {
          _event => "changed",
          diff => {
            extra => {
              list => [
                "G",
                "PG",
                "PG-13",
                "R",
                "NC-17"
              ]
            }
          }
        },
        rental_rate => {
          _event => "changed",
          diff => {
            size => [
              4,
              2
            ]
          }
        }
      },
      constraints => {
        primary => {
          _event => "changed",
          diff => {
            columns => [
              "film_id"
            ]
          }
        }



( run in 0.562 second using v1.01-cache-2.11-cpan-39bf76dae61 )